GeeTest và reCAPTCHA giải cùng một bài toán — chặn bot — nhưng bằng hai cơ chế khác nhau: GeeTest bắt bạn thao tác (trượt, ghép icon), còn reCAPTCHA quan sát bạn từ xa (chấm điểm hành vi ở v3, lưới ảnh ở v2). Team build automation hoặc QA pipeline nhắm vào nhiều thị trường cùng lúc gần như chắc chắn sẽ phải xử lý cả hai trong cùng một dự án. Bài viết so sánh trực tiếp cách phát hiện bot, độ phức tạp khi tích hợp và cách giải từng loại qua CaptchaAI.
GeeTest và reCAPTCHA phát hiện bot khác nhau ra sao?
GeeTest phân tích cách bạn thao tác: tốc độ trượt, đường cong gia tốc, các lần hiệu chỉnh nhỏ. Chuyển động chuột tuyến tính hoàn hảo là dấu hiệu điển hình của bot, và timing quá nhanh hoặc quá đều cũng bị đánh dấu nghi ngờ; ngoài ra GeeTest còn soi môi trường trình duyệt để tìm tín hiệu automation.
reCAPTCHA theo dõi hành vi liên tục theo thời gian (v3 chấm điểm real-time), dùng cookie của Google để đánh giá uy tín người dùng và đối chiếu danh tiếng IP với dữ liệu nội bộ của Google. Riêng v2 bổ sung thêm thử thách trực quan làm lớp xác minh thứ hai.
Bảng so sánh toàn diện
| Tính năng | GeeTest v3 | reCAPTCHA v2 | reCAPTCHA v3 |
|---|---|---|---|
| Loại thử thách | Câu đố slide/icon/ghép từ | Chọn ô trong lưới hình ảnh | Không có (vô hình) |
| Phân tích hành vi | Quỹ đạo chuột, đường cong tốc độ | Chuột/bàn phím, cookie | Giám sát liên tục |
| Tham số cần lấy | gt, challenge, pageurl |
googlekey, pageurl |
googlekey, action, pageurl |
| Định dạng phản hồi | challenge, validate, seccode |
Token đơn | Token đơn + điểm |
| Trọng tâm thị trường | Trung Quốc, châu Á, đang mở rộng toàn cầu | Toàn cầu | Toàn cầu |
| Gói miễn phí | Bị giới hạn | Có | Có |
| Tham số động | Challenge đổi mỗi phiên | sitekey cố định |
sitekey cố định |
| Trích xuất tham số | Trung bình (phải fetch gt + challenge) |
Dễ (sitekey cố định) |
Dễ (sitekey cố định + action) |
| Phương pháp API | method=geetest |
method=userrecaptcha |
method=userrecaptcha + version=v3 |
| Thời gian giải | 15–30 giây | 15–30 giây | 5–10 giây |
| Phân tích phản hồi | Phức tạp (3 giá trị) | Đơn giản (1 token) | Đơn giản (1 token) |
| Tái sử dụng challenge | Không (dùng một lần) | N/A (dựa trên token) | N/A (dựa trên token) |
Giải GeeTest và reCAPTCHA bằng CaptchaAI
GeeTest v3
challenge chỉ dùng một lần, nên fetch tham số mới trước mỗi lần gửi task:
# Must fetch fresh challenge first
params = requests.get("https://example.com/api/captcha").json()
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "geetest",
"gt": params["gt"], "challenge": params["challenge"],
"pageurl": URL, "json": 1
}).json()
# Solution has 3 parts
solution = poll_result(resp["request"])
# solution = {geetest_challenge, geetest_validate, geetest_seccode}
Kết quả có 3 phần (geetest_challenge, geetest_validate, geetest_seccode) — nạp cả ba vào form.
reCAPTCHA v2
sitekey (tham số API là googlekey) cố định qua các lần giải, nên luồng gọi đơn giản hơn:
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": "6Le-wvkSAAAA...", "pageurl": URL, "json": 1
}).json()
# Solution is a single token
token = poll_result(resp["request"])
Kết quả chỉ là một token duy nhất — nạp thẳng vào trường g-recaptcha-response của form.
Những điểm khác biệt cần lưu ý khi tự động hóa
- Tham số mới mỗi lần giải: GeeTest có (challenge dùng một lần); reCAPTCHA không (
sitekeytĩnh) - Quản lý phiên: GeeTest phải giữ phiên xuyên suốt từ lúc lấy tham số đến khi giải; reCAPTCHA đơn giản hơn — token độc lập
- Nạp token vào form: GeeTest gửi 3 trường; reCAPTCHA chỉ chèn 1 trường ẩn
- Hành vi dự phòng: GeeTest thường không có fallback; reCAPTCHA v3 thường rơi về v2
- Xử lý lỗi: GeeTest phải xử lý challenge hết hạn; reCAPTCHA phải xử lý token hết hạn
Ví dụ thực tế: team QA outsourcing xử lý cả hai loại
Team outsourcing tại TP.HCM/Hà Nội build automation cho khách hàng đa thị trường thường gặp reCAPTCHA v3 ở site nội địa và GeeTest ở site dùng SDK GeeTest cho luồng đăng ký — trong cùng một dự án.
Vì hai loại khác nhau hoàn toàn về tham số và phản hồi, cần handler riêng cho từng loại. Điểm thuận lợi: CaptchaAI expose cả hai qua cùng endpoint in.php (chỉ khác method), nên phần gửi task và polling res.php tái sử dụng được gần như nguyên vẹn.
Câu hỏi thường gặp
reCAPTCHA v3 chấm điểm quá thấp thì phải làm gì?
Điểm thấp (thường dưới 0,3) nghĩa là Google đánh giá phiên của bạn giống bot — token vẫn hợp lệ nên không có gì để "sửa" ở phía token. Cần xử lý ở tầng ứng dụng: xem lại hành vi trước request (cookie, fingerprint trình duyệt, tốc độ điền form).
CaptchaAI có hỗ trợ GeeTest v4 không?
Chưa. CaptchaAI hiện hỗ trợ GeeTest v3 (method=geetest) ở trạng thái GA; GeeTest v4 đang trong lộ trình "sắp ra mắt", chưa dùng được trong production.
Tích hợp GeeTest hay reCAPTCHA tốn công hơn?
GeeTest tốn công hơn: phải fetch gt/challenge trước mỗi lần giải rồi ghép 3 giá trị trả về vào form. reCAPTCHA dùng sitekey/googlekey cố định, chỉ trả 1 token.
GeeTest v3 có chế độ ẩn (invisible) như reCAPTCHA v3 không?
Không. GeeTest v3 luôn bắt người dùng thao tác — trượt, nhấp icon hoặc ghép từ. Muốn chạy hoàn toàn ngầm (invisible), reCAPTCHA v3 là lựa chọn duy nhất giữa hai loại này.
Giải GeeTest và reCAPTCHA qua CaptchaAI có chênh giá không?
Không. CaptchaAI tính phí theo thread, không theo loại CAPTCHA — gói BASIC ($15/tháng, 5 thread) giải không giới hạn số lượt, dù là GeeTest hay reCAPTCHA.