Captcha de GeeTest explicado: cómo funciona y cómo resolverlo
GeeTest es un proveedor de captcha cuyos widgets piden al visitante una tarea visual: arrastrar una pieza de puzzle hasta un hueco, pulsar un conjunto de iconos en un orden determinado o seguir un breve movimiento de deslizador. Es habitual en tiendas online, páginas de inicio de sesión y backends de apps en muchas regiones. También es una de las familias de captcha que Scarnox todavía no resuelve. Esta guía explica cómo funciona GeeTest, por qué automatizarlo es más difícil que un widget basado en tokens, qué enfoques se usan en general y el estado actual del soporte de Scarnox.
Qué hace GeeTest en una página
Un captcha de GeeTest suele cargarse en tres pasos:
- La página incluye el script de GeeTest y crea un widget con un ID de captcha. En muchas integraciones ese ID se pasa como un parámetro llamado
gt. - El widget pide al servidor de GeeTest un desafío nuevo. El desafío incluye un valor
challengey las imágenes o posiciones de las piezas necesarias para el puzzle. - Cuando el visitante termina la tarea, el widget envía el resultado al sitio. El backend del sitio verifica entonces ese resultado con el proveedor antes de aceptar el formulario.
El tercer paso es el importante. Un valor con aspecto plausible no basta, porque el servidor comprueba un resultado vinculado a un desafío concreto que caduca. Por eso un valor copiado de otra sesión falla, y por eso reproducir un resultado antiguo no funciona.
Por qué GeeTest es más difícil que un widget de token
Con PopularCaptcha, la página necesita una única cadena de token, y una sola petición devuelve esa cadena. GeeTest difiere en tres aspectos:
- La salida es el resultado de una tarea, no una cadena. El sitio espera varios valores que van juntos, y todos deben proceder del mismo desafío.
- El desafío es visual y posicional. Un solver tiene que encontrar dónde encaja una pieza de puzzle o qué iconos coinciden, y luego producir un movimiento que parezca de una persona.
- Las comprobaciones miran también el comportamiento. Se pueden inspeccionar la velocidad, la trayectoria y los tiempos. Una posición correcta entregada de forma robótica puede seguir siendo rechazada.
Por eso, resolver GeeTest es un trabajo de varios pasos: obtener el desafío, localizar los objetivos en la imagen, generar un movimiento, enviarlo y leer el veredicto. Cada paso puede fallar, y el desafío caduca si esperas demasiado entre pasos.
Enfoques generales
Quienes automatizan páginas de GeeTest suelen usar uno de tres enfoques. Ninguno es un atajo, y cada uno tiene costes:
- Manejar un navegador real. Playwright o Selenium cargan la página y tu script mueve el deslizador. Funciona mejor en un sitio que controles o en un entorno de pruebas que tengas permiso para usar. El navegador es real, pero el movimiento sigue teniendo que parecer natural.
- Coincidencia de imágenes. Tu código descarga el fondo del puzzle, localiza el hueco mediante template matching (por ejemplo con OpenCV) y calcula la distancia de arrastre. Suele ser la parte más fiable de una configuración propia, y se rompe cuando el proveedor cambia la disposición de las imágenes.
- Persona en el bucle o un servicio de resolución. Una persona o un servicio gestionado resuelve el desafío y devuelve el resultado. Scarnox planea ofrecer esta opción para GeeTest, pero todavía no está en vivo.
Sea cual sea tu elección, mantén el alcance honesto: automatiza flujos que controlas, entornos de prueba que tienes permiso para usar o datos públicos que tienes permiso para recopilar.
Cómo encontrar el ID del captcha
No necesitas código para empezar. Abre las DevTools, recarga la página y busca geetest o gt en la pestaña Network. La primera petición que carga el widget suele mostrar el ID del captcha. Un pequeño script puede registrarlo, lo que resulta útil cuando quieres saber que una página ha cambiado su widget:
import re
import requests
html = requests.get("https://example.com/login", timeout=30).text
match = re.search(r"gt['\"]?\s*[:=]\s*['\"]([a-f0-9]{32})['\"]", html)
print("captcha id:", match.group(1) if match else "not found")
El patrón anterior busca un valor hexadecimal de 32 caracteres junto a gt. Los proveedores cambian su marcado, así que tómalo como punto de partida y compara el resultado con la página que estás probando.
Estado del soporte en Scarnox
Sé claro sobre esto cuando planifiques un proyecto:
- En vivo hoy: PopularCaptcha, sin proxy y con tu propio proxy.
- Próximamente: GeeTest, reCAPTCHA v2 y v3, Cloudflare Turnstile, AWS WAF y Arkose. No construyas un flujo de producción que dependa de resolver GeeTest hasta que aparezca como disponible.
Si tu proyecto necesita GeeTest ahora, la vía práctica es construir tú mismo los pasos de navegador e imagen para las páginas que tienes permiso para probar, y dejar tu código listo para cambiar a una API cuando el soporte se publique. Mientras tanto, puedes crear una cuenta y empezar con crédito de prueba gratis, sin tarjeta. Así tendrás un flujo de PopularCaptcha funcionando para probar y un lugar donde conectar GeeTest más adelante. Para las tarifas actuales, consulta los precios actuales.
Usos legítimos
- Probar tu propio flujo de inicio de sesión o de pago, donde un captcha bloquea las pruebas de regresión automatizadas.
- Comprobaciones de accesibilidad que confirman que un visitante que no puede resolver un puzzle visual todavía tiene otra vía para completar un formulario.
- Monitorizar un sitio que tienes permiso para vigilar, por ejemplo comprobar que un widget sigue cargándose después de un despliegue.
No uses la automatización de captchas para crear cuentas falsas, atacar un formulario de inicio de sesión o acaparar stock limitado. Esos usos incumplen las normas de la mayoría de los sitios y no son algo que Scarnox admita.