Câu trả lời ngắn gọn trước: CaptchaAI giải GeeTest v3 với tỷ lệ giải thành công cao. CaptchaAI không giải GeeTest v4. Nếu trang bạn đang kiểm thử dùng v4, bài này giúp bạn nhận diện đúng phiên bản, hiểu v4 đã đổi gì so với v3 và CaptchaAI phù hợp ở đâu.
Nhiều đội QA và thu thập dữ liệu tại Việt Nam gặp GeeTest trên các cổng có nguồn gốc từ nền tảng Trung Quốc hoặc trang thương mại điện tử. Biết chắc đang là v3 hay v4 giúp bạn chọn đúng cách xử lý và tránh gửi nhầm tham số — lỗi phổ biến nhất khi chuyển giữa hai phiên bản.
v3 và v4 khác nhau ở đâu
GeeTest v4 không chỉ là bản làm mới giao diện. Nó thay đổi cách khởi tạo, cách sinh tham số thử thách và cách xác thực kết quả. Bảng dưới đây tóm tắt những khác biệt bạn sẽ chạm tới khi tích hợp.
| Tính năng | GeeTest v3 | GeeTest v4 |
|---|---|---|
| Khởi tạo | gt + challenge từ máy chủ |
chỉ captcha_id |
| Tham số thử thách | Lấy từ lệnh gọi API | Sinh ở phía client |
| Loại thử thách | Trượt, nhấp | Trượt, nhấp, chọn biểu tượng, suy luận không gian |
| Xác thực | Máy chủ trả về challenge |
Dùng lot_number + pass_token |
| Endpoint API | api.geetest.com |
gcaptcha4.geetest.com |
| Điều chỉnh độ khó | Cố định | Chấm điểm rủi ro thích ứng |
Ba điểm dễ vấp nhất khi chuyển từ v3 sang v4:
- v3 lấy
gtvàchallengetừ máy chủ trước khi hiển thị; v4 chỉ cầncaptcha_idvà tự sinh phần còn lại ở phía client. - v4 dùng
lot_number+pass_tokenđể xác thực thay chochallenge— bộ token trả về hoàn toàn khác v3. - v4 chấm điểm rủi ro thích ứng, nên cùng một trang có thể tăng hoặc giảm độ khó tùy hành vi phiên truy cập.
Các loại thử thách trong v4
Trước khi bàn tới tích hợp, cần nắm bốn dạng thử thách mà v4 có thể hiển thị — nhiều hơn và đa dạng hơn v3.
Trượt (slide)
Thử thách kéo mảnh ghép cổ điển: người dùng kéo một mảnh vào đúng vị trí. Đây là dạng quen thuộc kế thừa từ v3.
Nhấp chọn đối tượng
Người dùng nhấp vào các đối tượng cụ thể (ví dụ "nhấp vào tất cả khuôn mặt"), dựa trên nhận dạng biểu tượng.
Suy luận không gian
Dạng mới trong v4 — người dùng sắp xếp các hình theo một mẫu không gian. Phức tạp hơn hẳn v3.
Ghép biểu tượng theo thứ tự
Người dùng ghép các biểu tượng hiển thị theo trình tự, khó tự động hóa thủ công hơn.
Dù trang hiển thị dạng nào trong số này thì đó vẫn là GeeTest v4, và CaptchaAI không giải được. CaptchaAI giải GeeTest v3.
Cách phát hiện GeeTest v4 trên trang
Trước khi gửi task, hãy xác định trang đang dùng v4 hay v3. v4 nhúng script gcaptcha4 (hoặc gt4.js) và dùng captcha_id thay cho cặp gt + challenge. Đoạn Selenium sau trích captcha_id cùng cờ is_v4 từ HTML đã render:
# extract_geetest_v4.py
import re
from selenium import webdriver
def extract_geetest_v4_params(url):
"""Extract GeeTest v4 captcha_id from a page."""
driver = webdriver.Chrome()
driver.get(url)
page_source = driver.page_source
# GeeTest v4 uses captcha_id instead of gt
match = re.search(r'captcha_id["\']?\s*[:=]\s*["\']([a-f0-9]+)', page_source)
captcha_id = match.group(1) if match else None
# Check for v4-specific script
is_v4 = "gcaptcha4" in page_source or "gt4.js" in page_source
driver.quit()
return {
"captcha_id": captcha_id,
"is_v4": is_v4,
"pageurl": url,
}
# Usage
params = extract_geetest_v4_params("https://staging.example.com/qa-login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")
Nếu is_v4 trả về True, trang dùng v4; ngược lại, xử lý theo luồng v3 quen thuộc.
CaptchaAI phù hợp ở đâu
CaptchaAI giải GeeTest v3. CaptchaAI không giải GeeTest v4. Phương thức geetest của CaptchaAI nhận các giá trị của v3 (gt, một challenge mới và pageurl) và trả về challenge, validate và seccode. Phương thức này không có tham số cho v4, vì vậy đừng gửi captcha_id của v4 vào tham số gt. Hãy chạy bước kiểm tra ở trên trước: nếu trang tải gcaptcha4.geetest.com hoặc gt4.js, trang đang dùng v4 và CaptchaAI không giải được. Nếu trang vẫn dùng v3, bài Cách giải quyết GeeTest v3 bằng API hướng dẫn toàn bộ luồng.
Cách xác thực của v4 khác ra sao
Trên trang dùng v3, khi vượt qua thử thách, trang nhận được ba giá trị geetest_challenge, geetest_validate và geetest_seccode, rồi backend của trang kiểm tra chúng với GeeTest. Trên trang dùng v4, captchaObj.getValidate() trả về bốn giá trị thay thế: lot_number, captcha_output, pass_token và gen_time. Backend của trang gửi chúng tới endpoint /validate của v4 trên gcaptcha4.geetest.com, kèm captcha_id của trang và một sign_token được ký bằng khóa riêng (private key) của trang (theo tài liệu GeeTest v4: web API và server API). Code đọc hoặc điền ba trường của v3 không có gì để xử lý trên trang dùng v4.
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
Không tìm thấy gt / challenge trên một trang trước đây vẫn hoạt động |
Trang đã chuyển sang GeeTest v4, vốn không có challenge do máy chủ cấp |
Tìm gcaptcha4.geetest.com hoặc gt4.js trên trang; với GeeTest, CaptchaAI chỉ giải v3 |
ERROR_WRONG_CAPTCHA_ID từ CaptchaAI |
gt hoặc challenge không hợp lệ, chẳng hạn gửi captcha_id của v4 vào tham số gt |
Gửi gt của v3 trên trang và một challenge mới cho mỗi request |
Không tìm thấy captcha_id |
Trang render bằng JavaScript | Dùng Selenium trích xuất từ trang đã render |
Câu hỏi thường gặp
CaptchaAI có giải được GeeTest v4 không?
Không. CaptchaAI giải GeeTest v3 với tỷ lệ giải thành công cao. CaptchaAI không giải GeeTest v4, nên không có tỷ lệ thành công nào của v4 để đưa ra.
Tôi giải GeeTest v3 thế nào?
Dùng luồng bốn bước qua API: trích gt và một challenge mới từ trang, gửi task tới in.php với method=geetest, gt, challenge và pageurl, polling res.php, rồi chèn challenge, validate và seccode nhận được vào form.
Làm sao phân biệt GeeTest v3 và v4 trên một trang?
Tìm gcaptcha4.geetest.com hoặc gt4.js trong nguồn trang thì đó là v4. Nếu thấy api.geetest.com cùng tham số challenge thì đó là v3.
Giải GeeTest v3 với CaptchaAI tính chi phí thế nào?
CaptchaAI tính giá theo thread (luồng giải đồng thời), không tính theo từng lần giải. Gói nhỏ nhất là BASIC ($15/tháng, 5 thread) với số lần giải không giới hạn trong tháng, nên chi phí phụ thuộc vào số task đồng thời chứ không phải tổng số CAPTCHA.
Hướng dẫn liên quan
Giải GeeTest v3 — bắt đầu với CaptchaAI. CaptchaAI không giải GeeTest v4.