Browser Use. agent runner


代理自动化 · 浏览器使用
在浏览器中使用代理解决验证码
将 CapSolver 添加为浏览器使用中的自定义操作。当出现 CAPTCHA 或验证质询时,代理可以将所需的详细信息发送到 CapSolver、接收解决方案并继续授权的浏览器工作流程。专为 QA、RPA 和其他用户授权的浏览器自动化而构建。
概述
CapSolver + 浏览器使用集成有什么作用?
浏览器使用可帮助 AI 代理导航并与网站交互。当出现验证码时,CapSolver 会处理挑战并返回结果,以便代理可以继续其任务。
与浏览器一起使用
自动化浏览器工作流程中出现的广泛使用的验证挑战,需要基于令牌的验证。
令牌返回给代理
CapSolver 返回验证码结果,以便代理应用它并继续。
生产就绪
每个解决都会返回一个任务 ID (taskId)、状态和错误详细信息以供记录和重试。
问题
为什么验证码会停止浏览器使用代理?
浏览器使用代理可以导航、单击和键入,但 CAPTCHA 和验证检查可能会中断多步骤任务。如果没有办法处理它们,代理可能会停下来,重复相同的步骤,或者需要人工帮助。
工作流程中断
验证码可以在浏览器任务中停止代理。
手动回退
当代理被屏蔽时,您团队中的某个人必须介入。
无验证码处理
浏览器使用可以点击并输入,但出现验证码时仍然需要帮助。
一个新的IP是不够的
在某些情况下,更改 IP 可能会有所帮助,但它无法解决页面上已有的验证码问题。
使用案例
何时应将 CapSolver 添加到浏览器使用代理?
公共数据工作流程
当验证码检查中断任务时,支持批准的研究和数据收集。
表单和工作流程测试
在批准的环境中测试注册、登录、结账和表单流程。
内部业务流程
支持跨内部工具和业务系统批准的浏览器任务。
受监管的浏览器代理
当验证码中断授权浏览器任务时,帮助受监督的 AI 代理继续运行。
快速入门
将 CapSolver 注册为自定义操作
下面的示例目前适用于 CapSolver 的公共 REST API。它注册代理可以对任何验证码调用的一项操作,解决该问题,并将令牌返回给代理 - 代理填充挑战字段并提交。
# pip install browser-use capsolver-agent
# export CAPSOLVER_API_KEY=CAP-XXXXXX
# export OPENAI_API_KEY=sk-XXXXXX
import asyncio
import json
import os
from browser_use import ActionResult, Agent, Browser, ChatOpenAI, Tools
from capsolver_core import Capsolver
from capsolver_core.capsolver import SolveOnPageOptions
from _env import load_example_env # demo only: reads repo-root .env
load_example_env()
# 1. Adapt Browser Use's live page to capsolver-core's PageDriver (evaluate + url).
class PageDriver:
def __init__(self, session):
self.session = session
async def url(self) -> str:
return await self.session.get_current_page_url()
async def evaluate(self, script: str, arg=None):
cdp = await self.session.get_or_create_cdp_session()
result = await cdp.cdp_client.send.Runtime.evaluate(
params={
"expression": f"({script})({json.dumps(arg)})",
"returnByValue": True,
"awaitPromise": True,
},
session_id=cdp.session_id,
)
return result.get("result", {}).get("value")
# 2. Register one action: detect + solve + autofill on the page the agent controls.
tools = Tools()
capsolver = Capsolver(api_key=os.environ["CAPSOLVER_API_KEY"])
@tools.action(
description="Solve and autofill every supported captcha (reCaptchaV2 / reCaptchaV3 / "
"cloudflare) on the current page. Never solve a captcha yourself."
)
async def solve_page_captchas(browser_session) -> ActionResult:
results = await capsolver.solve_on_page(
PageDriver(browser_session),
options=SolveOnPageOptions(autofill=True, throw_on_error=False),
)
if not results:
return ActionResult(extracted_content="No supported captcha on this page.")
filled = sum(1 for r in results if r.filled)
if not filled:
return ActionResult(error="; ".join(r.error or "not filled" for r in results))
return ActionResult(
extracted_content=f"Filled {filled}/{len(results)} captcha tokens. Continue the "
"workflow now, e.g. click Submit.",
)
# 3. Hand the action to the agent; the LLM decides when to call it.
model = os.environ.get("OPENAI_MODEL", "gpt-4o")
# OpenAI-compatible gateways (DeepSeek, ...) reject OpenAI's structured-output format.
compat = {} if "openai.com" in os.environ.get("OPENAI_BASE_URL", "openai.com") else {
"dont_force_structured_output": True,
"add_schema_to_system_prompt": True,
}
agent = Agent(
task="Solve the captcha on this page, then click Submit and report the result.",
llm=ChatOpenAI(model=model, **compat),
browser=Browser(headless=False),
tools=tools,
initial_actions=[{"navigate": {"url": "https://www.google.com/recaptcha/api2/demo"}}],
)
# 4. Run.
asyncio.run(agent.run())
一步一步
如何通过4步添加验证码解决
安装并设置您的密钥
安装浏览器使用和 HTTP 客户端,然后导出 CAPSOLVER_API_KEY。永远不要对其进行硬编码。
注册自定义操作
添加一个 @tools.action 来调用 CapSolver 来解析 CAPTCHA 并返回令牌。
将工具传递给代理
将工具注册表提供给代理,以便每当出现验证码时它就可以调用solve_captcha。
运行和恢复
运行代理;失败时,它会返回一个结构化错误,并带有用于记录和重试的任务 ID。
定位
浏览器使用 + CapSolver 与代理轮换
代理帮助浏览器使用代理访问网站。 CapSolver 在支持的验证码出现时对其进行处理,帮助代理继续其任务。
能力
代理/IP轮换
帽解算器
到达目标页面
是的
并排使用
回答屏幕上的验证码
否
并肩工作
解决支持的验证码
否
是的
返回验证码令牌
重试,可能会重新阻止
是的
提供任务详细信息
各不相同
任务 ID、状态和错误
保留您的浏览器设置和代理。添加 CapSolver 以在支持的验证码出现时对其进行处理。
生产
生产浏览器使用代理的最佳实践
在代理运行之前添加 CapSolver
在代理启动其浏览器任务之前使验证码解决可用。
处理成功和失败
让代理在成功结果后继续,并在请求失败时安全停止。
记录每个验证码请求
记录每个请求的任务 ID、CAPTCHA 类型、状态和错误。
设置请求超时时间
在设定的时间后停止等待,这样代理就不会陷入困境。
使用正确的响应字段
reCAPTCHA 和 Cloudflare Turnstile 返回不同字段的结果。
安全地存储您的 API 密钥
将 CAPSOLVER_API_KEY 保存在环境变量或机密管理器中。
常见问题解答
政策
负责任的使用
CapSolver 专为负责任的自动化而设计:授权 QA 测试、RPA 工作流程、可访问性工具、公共数据访问和其他合规任务。用户有责任确保其使用符合所访问网站的适用服务条款和法规。 CapSolver 不支持或纵容未经授权的访问或恶意自动化。

