GeeTest v4 mang đến những thay đổi đáng kể về kiến trúc, loại thử thách và mô hình tích hợp so với v3. Hướng dẫn này giải thích những gì đã thay đổi và cách giải quyết các thách thức v4.
GeeTest v3 so với v4 - Sự khác biệt chính
| 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 | Bắt buộc từ lệnh gọi API | Phía khách hàng được tạo |
| Các loại thử thách | Trượt, bấm | Trượt, nhấp chuột, chọn biểu tượng, lý luận không gian |
| Xác thực | Máy chủ trả về challenge |
Sử dụng lot_number + pass_token |
| điểm cuối API | api.geetest.com |
gcaptcha4.geetest.com |
| Khó khăn trong việc mở rộng quy mô | Đã sửa | Chấm điểm rủi ro thích ứng |
Trích xuất tham số GeeTest v4
# 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']}")
Giải GeeTest v4 bằng CaptchaAI
# solve_geetest_v4.py
import requests
import time
import os
def solve_geetest_v4(captcha_id, pageurl):
"""Submit GeeTest v4 to CaptchaAI and get solution."""
api_key = os.environ["CAPTCHAAI_API_KEY"]
# Submit task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "geetest",
"gt": captcha_id, # captcha_id maps to the gt parameter
"pageurl": pageurl,
"version": "4", # Specify v4 explicitly
"json": 1,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
raise RuntimeError(f"Submit failed: {result.get('request')}")
task_id = result["request"]
# Poll for result
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key,
"action": "get",
"id": task_id,
"json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"] # Contains validation tokens
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("GeeTest v4 solve timeout")
# Usage
solution = solve_geetest_v4(
captcha_id="abc123def456",
pageurl="https://staging.example.com/qa-login",
)
print(f"Solution: {solution}")
Tiêm dung dịch GeeTest v4
# inject_geetest_v4.py
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
def inject_geetest_v4_solution(driver, solution):
"""Inject GeeTest v4 solution tokens into the page."""
# Parse solution — v4 returns different tokens than v3
if isinstance(solution, str):
try:
solution = json.loads(solution)
except json.JSONDecodeError:
pass
# GeeTest v4 validation uses lot_number, pass_token, gen_time, captcha_output
driver.execute_script("""
var solution = arguments[0];
// Set hidden form fields
var fields = {
'lot_number': solution.lot_number,
'pass_token': solution.pass_token,
'gen_time': solution.gen_time,
'captcha_output': solution.captcha_output,
};
for (var name in fields) {
var input = document.querySelector('input[name="' + name + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = name;
document.forms[0].appendChild(input);
}
input.value = fields[name];
}
// Trigger validation callback if available
if (window.captchaObj && typeof window.captchaObj.appendTo === 'function') {
window.captchaObj.appendTo('#captcha-container');
}
""", solution)
Các loại thử thách v4
câu đố trượt
Thử thách trượt để khớp cổ điển. Người dùng kéo một mảnh ghép.
Bấm vào Lựa chọn
Người dùng nhấp vào các đối tượng cụ thể (ví dụ: "nhấp vào tất cả các khuôn mặt"). Sử dụng nhận dạng biểu tượng.
Lý luận không gian
Tính năng mới trong v4 — người dùng sắp xếp các hình dạng theo mô hình không gian. Phức tạp hơn v3.
Biểu tượng phù hợp
Người dùng khớp các biểu tượng được hiển thị theo trình tự. Khó tự động hóa thủ công hơn.
CaptchaAI xử lý tất cả các loại thử thách v4 — API tóm tắt logic dành riêng cho thử thách.
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
Sử dụng giá trị v3 gt thay vì v4 captcha_id |
Kiểm tra trang tập lệnh gcaptcha4 để xác nhận v4 |
| Giải pháp bị từ chối | Thiếu tham số version=4 |
Luôn chỉ định version: "4" cho v4 |
Không tìm thấy captcha_id |
được hiển thị bằng JavaScript | Sử dụng Selenium để trích xuất từ trang được hiển thị |
| Lỗi định dạng mã thông báo | Phân tích chuỗi thay vì JSON | Phân tích giải pháp dưới dạng JSON để nhận mã thông báo riêng lẻ |
Câu hỏi thường gặp
Làm cách nào để biết một trang web sử dụng GeeTest v3 hay v4?
Tìm gcaptcha4.geetest.com hoặc gt4.js trong nguồn trang cho v4. Nếu bạn thấy api.geetest.com và tham số challenge thì đó là v3.
GeeTest v4 có khó giải quyết hơn v3 không?
Đối với người giải quyết tự động, không. CaptchaAI xử lý cả hai phiên bản. Khó khăn thích ứng của V4 ảnh hưởng đến sự cản trở của người dùng cuối nhưng không ảnh hưởng đến việc giải quyết dựa trên API.
Tỷ lệ thành công của GeeTest v4 là bao nhiêu?
CaptchaAI báo cáo tỷ lệ thành công 100% cho các thử thách GeeTest, nhất quán trên v3 và v4.
Hướng dẫn liên quan
Giải quyết các thử thách GeeTest v4 —bắt đầu với CaptchaAI.