ReCAPTCHA V3
Hướng dẫn sử dụng API Giải reCAPTCHA V3 của 2captcha.net
Last updated
Hướng dẫn sử dụng API Giải reCAPTCHA V3 của 2captcha.net
Last updated
ReCAPTCHA còn được gọi là captcha TÔI KHÔNG PHẢI ROBOT, reCAPTCHA là một loại hình ảnh xác thực rất phổ biến trông giống thế này:
reCAPTCHA V3 là loại captcha mới nhất của Google. Nó không có thách thức nên không cần sự tương tác của người dùng. Thay vào đó, nó sử dụng xếp hạng "humanity" - điểm số
reCAPTCHA V3 công nghệ là hoàn toàn tương tự reCAPTCHA V2: khách hàng nhận một token từ reCAPTCHA API, token này sau đó được gửi bên trong một POST request tới website đích và được xác minh qua reCAPTCHA API.
Sự khác biệt là bây giờ reCAPTCHA API trả về xếp hạng của một người dùng khi phát hiện xem anh ta là người thật hay bot. Xếp hạng này được gọi là điểm số và có thể là một số từ 0,1 đến 0,9. Điểm số này được chuyển đến trang web sau đó quyết định phải làm gì với yêu cầu của người dùng.
Ngoài ra, có một tham số mới là action cho phép xử lý các hành động của người dùng trên trang web theo cách khác. Sau khi xác minh token, API reCAPTCHA trả về tên của hành động mà người dùng đã thực hiện
Trước tiên, bạn phải chắc chắn rằng trang web mục tiêu đang thực sự sử dụng reCAPTCHA V3. Dấu hiệu V3 nếu: - tập lệnh api.js đang tải với tham số render=sitekey, ví dụ: https://www.google.com/recaptcha/api.js?render=6LfZil0UAAAAAAdm1Dpzsw9q0F11-bmervx9g5fE - mảng client của đối tượng ___grecaptcha_cfg đang sử dụng chỉ số 100000: ___grecaptcha_cfg.clients[100000] sitekey - tham số này có thể được lấy từ URI của api.js dưới dạng giá trị của tham số render. Nó cũng có thể được tìm thấy bên trong URI của iframe reCAPTCHA, trong javascript của website nơi nó đang gọi hàm grecaptcha.execute hoặc trong đối tượng cấu hình ___grecaptcha_cfg
action - bạn phải tìm trong mã javascript của website ở hàm grecaptcha.execute. Ví dụ: grecaptcha.execute('6LfZil0UAAAAAAdm1Dpzsw9q0F11-bmervx9g5fE', {action: do_something}). Đôi khi rất khó để tìm thấy nó và bạn phải tìm hiểu kỹ tất cả các tệp .js được tải bởi trang web. Bạn cũng có thể thử tìm giá trị của tham số action bên trong đối tượng cấu hình ___grecaptcha_cfg nhưng thông thường giá trị này không được xác định. Trong trường hợp đó, bạn phải gọi grecaptcha.execute và kiểm tra mã javascript. Nếu bạn không thể tìm thấy nó, hãy thử sử dụng giá trị mặc định "validate_captcha" - API của chúng tôi sẽ sử dụng nó nếu bạn không cung cấp tham số action trong request của bạn.
POST : https://2captcha.net/in.php
Các tham số Body:
GET : https://2captcha.net/res.php
Các tham số Body:
Sau khi nhận được token từ API của chúng tôi bạn phải sử dụng nó đúng cách trên trang web mục tiêu. Cách tốt nhất để hiểu điều đó là kiểm tra các yêu cầu được gửi đến trang web khi bạn hành động như một người dùng bình thường. Hầu hết các trình duyệt đều có công cụ developer's console, nơi bạn nên kiểm tra tab Network.
Thông thường token được gửi bằng POST request. Đó có thể là g-recaptcha-response giống như reCAPTCHA V2 hoặc g-recaptcha-response-100000. Nó cũng có thể là tham số khác. Vì vậy, bạn phải kiểm tra các requests và tìm hiểu chính xác token được gửi như thế nào. Sau đó, bạn phải làm request của bạn cho theo như vậy.
Định vị phần tử có id g-recaptcha-response và làm cho nó hiển thị bằng cách xóa tham số display:none.
Xin lưu ý: đôi khi nội dung trên trang được tạo động và bạn sẽ không thấy phần tử này trong mã nguồn html. Trong những trường hợp như vậy, bạn phải khám phá mã javascript mà tạo ra nội dung. Tùy chọn "Inspect" (F12) trong Google Chrome có thể giúp ích trong việc đó.
Như một sự thay thế bạn chỉ có thể sử dụng javascript để đặt giá trị của trường g-recaptcha-response:
Một trường input textarea sẽ xuất hiện. Và bạn chỉ phải paste giá trị token nhận được vào đó và submit form.
Đôi khi không có nút submit và thay vào đó một hàm callback được sử dụng. Hàm này được thực thi khi reCAPTCHA được giải quyết.
Hàm callback thường được xác định trong tham số data-callback
của reCAPTCHA, ví dụ:
Hoặc thỉnh thoảng nó được xác định là tham số callback
của hàm grecaptcha.render
, ví dụ:
Cũng có một cách khác để tìm hàm callback - mở javascript console của trình duyệt của bạn và khám phá đối tượng cấu hình reCAPTCHA:
Chú ý là aa.l có thể thay đổi và có thể có nhiều clients vì vậy bạn cũng phải kiểm tra clients[1], clients[2].
Cuối cùng, tất cả những gì bạn phải làm là gọi hàm đó:
Hoặc thậm chí theo cách này:
Đôi khi nó được yêu cầu cung cấp một đối số và trong hầu hết các trường hợp, bạn nên đặt mã thông báo ở đó. Ví dụ:
reCAPTCHA V3 cũng có một phiên bản invisible. Bạn có thể kiểm tra nó trông như thế nào ở đây: https://www.google.com/recaptcha/api2/demo?invisible=true Nếu là dạng reCAPTCHA invisible thì cần truyền thêm 1 tham số invi = 1 trong request.
Invisible reCAPTCHA nằm ở một thẻ DIV có vị trí -10000px từ Top làm nó ẩn không nhìn thấy.
reCAPTCHA được kích hoạt khi tải trang hoặc khi người dùng thực hiện các hành động như click vào đâu đó hoặc submit một form - tùy thuộc vào trang web. Nếu cookie của người dùng đủ tốt thì anh ta sẽ tự động vượt qua nó và không cần thực hiện thêm hành động nào. Nếu không, người dùng sẽ thấy form reCAPTCHA tiêu chuẩn có thử thách.
Trong hầu hết các trường hợp khi thử thách hoàn thành, một hàm callback được thực thi. Bạn có thể đọc thêm về callback tại đây
Nếu bạn vẫn không chắc chắn - có một số cách để xác định rằng reCAPTCHA là ở chế độ invisible:
Bạn không thấy checkbox "I'm not a robot" trên trang nhưng nhận được thử thách recaptcha khi thực hiện một số hành động nào đó
iframe link của reCAPTCHA chứa tham số size=invisible
Đối tượng cấu hình của reCAPTCHA chứa tham số size mà được set là invisible, ví dụ ___grecaptcha_cfg.clients[0].aa.l.size
= invisible
Làm cách nào vượt invisible reCAPTCHA trong trình duyệt?
Phương thức 1: sử dụng javascript:
Thay đổi giá trị của phần tử g-recaptcha-response là token bạn nhận được từ request yêu cầu giải captcha:
Thực hiện action mà cần được thực hiện trên trang sau khi giải quyết reCAPTCHA. Thông thường, có một form cần được submit và bạn cần xác định form theo id hoặc name hoặc bất kỳ thuộc tính nào khác rồi submit form. Dưới đây là một vài ví dụ:
Hoặc đôi khi có một hàm callback được thực thi khi reCAPTCHA được giải quyết.
Hàm callback thường được định nghĩa trong tham số data-callback
của reCAPTCHA, ví dụ:
Hoặc thỉnh thoảng nó được định nghĩa như tham số callback
của hàm grecaptcha.render
, ví dụ:
Và tất cả những gì bạn phải làm là gọi hàm đó:
Thì đấy! Bạn đã làm điều đó chỉ với 2 chuỗi code.
Phương thức 2: thay đổi HTML:
Cut cái div chứa reCAPTCHA từ body trang.
Cut toàn bộ khối:
Đặt những dòng code dưới đây thay cho khối bạn vừa cắt
Chỗ %g-recaptcha-response% - là token nhận được khi giải reCAPTCHA.
Bạn sẽ nhìn thấy nút “Submit query”. Nhấn nút để submit form có g-recaptcha-response và tất cả dữ liệu form khác tới website.
Xin chúc mừng, bạn đã vượt qua recaptcha
Tên trường dữ liệu
Kiểu dữ liệu
Bắt buộc
Mô tả
key
String
x
Key duy nhất để xác định đối tác API
id
String
x
Task id trả về ở bước 1
json
Integer
0: server sẽ trả về dạng text (mặc định) 1: server sẽ trả về dạng JSON
Tên trường dữ liệu
Kiểu dữ liệu
Bắt buộc
Mô tả
key
String
x
Key duy nhất để xác định đối tác API
method
String
x
Giá trị: userrecaptcha
version
String
x
Giá trị: v3
googlekey
String
x
sitekey của reCaptcha V3
pageurl
String
x
url của webpage hiển thị recaptcha v3 mà bạn muốn giải Ví dụ: https://testrecaptcha.github.io
enterprise
Integer
action
String
giá trị của tham số action của reCaptcha v3 mà bạn tìm thấy trên pageurl Giá trị mặc định: validate_captcha
reCAPTCHA V3 Enterprise 1: Có 0: Không Giá trị mặc định: 0 Nếu trong source code bạn thấy [../enterprise.js ] chứ ko phải [ .../api.js ] thì cần truyền enterprise=1