CaptchaNo
[ AGENTES ]

Resolución de captchas para
agentes de Browser Use

Un agente que se encuentra con un desafío no tiene nada en su conjunto de herramientas que pueda responderlo, así que se atasca o alucina para sortearlo. Dale un solucionador como herramienta y el bloqueo se convierte en una llamada más.

python · browser use
import time
import requests

CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}

def solve(task: dict) -> dict:
    """Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
    r = requests.post(
        "https://api.captchano.com/v1/solve",
        params={"wait": 60},
        json=task,
        headers=HEADERS,
        timeout=75,
    )
    data = r.json()
    # A solve can outlast the 60 s wait: poll the task until it finishes.
    while data.get("status") in ("queued", "solving"):
        time.sleep(5)
        data = requests.get(
            f"https://api.captchano.com/v1/task/{data['id']}",
            headers=HEADERS,
            timeout=30,
        ).json()
    if data.get("status") != "ready":
        raise RuntimeError(data.get("error") or data)
    return data["solution"]

from browser_use import Agent, Tools, ActionResult

tools = Tools()

@tools.action("Solve a captcha that is blocking the current page")
def solve_captcha(kind: str, sitekey: str, url: str) -> ActionResult:
    solution = solve({"type": kind, "sitekey": sitekey, "url": url})
    return ActionResult(extracted_content=solution["token"])

agent = Agent(task="...", llm=llm, tools=tools)

Por qué los agentes necesitan esto en concreto

Un scraper que se encuentra con un desafío falla de forma visible y lo arreglas. Un agente falla en silencio: razona sobre la página bloqueada, inventa un siguiente paso verosímil e informa de un progreso que nunca hizo. El fallo es peor porque es silencioso. Una herramienta de resolución tipada convierte un callejón sin salida ambiguo en un resultado determinista sobre el que el agente puede ramificar.

Qué devuelve la herramienta

  • Un token o una cookie, según el tipo de desafío. Los sistemas que evalúan la sesión devuelven una cookie junto con el conjunto de encabezados usado para obtenerla.
  • El user agent usado, para que el agente pueda reutilizarlo al enviar.
  • El costo de la resolución, para que un agente que opera con un presupuesto pueda tenerlo en cuenta en lugar de gastar a ciegas.

Mantener el bucle acotado

Dale al agente un presupuesto de resoluciones por ejecución. Cada respuesta indica su costo, así que un supervisor puede cortar el bucle cuando el gasto supera un umbral en lugar de descubrirlo en la factura. A $0.00598 por resolución, una ejecución típica de un agente cuesta unos pocos centavos o menos, pero un bucle de reintentos sin límite sigue siendo un bucle de reintentos sin límite.

Mantén la llamada a la herramienta bloqueante

Los ejemplos llaman a ?wait=60, así que la herramienta devuelve un token terminado en un solo paso. Eso importa más en los agentes que en los scripts: una herramienta que devuelve "todavía resolviendo" obliga al modelo a razonar sobre el sondeo, algo que hace mal. Si necesitas un límite mayor, sube wait hasta 120 segundos. Las estructuras de solicitud de cada tipo de desafío están en la referencia de la API.

[ CÓMO ENCAJA ]

Cómo encaja la resolución en Browser Use

Browser Use te permite registrar acciones personalizadas. Una acción de resolución lee la sitekey de la página actual, obtiene un token y lo inyecta, para que el agente pueda continuar en el mismo navegador.

  1. 01
    Registra una acción

    Añade una acción de resolución a las herramientas del agente con una descripción clara.

  2. 02
    Lee la página actual

    La acción lee la sitekey y la URL de la sesión de navegador que ya tiene.

  3. 03
    Resuelve e inyecta

    Llama a la API y luego inyecta el token en la misma página.

  4. 04
    Informa del resultado

    Devuelve un resultado breve para que el agente sepa que puede continuar.

Cómo introducir el token en la página

La acción ejecuta JavaScript en la propia página del agente para rellenar el campo y disparar el callback.

[ ERRORES HABITUALES ]

Dónde suelen fallar las integraciones

Proxy distinto

Envía el proxy que usa el navegador del agente para que el token y la página compartan IP.

El agente hace clic en la casilla

Indica al agente en la descripción de la acción que no haga clic en el widget por su cuenta; la acción se encarga de ello.

[ PREGUNTAS FRECUENTES ]

Preguntas frecuentes sobre captchas en Browser Use

¿Browser Use resuelve captchas por sí solo?

Puede hacer clic en una casilla, pero no puede responder desafíos de imágenes, y a los navegadores automatizados se les muestran a menudo. Una acción de resolución personalizada hace que el resultado sea determinista.

¿Funciona con Browser Use cloud?

La acción solo necesita HTTPS saliente y poder ejecutar JavaScript en la página, así que funciona dondequiera que se ejecute tu agente.

¿Y Turnstile?

La misma acción, con otro type. Lee la sitekey de Turnstile y envía type turnstile.

¿Cómo evito que el agente entre en bucle?

Cuenta las resoluciones por tarea y detén al agente al superar un límite. Cada resultado incluye su costo si prefieres un presupuesto de gasto.

[ LEE A CONTINUACIÓN ]

Guías útiles

¿Listo para construir?

Empieza con una prueba gratuita de 3 días y luego paga por cada resolución exitosa a medida que crece tu tráfico. No necesitas tarjeta para la prueba.

Ver nuestros planes
¿Eres un agente de IA? Consulta las opciones de configuración →