hệ thống đang chạy bị dính lỗi như thớt, tìm ra được nguyên nhân rồi, nhưng mà không fix đc, trên cơ bản dùng selenium không bị cấm, nhưng bị google đưa vào dạng gì đó không biết ( tạm gọi là dạng không tin tưởng) vì vậy google nó detect đc bạn đang dùng selenium và cho vô dạng nghi ngờ rồi từ đó tùy theo ID gmail mà mình dùng cái bị chặn cái không bị chặn. Bạn hãy dùng trình duyệt bình thường request url này: https : //intoli.com/blog/making-chrome-headless-undetectable/chrome-headless-test.html thì sẻ cho bạn thông số là: WebGL Renderer ANGLE (AMD Radeon (TM) R9 380 Series Direct3D11 vs_5_0 ps_5_0) đó chính là Vga máy tính của mình Còn nếu dùng selenium request nó sẻ trả về là: WebGL Renderer: Google SwiftShader Vậy trên cơ bản fake dc WebGL Renderer thì xử đc, nhưng WebGL Renderer cũng chính là cái quan trọng để check vân tay browers Ai xử đc vụ này cho xin ít gạch nhé
Cái nầy thì có 2 hướng fix. nó query bằng js để trả về 1. là thím viết 1 cái plugin để edit lại thông số trình duyệt trước khi load cái file js của google xong sửa lại cấu hình 2. là thím cho nó qua 1 cái proxy xong edit lại cái respond trả về cho google.
Khi mình test selemium có một số trang nó đặt sự kiện window.open mở một đống tab các trang web.Bạn cách nào để chặn nó không
bị giới hạn về trình độ code nên búi, cũng thử nhiều cái mà chịu không fake được. diễn đàn có ai nhận code fake đc thông số WebGL Renderer không vậy? code mình chạy bằng python nhé, nếu không làm đc trên python có thể dùng 1 cách khác kết nối với python để chạy và fake thông tin WebGL Renderer, ai làm được gửi inbox và giá cả nhé.
Do một số trang bẩn bựa load vào trang cái nó tự động bật ra trên 20tab đơ luôn trình duyệt không thể đóng được. Ví dụ mình vô hiệu hóa alert trên trình duyệt vì nó ngăn tắt hoặc chuyển trang với lệnh window.alert = function() {};
Một số trang không thể bypass enginee thì mình dùng Cefsharp, chưa thử Selenium bao giờ. Bạn tham khảo 2 đoạn js bên dưới thử xem sao! Đoạn code của @gman trên stackoverflow : Các đoạn mã bên dưới phải thực thi trước khi trang được tải. Mình có đọc sơ qua docs của Selenium, hình như nó không hỗ trợ tính năng này! 1. Set null getContext : Code: HTMLCanvasElement.prototype.getContext = function() { return null; }; 2. Fake Code: WebGLRenderingContext.prototype.getParameter = function(origFn) { const paramMap = { }; paramMap[0x9245] = "Foo"; // UNMASKED_VENDOR_WEBGL paramMap[0x9246] = "Bar"; // UNMASKED_RENDERER_WEBGL paramMap[0x1F00] = "Nobody"; // VENDOR paramMap[0x1F01] = "Jim"; // RENDERER paramMap[0x1F02] = "Version 1.0"; // VERSION return function(parameter) { return paramMap[parameter] || origFn.call(this, parameter); }; }(WebGLRenderingContext.prototype.getParameter); // --- test const gl = document.createElement('canvas').getContext('webgl'); const ext = gl.getExtension('WEBGL_debug_renderer_info'); show(gl, gl, ['VENDOR', 'RENDERER', 'VERSION', ]); if (ext) { show(gl, ext, ['UNMASKED_VENDOR_WEBGL', 'UNMASKED_RENDERER_WEBGL', ]); } function show(gl, base, params) { for (const param of params) { console.log(param, ':', gl.getParameter(base[param])); } }
Đọc bài viết của bạn xong mình có search thử về thực hiện js code trước khi trang được tải với selenium, thì có bài viết này nói vài giải pháp, trong đó có đoạn: "Since version 1.0.9, selenium-wire has gained the functionality to modify responses to requests. Below is an example of this functionality to inject a script into a page before it reaches a webbrowser." Mình chưa test các giải pháp này, nhưng post lại ở đây cho ai quan tâm có thể thử. https://stackoverflow.com/questions...avascript-in-to-a-page-before-loading-executi
Cái bỏ qua alert đó mình lấy ví dụ để xem có cái gì chặn mở như nó không thôi.Mình fakeview đôi khi gặp mấy thằng nhảy tab như vậy đấy