Comparativas

GeeTest y reCAPTCHA

Si tu automatización o tu QA se topa con uno de estos dos, la diferencia práctica es clara: GeeTest v3 te obliga a leer parámetros dinámicos y a devolver una respuesta de tres partes, mientras que reCAPTCHA v2/v3 gira en torno a un sitekey estático y un único token. Ambos están muy extendidos, pero detectan bots de forma distinta y exigen un flujo de integración diferente. Aquí tienes la comparación campo por campo y cómo resolver cada uno con CaptchaAI.

reCAPTCHA sigue siendo el más común a nivel global, pero GeeTest gana terreno en portales de comercio y banca de América Latina, así que no es raro tener que dar soporte a los dos.


Tabla comparativa: GeeTest v3, reCAPTCHA v2 y v3

Característica GeeTest v3 reCAPTCHA v2 reCAPTCHA v3
Tipo de desafío Rompecabezas de deslizar, icono o palabra Selección en cuadrícula de imágenes Ninguno (invisible)
Análisis de comportamiento Trayectoria del ratón, curvas de velocidad Ratón/teclado, cookies Monitoreo continuo
Parámetros necesarios gt, challenge, pageurl googlekey, pageurl googlekey, action, pageurl
Formato de respuesta challenge, validate, seccode Token único Token único + puntuación
Alcance geográfico China y Asia, creciendo a nivel global Mundial Mundial
Nivel gratuito Limitado
Parámetros dinámicos El challenge cambia por sesión sitekey estático sitekey estático

Cómo detecta bots cada uno

GeeTest apuesta por el comportamiento del gesto en tiempo real; reCAPTCHA, por la reputación acumulada.

GeeTest v3

  • Analiza cómo interactúas: velocidad del deslizamiento, curvas de aceleración y microcorrecciones.
  • Detecta el movimiento del ratón perfectamente lineal, señal típica de un bot.
  • Valida los tiempos: demasiado rápido o demasiado constante equivale a automatización.
  • Inspecciona el entorno del navegador en busca de señales de automatización.

reCAPTCHA

  • Analiza patrones de comportamiento a lo largo del tiempo (puntuación continua en v3).
  • Usa las cookies de Google para calcular la reputación del usuario.
  • Compara la reputación de la IP con la base de datos de Google.
  • En v2 añade un desafío visual como verificación secundaria.

Qué tan complejo es resolver cada uno

Aspecto GeeTest v3 reCAPTCHA v2 reCAPTCHA v3
Extracción de parámetros Media (hay que leer gt + challenge) Fácil (sitekey estático) Fácil (sitekey estático + action)
Método de la API method=geetest method=userrecaptcha method=userrecaptcha + version=v3
Tiempo de resolución 15–30 s 15–30 s 5–10 s
Análisis de la respuesta Complejo (3 valores) Sencillo (1 token) Sencillo (1 token)
Reutilización del desafío No (el challenge es de un solo uso) N/A (basado en token) N/A (basado en token)

reCAPTCHA v3 es el más rápido de resolver porque no hay interacción que reproducir; GeeTest v3 es el que más lógica de integración pide por su respuesta de tres campos.


Resolver GeeTest y reCAPTCHA con CaptchaAI

Ambos son compatibles con CaptchaAI (GeeTest v3, reCAPTCHA v2 y v3 son GA). El patrón es el mismo: envías los datos públicos del widget a in.php y consultas el resultado; solo cambian los parámetros de entrada y la forma de la respuesta.

GeeTest v3

# Must fetch fresh challenge first
params = requests.get("https://example.com/api/captcha").json()

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "geetest",
    "gt": params["gt"], "challenge": params["challenge"],
    "pageurl": URL, "json": 1
}).json()

# Solution has 3 parts
solution = poll_result(resp["request"])
# solution = {geetest_challenge, geetest_validate, geetest_seccode}

reCAPTCHA v2

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAA...", "pageurl": URL, "json": 1
}).json()

# Solution is a single token
token = poll_result(resp["request"])

La diferencia clave: en GeeTest pides un challenge fresco antes de cada resolución porque caduca; en reCAPTCHA el sitekey está incrustado y no cambia.


Diferencias que importan al automatizar

Consideración GeeTest reCAPTCHA
Parámetros nuevos por resolución Sí (el challenge es de un solo uso) No (el sitekey es estático)
Gestión de sesión Hay que mantener la sesión entre leer los parámetros y resolver Más simple: el token es independiente
Inyección del token Enviar 3 campos del formulario Inyectar 1 campo oculto
Comportamiento de respaldo Normalmente no hay respaldo v3 suele caer a v2
Manejo de errores Gestionar desafíos caducados Gestionar la caducidad del token

Un caso concreto: un equipo de QA que valida el checkout de su propia tienda puede toparse con reCAPTCHA v3 en el registro y GeeTest v3 en el login del panel. Con CaptchaAI resuelves ambos desde la misma API key: solo cambias el method y cómo inyectas la respuesta.


Configuración recomendada para tu pipeline

Usa exactamente la misma configuración de navegador en todos tus entornos de QA, staging y CI. Así evitas que un test pase en local y falle en CI sin motivo aparente.

from selenium import webdriver

def make_driver(headless: bool = True) -> webdriver.Chrome:
    options = webdriver.ChromeOptions()
    if headless:
        options.add_argument('--headless=new')
    options.add_argument('--window-size=1280,800')
    options.add_argument('--lang=es-ES')
    return webdriver.Chrome(options=options)

Mantener idénticos el viewport, el idioma y el user-agent por defecto en todos los runners reduce la varianza y facilita comparar resultados entre ejecuciones de tu propio QA.

Cómo encaja CaptchaAI en tu propio pipeline

El patrón de integración con CaptchaAI es siempre el mismo, sin importar el lenguaje o el framework de pruebas que uses:

  1. Tu test detecta el widget de CAPTCHA en la página de tu propia aplicación (formulario de QA, landing de staging, endpoint de preproducción).
  2. Tu test envía a CaptchaAI los datos públicos del widget (sitekey o gt/challenge, URL de la página, tipo de CAPTCHA).
  3. CaptchaAI devuelve una respuesta válida para esa página.
  4. Tu test inyecta esa respuesta en el campo correspondiente y envía el formulario.
  5. Tu backend verifica la respuesta con el proveedor de CAPTCHA, igual que con un usuario real.

Este flujo se aplica únicamente a integraciones que controlas tú. No sirve para sortear protecciones de sitios de terceros.

Métricas y observabilidad

Añade métricas para los pasos de CAPTCHA en tus pipelines de QA y detecta regresiones antes de que lleguen a producción:

  • Tiempo de resolución por intento — desde la solicitud a CaptchaAI hasta la entrega de la respuesta.
  • Tasa de éxito por endpoint propio — cuántas verificaciones del backend pasan respecto al total de intentos.
  • Distribución de errores — agrupados por código (ERROR_*, timeouts internos, fallos de red).
  • Latencia de extremo a extremo — incluyendo el render de la página, la resolución del CAPTCHA y la respuesta de tu backend.

Conserva trazas (logs, capturas, HAR) para reproducir incidentes cuando un test falle de forma intermitente.

Buenas prácticas en tu entorno de QA

  • Prueba siempre sobre tu propia aplicación o sobre entornos explícitamente autorizados.
  • Mantén una API key de CaptchaAI separada para QA, distinta de la de producción, para no mezclar métricas.
  • Define timeouts y reintentos razonables (backoff exponencial) para no acumular trabajos pendientes en CaptchaAI durante caídas.
  • Versiona tus snapshots de configuración (sitekey, action, umbrales) junto al código de los tests.
  • Revisa el changelog de tu proveedor de CAPTCHA para anticipar cambios que afecten a tu integración.

Solución de problemas

Síntoma Acción recomendada
El test no detecta el widget Revisa selectores y tiempos en tu entorno de staging
CaptchaAI devuelve ERROR_NO_SLOT_AVAILABLE Reintenta con backoff en tu pipeline interna
El backend rechaza el token Compara action/sitekey con tu configuración real
El test pasa en local pero falla en CI Iguala viewport, idioma y user-agent en ambos entornos
Tiempos de resolución muy variables Revisa la concurrencia y los threads de tu API key de CaptchaAI

Preguntas frecuentes

¿GeeTest o reCAPTCHA: cuál me voy a encontrar más?

reCAPTCHA es, con diferencia, el más común a nivel mundial. GeeTest domina en China y crece en Asia, América Latina y algunos mercados europeos, sobre todo en banca y comercio.

¿Cuánto cambia el esfuerzo de integración entre uno y otro?

Bastante. reCAPTCHA se apoya en un sitekey estático y devuelve un solo token, así que la integración es directa. GeeTest v3 obliga a leer parámetros dinámicos (gt, challenge) por sesión y a devolver tres campos, por lo que la lógica de tu cliente es algo mayor.

¿Puedo resolver ambos con la misma cuenta de CaptchaAI?

Sí. CaptchaAI factura por thread concurrente con resoluciones ilimitadas por thread, sin recargos por tipo de CAPTCHA. El plan BASIC ($15/mes, 5 threads) cubre GeeTest v3 y reCAPTCHA v2/v3 con la misma API key; solo cambias el method.

¿Y GeeTest v4 ya está disponible?

Todavía no. El soporte de GeeTest v4 figura como próximamente y aún no está activo. GeeTest v3, en cambio, sí es compatible hoy.


Guías relacionadas

Valida tus integraciones de CAPTCHA en entornos propios con CaptchaAI.

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