Integraciones

Selenium Wire + CaptchaAI para diagnóstico en QA propia

Alcance seguro: esta guía aplica únicamente a tus propios entornos de QA, staging y preproducción autorizados. Describe patrones de diagnóstico, pruebas y observabilidad para tu propia integración CAPTCHA, nunca para sitios de terceros ni flujos no autorizados.

¿Tu suite pasa en local pero el paso de CAPTCHA falla en CI y no sabes por dónde empezar? La respuesta casi siempre está en el tráfico HTTP, y Selenium Wire te deja leerlo sin montar un proxy externo ni bucear en logs opacos. A diferencia de Selenium estándar, expone cada request y response como objetos de Python que puedes inspeccionar paso a paso.

Qué te aporta Selenium Wire frente a Selenium estándar

Capacidad Selenium estándar Selenium Wire
Leer peticiones No
Modificar cabeceras Limitado Control total
Exportar tráfico a HAR No
Tráfico como objetos Python No

Para diagnóstico, esa diferencia vale oro: un CAPTCHA que "no aparece" suele ser en realidad una petición AJAX que falló o llegó tarde, invisible desde el DOM pero evidente en la lista de requests.

Instala Selenium Wire y arranca un driver consistente

Instala la librería con pip install selenium-wire y arranca el driver con la configuración estándar. La clave para no perseguir fantasmas en CI es usar el mismo navegador en todos tus runners: mismo viewport, idioma y user-agent en local, staging y CI.

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)

Igualar viewport, idioma y user-agent en todos los entornos reduce la varianza: si un test pasa en local y falla en CI, el navegador queda descartado como causa.

Captura e inspecciona las peticiones

Con el driver de Selenium Wire, cada navegación deja una lista de peticiones que puedes filtrar. Céntrate en dos orígenes y compara sus tiempos para ubicar dónde está el cuello de botella:

  • Tu backend de QA — para ver qué endpoint propio tarda o devuelve un error.
  • Los endpoints de CaptchaAI — para medir el tiempo real de resolución del CAPTCHA.
  • El momento de la consulta — espera tras la navegación; si consultas demasiado pronto, el widget aún no ha cargado.

Cruza la inspección con CaptchaAI

Una vez que ves el widget en el tráfico, el patrón de integración con CaptchaAI es siempre el mismo, sea cual sea el framework de pruebas que uses:

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

Este flujo se aplica solo a integraciones que tú controlas; no sirve para sortear sitios ajenos. Con Selenium Wire delante registras el tiempo de cada paso y sabes si la latencia viene del render, de la resolución o de tu backend.

Métricas y observabilidad que sí sirven

  • Tiempo de resolución por intento — desde que envías la tarea a CaptchaAI hasta que recibes el token.
  • Tasa de éxito por endpoint propio — verificaciones backend que pasan respecto al total de intentos.
  • Distribución de errores — agrupados por código (ERROR_*, timeouts internos, fallos de red).
  • Latencia extremo a extremo — render, resolución del CAPTCHA y respuesta de tu backend, sumados.
  • Trazas conservadas — guarda logs, capturas y HAR para reproducir los fallos intermitentes antes de que lleguen a producción.

Buenas prácticas en tu entorno QA

  • Prueba siempre sobre tu propia aplicación o entornos autorizados.
  • Usa una API key de CaptchaAI separada para QA, distinta de producción, para no mezclar métricas.
  • Define timeouts y reintentos con backoff exponencial para no acumular trabajos durante una caída.
  • 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 te afecten.

Preguntas frecuentes

¿Por qué usar Selenium Wire en lugar de los logs del navegador?

Porque te da los datos ya estructurados. En vez de parsear registros de DevTools, iteras sobre driver.requests en Python y filtras por URL, estado o tipo de contenido, mucho más reproducible en CI que leer logs a mano.

¿Qué tipos de CAPTCHA puedo diagnosticar con este flujo?

  • reCAPTCHA v2 y v3, incluida la variante Enterprise.
  • Cloudflare Turnstile y Cloudflare Challenge.
  • GeeTest v3, imagen/OCR y grid.

CaptchaAI los resuelve en integraciones que tú controlas. CaptchaFox, Friendly Captcha y Lemin están en beta; consulta la documentación oficial para sus parámetros.

¿Cómo controlo los fallos intermitentes en mi propio CI?

  • Aísla el paso de CAPTCHA en una función con reintentos y backoff exponencial.
  • Registra métricas por intento para separar las causas.
  • Distingue un fallo de red de un timeout del proveedor o de un error de configuración.

Con esa separación atacas la causa real en vez de reintentar a ciegas.

Solución de problemas

Síntoma Acción recomendada
El test no detecta el widget Revisa selectores y tiempos en tu entorno staging
CaptchaAI devuelve ERROR_NO_SLOT_AVAILABLE Reintenta con backoff en tu pipeline interna
La validación backend rechaza el token Compara action/sitekey con tu configuración real
El test funciona 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

Guías relacionadas seguras

Valida tus integraciones CAPTCHA en entornos propios con CaptchaAI.

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