Selemium Google: Không thể đăng nhập cho bạn

Discussion in 'Hỏi Đáp Kỹ Thuật' started by wpresources, Dec 23, 2019.

  1. grayhatvn

    grayhatvn Bang Chúng

    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 :D
    Ai xử đc vụ này cho xin ít gạch nhé :)
     
  2. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    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.
     
  3. wpresources

    wpresources Bang Chúng

    Đọc là biết thánh không để ý đáp án trong thread rồi,mà vẫn đau đầu đi fix kkk
     
  4. I Love Php

    I Love Php Bang Chúng

    get cookie rồi set vào là được còn login ko thì ko đc gg có thể phát hiện
     
    wpresources likes this.
  5. wpresources

    wpresources Bang Chúng

    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
     
  6. grayhatvn

    grayhatvn Bang Chú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é.
     
  7. I Love Php

    I Love Php Bang Chúng

    B thử get all tab rồi close tab ko cần thiết theo domain đi
     
  8. wpresources

    wpresources Bang Chúng

    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() {};
     
  9. I Love Php

    I Love Php Bang Chúng

    B switch sang alert rồi close đi
    Còn trang 20 tab thì vào làm gì
    Auto mấy cái chuẩn thôi
     
  10. Dang

    Dang Bang Chúng

    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]));
        }
    }
     
    grayhatvn likes this.
  11. Trần Trọng Bách

    Trần Trọng Bách Sơ Nhập Giang Hồ

    Đọ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
     
    Dang likes this.
  12. wpresources

    wpresources Bang Chúng

    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