Explainers

GeeTest v4 Guía de resolución y cambios de CAPTCHA

GeeTest v4 trae cambios significativos en la arquitectura, los tipos de desafíos y los patrones de integración en comparación con la versión 3. Esta guía explica qué cambió y cómo resolver los desafíos de la versión 4.


GeeTest v3 vs v4: diferencias clave

Característica GeeTest v3 GeeTest v4
Inicialización gt + challenge del servidor Sólo captcha_id
Parámetro de desafío Requerido de la llamada API Del lado del cliente generado
Tipos de desafíos Deslizar, hacer clic Deslizar, hacer clic, seleccionar icono, razonamiento espacial
Validación El servidor devuelve challenge Utiliza lot_number + pass_token
Punto final API api.geetest.com gcaptcha4.geetest.com
Escala de dificultad Fijo Puntuación de riesgo adaptativa

Extracción de 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']}")

Resolviendo GeeTest v4 con 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}")

Inyectar solución 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 desafíos v4

Rompecabezas de diapositivas

El clásico desafío de deslizar para combinar. El usuario arrastra una pieza del rompecabezas.

Haga clic en Selección

El usuario hace clic en objetos específicos (por ejemplo, "haga clic en todas las caras"). Utiliza reconocimiento de iconos.

Razonamiento espacial

Nuevo en v4: el usuario organiza las formas en un patrón espacial. Más complejo que v3.

Coincidencia de iconos

El usuario hace coincidir los iconos que se muestran en una secuencia. Es más difícil de automatizar manualmente.

CaptchaAI maneja todos los tipos de desafíos v4: la API abstrae la lógica específica del desafío.


Solución de problemas

Problema causa Solución
ERROR_WRONG_CAPTCHA_ID Usando el valor v3 gt en lugar de v4 captcha_id Consulte la página del script gcaptcha4 para confirmar la v4
Solution rejected Falta el parámetro version=4 Especifique siempre version: "4" para v4
captcha_id no encontrado renderizado en JavaScript Utilice Selenium para extraer de la página renderizada
Error de formato de token Analizando cadena en lugar de JSON Analizar la solución como JSON para obtener tokens individuales

Preguntas frecuentes

¿Cómo sé si un sitio usa GeeTest v3 o v4?

Busque gcaptcha4.geetest.com o gt4.js en la fuente de la página para v4. Si ve api.geetest.com y un parámetro challenge, es v3.

¿GeeTest v4 es más difícil de resolver que v3?

Para solucionadores automatizados, no. CaptchaAI maneja ambas versiones. La dificultad adaptativa de V4 afecta la fricción del usuario final pero no la resolución basada en API.

¿Cuál es la tasa de éxito de GeeTest v4?

CaptchaAI informa una tasa de éxito del 100 % para los desafíos de GeeTest, consistente en las versiones 3 y 4.


Guías relacionadas


Resolver desafíos GeeTest v4 -empezar con CaptchaAI.

Los comentarios están deshabilitados para este artículo.

Publicaciones relacionadas

Explainers Salida de red móvil en pruebas QA propias (editorial)
Vista editorial sobre el uso de salidas de red móviles autorizadas en pruebas QA propias y su impacto en CAPTCHA.

Vista editorial sobre el uso de salidas de red móviles autorizadas en pruebas QA propias y su impacto en CAPTC...

Apr 19, 2026