Phân Tích Kỹ Thuật

Hướng dẫn giải và thay đổi CAPTCHA của GeeTest v4

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.

Os comentários estão desativados para este artigo.