Tutoriales

Inspección de HTML propio con BeautifulSoup y CaptchaAI en QA

¿Puedes validar tu integración CAPTCHA sin levantar un navegador? Sí. BeautifulSoup lee el HTML que sirve tu entorno de staging, localiza el widget y extrae su sitekey; CaptchaAI devuelve un token válido para esa página; y tu backend lo verifica igual que con un usuario real. Todo el ciclo cabe en un test sin navegador, ideal para pipelines de CI.

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

Localizar el widget en tu HTML de staging

Trabaja sobre el HTML guardado de tu staging con selectores estables. El contenedor de reCAPTCHA v2 suele llevar la clase .g-recaptcha; el de Cloudflare Turnstile, .cf-turnstile, y el atributo [data-sitekey] es el dato que necesitas. Si tu frontend inyecta el widget por JavaScript tras cargar la página, ese sitekey no estará en el HTML servido: ese flujo necesita un navegador real (Selenium o Playwright).

Resolver el CAPTCHA con CaptchaAI

Con el sitekey y la URL de tu staging, envías la tarea al endpoint in.php y consultas res.php mediante sondeo. CaptchaAI devuelve el token al terminar. Este es el punto donde mides el tiempo de resolución: la latencia que tu pipeline añade por cada verificación.

Validar el token en tu backend

Es el paso que muchos tests olvidan. Envía el token a tu endpoint interno de verificación y comprueba que tu backend lo acepta igual que con un usuario real: misma comprobación de action y sitekey. Un token que CaptchaAI resuelve pero que tu backend rechaza casi siempre apunta a una discrepancia de configuración entre entornos, no a un fallo del solver.

El flujo de integración, paso a paso

El patrón es el mismo en cualquier lenguaje o framework de pruebas:

  1. Tu test detecta el widget en tu aplicación (formulario de QA, landing de staging, endpoint de preproducción).
  2. Envía a CaptchaAI los datos públicos del widget (sitekey, URL, 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.

Se aplica solo a integraciones que tú controlas, no a sitios de terceros.

Un ejemplo de QA realista

Imagina una fintech en México que valida el formulario de alta de su app antes de cada release. La landing de preproducción usa Cloudflare Turnstile. En lugar de arrancar un navegador por cada caso, el test descarga el HTML, extrae el sitekey, pide el token a CaptchaAI y lo envía a su verificación interna. El coste es predecible: CaptchaAI se factura por thread en USD (el plan BASIC cuesta $15/mes con 5 threads), estable frente al pago por resolución. Al usar datos de prueba, respeta los términos de servicio y la normativa aplicable (GDPR y LOPDGDD en España, LFPDPPP en México).

Configuración de navegador coherente en tu pipeline

Cuando tu suite necesita un navegador para flujos con JavaScript, usa la misma configuración en local, en CI y en staging. Una diferencia de viewport, idioma o user-agent es la causa habitual de un test que pasa en local y falla 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)

Fijar viewport, idioma y user-agent idénticos en todos los runners reduce la varianza entre ejecuciones.

Métricas y observabilidad

Instrumenta los pasos de CAPTCHA en tus pipelines de QA para detectar regresiones antes de producción:

  • Tiempo de resolución por intento — de la solicitud a CaptchaAI a la entrega del token.
  • Tasa de éxito por endpoint propio — verificaciones de backend que pasan.
  • Distribución de errores — por código (ERROR_*, timeouts internos, fallos de red).
  • Latencia de extremo a extremo — render, resolución y respuesta de tu backend.

Conserva trazas (logs, capturas, HAR) para reproducir los fallos intermitentes.

Buenas prácticas en tu entorno QA

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

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
Tu backend rechaza el token Compara action y 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 límites de tu API key

Preguntas frecuentes

¿Esta guía aplica a sitios de terceros?

No. Todo el contenido está pensado para tu propia aplicación o entornos explícitamente autorizados. Resolver CAPTCHA en sitios que no controlas puede infringir sus términos de servicio.

¿Qué tipos de CAPTCHA puedo validar con CaptchaAI?

Los principales: reCAPTCHA v2 y v3, Cloudflare Turnstile y Cloudflare Challenge, GeeTest v3, e imagen/OCR, grid y BLS. CaptchaFox, Friendly Captcha y Lemin están en beta. No resuelve hCaptcha ni FunCaptcha (Arkose Labs), y el soporte de GeeTest v4 llegará próximamente.

¿Cómo manejo los errores intermitentes en mi propio CI?

Aísla el paso de CAPTCHA en una función con reintentos y backoff exponencial, y registra métricas por intento para separar fallos de red, timeouts del proveedor y errores de configuración.

Guías relacionadas seguras

Valida tus integraciones CAPTCHA en entornos propios con CaptchaAI.

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