reCaptcha trong selenium

Mn cho e hỏi vì sao khi chạy selenium lúc nhập captcha thì phải vượt khoảng 10 mấy hình thì mới cho vào, trong khi tự đăng nhập bằng tay thì chỉ tích vào ô Im not robot là được. E nghĩ là do nó biết mình xài bot nên mới tạo ra nhiều hình như vậy, có cách nào để xử lý vấn đề này ko ạ?

Để nhận biết user có phải là bot hay không thì có nhiều cách lắm. Trước khi bàn về cách click vào khung reCaptcha mà ít bị bắt giải captcha thì chúng ta cũng nên bàn cách để tránh gặp khung reCaptcha. Để một website dùng reCaptcha detect user có phải là bot hay không thì có hai cách:

  1. Dựa vào độ phân giải màn hình: Màn hình thường sẽ có độ phân giải theo tiêu chuẩn chung, reCaptcha sẽ lấy độ phân giải màn hình rồi check xem nó có trong danh sách độ phân giải tiêu chuẩn không. Nếu không thì khả năng hiện khung reCaptcha sẽ cao hơn, thế nên để trách gặp khung reCaptcha thì nên chỉnh độ phân giải trên Selenium theo cái tiêu chuẩn chung đó hoặc là không chỉnh luôn.

  2. Dựa vào user-agent: Mỗi thư viện web crawler sẽ có user-agent riêng. ReCaptcha sẽ lấy user-agent của trình duyệt, web-crawler đó rồi check xem đó có phải là user-agent của một web crawler không, từ đó suy ra user có phải là bot hay không. Cách giải quyết khá đơn giản, chỉnh lại user-agent là xong. Việc chỉnh user-agent có thể thực hiện chỉ với một hàm duy nhất.


Khi gặp khung reCaptcha, để tránh phải giải captcha thì em cần phải làm code giả lập, bắt trước hành vi của con người khi click vào khung reCaptcha. Cái này thì anh hơi lười nói nên em có thể vào tham khảo đường link sau:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?