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

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

Flujo de trabajo de resolución de CAPTCHA de Gumloop con recuperación HTTP, enrutamiento determinista, controles de reintentos y revisión humana.
Cómo agregar la resolución de CAPTCHA de Gumloop a flujos de trabajo web

Construye la resolución de CAPTCHA de Gumloop con un contrato HTTP verificado, una rama de recuperación controlada, un presupuesto de reintentos, verificaciones del estado del navegador y alternativa humana.

automation
Logo of CapSolver

Aloísio Vítor

21-Aug-2026

Automatización de formularios pausando para un resultado de la API CAPTCHA antes de la presentación
Cómo agregar un solucionador de CAPTCHA a flujos de trabajo de automatización de formularios

Un solucionador de CAPTCHA de automatización de formularios es un componente de recuperación de errores para un flujo de trabajo de formulario permitido, no un atajo alrededor de la autorización. CapSolver puede proporcionar una solución de reCAPTCHA a través de la API de tarea documentada mientras que su aplicación preserva los datos de entrada, el contexto del navegador, el consentimiento y la regla de presentación final. La secuencia más segura es detectar, tomar una instantánea, crear una tarea, consultar con un plazo, aplicar el resultado en la misma sesión y verificar el estado de confirmación propio del formulario. Este artículo

automation
Logo of CapSolver

Aloísio Vítor

13-Aug-2026

Flujo de trabajo de RPA pausando en un punto de control de CAPTCHA y reanudando después de una llamada de retorno de CapSolver limitada.
Cómo manejar CAPTCHA en flujos de trabajo de automatización RPA de manera segura

La automatización de CAPTCHA en RPA es confiable solo cuando el CAPTCHA se convierte en un estado explícito del flujo de trabajo. CapSolver puede proporcionar la capa de manejo de CAPTCHA a través de su extensión de navegador o API documentada, mientras que la plataforma RPA controla el alcance del proceso, credenciales, tiempos de espera y validación empresarial. Esto evita el fallo común donde un robot sigue haciendo clic después de que aparezca la verificación, pierde el estado del formulario o envía dos veces. Un diseño de producción pausa en la detección, espera un resultado limitado, ver

automation
Logo of CapSolver

Aloísio Vítor

12-Aug-2026

Flujo de trabajo de prueba QA automatizado que maneja un punto de control CAPTCHA con CapSolver
Cómo manejar CAPTCHA en pruebas de QA automatizadas

Manejar CAPTCHA en pruebas de QA automatizadas con conjuntos de prueba controlados, integración del navegador de CapSolver, intentos limitados y aserciones confiables.

automation
Logo of CapSolver

Aloísio Vítor

11-Aug-2026