CAPSOLVER
Blog
Descubre cómo gestionar y evadir de manera efectiva los desafíos CAPTCHA en la automatización de navegadores de IA. Este guía proporciona pasos prácticos para soluciones de automatización web robustas y escalables.

Skyvern Integrando CapSolver: Una guía sobre el manejo de CAPTCHA en la automatización de navegadores de inteligencia artificial

Logo of CapSolver

Aloísio Vítor

How to use CapSolver

28-Jul-2026

TL;DR

  • Skyvern es responsable de abrir páginas web, completar formularios y avanzar en flujos de trabajo empresariales, mientras que CapSolver se encarga de devolver el token CAPTCHA.

  • Instala directamente el SDK oficial capsolver y llama a capsolver.solve() para evitar implementar por tu cuenta la lógica de createTask y el sondeo.

  • Una vez que se obtenga el Token, devuélvelo a la página actual del navegador, luego deja que Skyvern envíe el formulario y verifique los resultados.

Introducción

Skyvern es una plataforma de automatización de navegadores de inteligencia artificial construida sobre Playwright, modelos de visión y Grandes Modelos de Lenguaje (LLMs). Skyvern puede comprender texto, formularios y elementos interactivos dentro de una página web, completando tareas como navegación entre páginas, clics en botones, entrada de contenido, carga de archivos, extracción de información y flujos de trabajo de varios pasos basados en instrucciones en lenguaje natural. Este enfoque reduce los costos de mantenimiento de scripts causados por cambios en la estructura de la página, siendo ideal para escenarios como inicios de sesión, envío de formularios, operaciones de oficina trasera y recolección de datos.

Cuando un flujo de automatización encuentra un desafío CAPTCHA, puedes llamar al SDK oficial de Python de CapSolver proporcionando parámetros como la URL de la página actual, la clave del sitio y el tipo de CAPTCHA. Una vez que CapSolver complete la tarea, devuelve un token de verificación correspondiente. El programa luego utiliza Playwright para escribir este token en los campos de respuesta de la página actual, en llamadas a funciones JavaScript o en solicitudes empresariales. Una vez que se apruebe la verificación, Skyvern puede continuar ejecutando la tarea original autorizada por el usuario, como enviar el formulario, ingresar a la siguiente página o verificar los resultados finales.

1. Instalación de dependencias

Skyvern actualmente requiere Python 3.11, 3.12 o 3.13. Instala Skyvern, el SDK de CapSolver y Chromium:

Bash Copy
pip install "skyvern[local]"
pip install --upgrade capsolver
python -m playwright install chromium

2. Código de CapSolver

Python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver

# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV2TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})

print(solution)

Al tener éxito, el resultado devuelto principalmente utiliza:

Python Copy
token = solution["gRecaptchaResponse"]

El papel de los parámetros:

websiteURL y websiteKey deben ser consistentes con la configuración real de la página actual.

3. Ejemplo de integración con Skyvern

A continuación, se muestra un ejemplo mínimo de integración. Skyvern primero abre la página y completa el formulario, luego obtiene el Token a través del SDK oficial y finalmente devuelve el Token a la página para su envío.

Python Copy
import asyncio
import capsolver
from skyvern import Skyvern


TARGET_URL = "https://www.google.com/recaptcha/api2/demo"
WEBSITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"


async def inject_token(page, token: str):
    await page.evaluate(
        """
        (token) => {
            const textarea = document.getElementById('g-recaptcha-response');
            if (textarea) {
                textarea.value = token;
            }
        }
        """,
        token,
    )


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ReCaptchaV2TaskProxyLess",
                "websiteURL": TARGET_URL,
                "websiteKey": WEBSITE_KEY,
            },
        )

        token = solution["gRecaptchaResponse"]
        await inject_token(page, token)

        await page.act("Submit")
        await page.validate("Verification successful... Great!")
    finally:
        await browser.close()

4. Cómo devolver el Token a la página

CapSolver solo se encarga de devolver el Token; no envía automáticamente el formulario empresarial del sitio objetivo. Diferentes sitios manejan los Tokens de diversas formas, con métodos comunes incluyendo:

  1. Escribir en el campo oculto g-recaptcha-response;

  2. Llamar a una función JavaScript configurada en la página;

  3. Enviar el Token como parámetro de una interfaz empresarial.

La función inject_token() en el ejemplo intenta ambos, el campo oculto y una prueba de llamada a la función. En el uso real, este fragmento debe ajustarse según la implementación frontend de su propio sitio web.

5. Problemas comunes

Token devuelto, pero la página sigue fallando

Verifique los siguientes parámetros:

  • ¿Es websiteURL la dirección de la página actual?

  • ¿Es websiteKey del sitio actual?

  • ¿Se refrescó la página después de obtener el Token?

  • ¿Se entregó el Token a la función de devolución de llamada o interfaz empresarial correcta?

6. Uso de la API de CapSolver para resolver ImageToText

Además de reCAPTCHA, Skyvern también puede trabajar con CapSolver para manejar CAPTCHAS estándar de imagen a texto. Tomando como ejemplo la Demo de CAPTCHA de BotDetect: el ID del elemento de imagen CAPTCHA es demoCaptcha_CaptchaImage, el ID de la caja de entrada del resultado es captchaCode, y el ID del botón de validación es validateCaptchaButton.

BotDetect

ImageToTextTask requiere convertir la imagen CAPTCHA a Base64 y enviarla a través del parámetro body. Si la imagen src es una URL de datos, por ejemplo:

Plain Text Copy
data:image/png;base64,iVBORw0KGgoAAA...

Al pasarlo a CapSolver, mantenga solo el contenido Base64 después de la coma, excluyendo el prefijo data:image/...;base64,. A diferencia de las tareas de tipo Token, ImageToTextTask devuelve directamente el resultado de la reconocimiento sin requerir una sondeo adicional de getTaskResult.

A continuación se muestra el ejemplo completo de integración con Skyvern:

Python Copy
import asyncio

import capsolver
from skyvern import Skyvern


TARGET_URL = "https://captcha.com/demos/features/captcha-demo.aspx"


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        await page.locator("#demoCaptcha_CaptchaImage").wait_for()

        # Leer la URL de datos de la imagen CAPTCHA.
        image_src = await page.locator(
            "#demoCaptcha_CaptchaImage"
        ).get_attribute("src")

        if not image_src or "," not in image_src:
            raise RuntimeError("No se encontró una imagen CAPTCHA en Base64 válida")

        # Eliminar el prefijo de URL de datos y mantener solo los datos en Base64.
        base64_image = image_src.split(",", 1)[1]

        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ImageToTextTask",
                "websiteURL": TARGET_URL,
                "module": "common",
                "body": base64_image,
            },
        )

        captcha_text = solution["text"]
        print("Resultado de reconocimiento:", captcha_text)

        await page.locator("#captchaCode").fill(captcha_text)
        await page.locator("#validateCaptchaButton").click()
        await page.wait_for_timeout(5000)
    finally:
        await browser.close()


if __name__ == "__main__":
    asyncio.run(main())

El proceso de ejecución del código se puede resumir como:

Plain Text Copy
Skyvern abre la página CAPTCHA
  -> Localizar #demoCaptcha_CaptchaImage
  -> Extraer y limpiar los datos de imagen en Base64
  -> Llamar a capsolver.solve(ImageToTextTask)
  -> Leer solution["text"]
  -> Rellenar en #captchaCode
  -> Hacer clic en #validateCaptchaButton

Elección del modelo de reconocimiento adecuado

module es un parámetro opcional; se puede usar common por defecto. Si la CAPTCHA solo contiene números, se puede usar number; para algunos estilos especiales, también se puede seleccionar el modelo correspondiente independiente según la documentación de CapSolver para mejorar la precisión del reconocimiento.

filename.png

Por ejemplo, al reconocer solo CAPTCHAS numéricas, se puede cambiar los parámetros de la tarea a:

Python Copy
solution = capsolver.solve({
    "type": "ImageToTextTask",
    "module": "number",
    "images": [base64_image],
})

answers = solution["answers"]

El modelo number admite enviar múltiples imágenes a la vez, y images puede contener hasta 9 cadenas en Base64. Para otros nombres de modelo y tipos de imagen aplicables, consulte la Documentación oficial de ImageToTextTask de CapSolver.

7. Resumen

Elegir la solución técnica adecuada para la automatización de navegadores de inteligencia artificial depende de la complejidad de la tarea, la frecuencia de los cambios en la estructura de la página y el mecanismo de verificación del sitio web objetivo. Herramientas tradicionales como Selenium y Playwright son adecuadas para flujos de automatización con estructuras estables y caminos de operación claros. Skyvern se basa en esto al introducir modelos de visión y LLMs, haciéndolo más adecuado para tareas web donde la estructura de la página cambia con frecuencia, requiere comprensión semántica o involucra operaciones de varios pasos. Al controlar el navegador basado en Playwright, puede completar la navegación entre páginas, rellenar formularios, hacer clic en botones y extraer datos a través de lenguaje natural. Cuando el proceso encuentra un desafío CAPTCHA, los desarrolladores pueden combinar el SDK oficial de CapSolver para obtener un token de verificación y luego llenar el resultado de vuelta en la página actual, permitiendo que Skyvern continúe con operaciones posteriores como el envío del formulario, transiciones de página y verificación de resultados. Al combinar Skyvern y CapSolver, los desarrolladores pueden construir flujos de automatización de navegadores más flexibles, mantenibles y escalables, reduciendo los costos de mantenimiento de selectores tradicionales mientras mejora la eficiencia y estabilidad de tareas web complejas. Definir claramente el alcance de la autorización, proteger las claves de API y verificar y registrar los resultados de la automatización son requisitos previos importantes para la operación estable de proyectos relacionados.

Referencias

Redimir su código de bonificación de CapSolver

¡Aumente su presupuesto de automatización instantáneamente!
Utilice el código de bonificación CAP26 al recargar su cuenta de CapSolver para obtener un 5% adicional de bonificación en cada recarga — sin límites.
Redímalo ahora en su Panel de CapSolver
Código de bonificación

Preguntas frecuentes (FAQ)

P1: ¿Cómo manejar CAPTCHAS dentro de iframes?
R1: Cambie al contexto del iframe primero usando page.frame_locator('iframe_selector') antes de inyectar el token. Asegúrese de que la websiteURL enviada a CapSolver sea la URL de la página principal, no la URL del iframe.

P2: ¿Qué hacer si el sitio web utiliza una función JavaScript personalizada?
R2: Identifique el nombre de la función de devolución de llamada (por ejemplo, onCaptchaResolved) y ejecútela a través de Playwright: await page.evaluate("onCaptchaResolved(token)", token).

P3: ¿Cómo mejorar las tasas de reconocimiento de ImageToText?
R3: Use parámetros module específicos (como number para CAPTCHAS numéricas) y asegúrese de que la imagen en Base64 extraída sea clara y de alta resolución.

P4: ¿Cómo manejar la seguridad de la clave de API?
R4: Nunca codifique en el código su clave de API. Use variables de entorno (por ejemplo, os.getenv("CAPSOLVER_API_KEY")) para cargarla de forma segura.

P5: ¿Debo implementar un mecanismo de reintentos?
R5: Sí, use bibliotecas como tenacity para implementar reintentos con retroalimentación exponencial para capsolver.solve() para manejar problemas temporales de red o servicio.

P6: ¿Qué pasa con la caducidad del token?
R6: Los tokens CAPTCHA caducan rápidamente (por ejemplo, en 2 minutos). Inyecte y envíe el token inmediatamente después de recibirlo de CapSolver.

P7: ¿Puede Skyvern enrutar automáticamente diferentes tipos de CAPTCHA?
R7: Sí, puede usar las capacidades de visión de Skyvern para identificar primero el tipo de CAPTCHA, luego construir dinámicamente el payload adecuado de CapSolver (por ejemplo, cambiar entre ReCaptchaV2TaskProxyLess y ImageToTextTask).

P8: ¿Cómo ayuda la visión de Skyvern de otra manera?
R8: Permite localizar elementos dinámicamente (encontrar CAPTCHAS sin IDs fijos), validar visualmente después del envío (verificar mensajes de éxito) y detectar errores visuales para reintentos más inteligentes.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Una página del navegador contiene un marco de aplicación y un marco anidado de widget CAPTCHA.
¿No se detecta el CAPTCHA en un iframe? Cómo encontrar el marco correcto

Encuentra por qué un CAPTCHA visible se omite dentro de un iframe. Verifica el contexto del documento, la carga del widget, los parámetros del sitio y la transferencia del navegador a tu solucionador.

automation
Logo of CapSolver

Aloísio Vítor

26-Oct-2026

Las pruebas de Robot Framework pasan una página a una palabra clave de detección de CAPTCHA y reciben su tipo y su clave de sitio.
Cómo detectar un CAPTCHA en pruebas de navegador con Robot Framework

Detecta CAPTCHA en Robot Framework con una palabra clave de Python probada y el SDK oficial del solucionador. Inspecciona los parámetros de la página y comprende dónde se detiene la detección.

automation
Logo of CapSolver

Aloísio Vítor

26-Oct-2026

Un plan de aseguramiento de calidad en Node.js separa los casos de prueba clave predecibles de una pequeña verificación en vivo del solucionador de CAPTCHA.
Pruebas de CAPTCHA en Node.js: Claves de prueba y verificaciones del solucionador

Planifica pruebas de CAPTCHA en Node.js con claves de prueba del proveedor, verificaciones controladas del solucionador y aserciones claras. Separa las regresiones del formulario de los fallos en la resolución externa.

automation
Logo of CapSolver

Aloísio Vítor

16-Oct-2026

Flujo de solución de problemas de CAPTCHA de Selenium: verificar la configuración, esperar a que la página se cargue completamente, luego verificar el resultado de la aplicación.
Problemas comunes de CAPTCHA de Selenium y cómo resolverlos

Solucionar los problemas comunes de integración de CAPTCHA en Selenium verificando la configuración de la prueba, las extensiones, las esperas, el contexto de iframe, las respuestas del solucionador y los resultados de la aplicación.

automation
Logo of CapSolver

Aloísio Vítor

22-Sep-2026

SDK Core de Python y API HTTP directa comparados con la aplicación que tiene la operación deseada y la aceptación final
SDK de Python de CapSolver vs API HTTP: ¿Cuál deberías usar?

Elija el SDK Core de Python de CapSolver o la API HTTP directa según el soporte para tareas, el acceso a la página, el manejo de respuestas y las responsabilidades que tu aplicación posee.

automation
Logo of CapSolver

Aloísio Vítor

16-Sep-2026

Flujo de datos de SEO comparando evidencia histórica y actual de SERP para identificar la desviación de la intención de búsqueda confirmada.
Monitoreo de desviación de intención de búsqueda para flujos de trabajo de SEO con IA

Construye un monitoreo de desviación de intención de búsqueda con datos de Google Search Console, observaciones controladas de los resultados de búsqueda (SERP), etiquetas de intención, umbrales de confianza, evidencia y automatización segura.

automation
Logo of CapSolver

Aloísio Vítor

31-Aug-2026