Análises Técnicas

GeeTest v4 Guia de alterações e solução de CAPTCHA

GeeTest v4 traz mudanças significativas na arquitetura, tipos de desafios e padrões de integração em comparação com a v3. Este guia explica o que mudou e como resolver os desafios da v4.


GeeTest v3 vs v4 – Principais diferenças

Recurso GeeTest v3 GeeTest v4
Inicialização gt + challenge do servidor Somente captcha_id
Parâmetro de desafio Obrigatório para chamada de API Gerado do lado do cliente
Tipos de desafio Deslize, clique Deslizar, clicar, selecionar ícone, raciocínio espacial
Validação Servidor retorna challenge Usa lot_number + pass_token
Ponto de extremidade da API api.geetest.com gcaptcha4.geetest.com
Escala de dificuldade Corrigido Pontuação de risco adaptativa

Extraindo Parâmetros 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']}")

Resolvendo GeeTest v4 com 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}")

Injetando solução 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)

Tipos de desafio v4

Quebra-cabeça de slides

O clássico desafio de deslizar para combinar. O usuário arrasta uma peça do quebra-cabeça.

Clique em Seleção

O usuário clica em objetos específicos (por exemplo, “clique em todas as faces”). Usa reconhecimento de ícone.

Raciocínio Espacial

Novidade na v4 — o usuário organiza as formas em um padrão espacial. Mais complexo que v3.

Correspondência de ícones

O usuário corresponde aos ícones mostrados em sequência. Mais difícil de automatizar manualmente.

CaptchaAI lida com todos os tipos de desafio v4 — a API abstrai a lógica específica do desafio.


Solução de problemas

Problema Causa Correção
ERROR_WRONG_CAPTCHA_ID Usando o valor v3 gt em vez de v4 captcha_id Verifique a página do script gcaptcha4 para confirmar v4
Solução rejeitada Parâmetro version=4 ausente Sempre especifique version: "4" para v4
captcha_id não encontrado Renderizado em JavaScript Use Selenium para extrair da página renderizada
Erro no formato do token Analisando string em vez de JSON Analise a solução como JSON para obter tokens individuais

Perguntas frequentes

Como posso saber se um site usa GeeTest v3 ou v4?

Procure gcaptcha4.geetest.com ou gt4.js no código-fonte da página para v4. Se você vir api.geetest.com e um parâmetro challenge, é v3.

GeeTest v4 é mais difícil de resolver do que v3?

Para solucionadores automatizados, não. CaptchaAI lida com ambas as versões. A dificuldade adaptativa da V4 afeta o atrito do usuário final, mas não a solução baseada em API.

Qual é a taxa de sucesso do GeeTest v4?

CaptchaAI relata taxa de sucesso de 100% para desafios GeeTest, consistente em v3 e v4.


Guias Relacionados


Resolva os desafios GeeTest v4 -comece com CaptchaAI.

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