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.
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 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.
- 01Registra una acción
Añade una acción de resolución a las herramientas del agente con una descripción clara.
- 02Lee la página actual
La acción lee la sitekey y la URL de la sesión de navegador que ya tiene.
- 03Resuelve e inyecta
Llama a la API y luego inyecta el token en la misma página.
- 04Informa 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.
Dónde suelen fallar las integraciones
Envía el proxy que usa el navegador del agente para que el token y la página compartan IP.
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 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.
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.