🎉全新面向 AI Agent 的 CapSolver
Selenium CAPTCHA solver landing page hero section with code snippet and CTA buttons
Selenium CAPTCHA solver landing page hero section with code snippet and CTA buttons

代理自动化 · 浏览器使用

在浏览器中使用代理解决验证码

将 CapSolver 添加为浏览器使用中的自定义操作。当出现 CAPTCHA 或验证质询时,代理可以将所需的详细信息发送到 CapSolver、接收解决方案并继续授权的浏览器工作流程。专为 QA、RPA 和其他用户授权的浏览器自动化而构建。

Browser Use. agent runner

agent → browser.navigate("signup")
agent → form.fill(profile)
CAPTCHA detected
tool_call: solve_recaptcha()span: tools.solve_recaptcha · sitekey + page_url
token returned → agent.resume()
final_output: signup complete
CapSolver function

Solving captcha...

概述

CapSolver + 浏览器使用集成有什么作用?

浏览器使用可帮助 AI 代理导航并与网站交互。当出现验证码时,CapSolver 会处理挑战并返回结果,以便代理可以继续其任务。

与浏览器一起使用

自动化浏览器工作流程中出现的广泛使用的验证挑战,需要基于令牌的验证。

令牌返回给代理

CapSolver 返回验证码结果,以便代理应用它并继续。

生产就绪

每个解决都会返回一个任务 ID (taskId)、状态和错误详细信息以供记录和重试。

问题

为什么验证码会停止浏览器使用代理?

浏览器使用代理可以导航、单击和键入,但 CAPTCHA 和验证检查可能会中断多步骤任务。如果没有办法处理它们,代理可能会停下来,重复相同的步骤,或者需要人工帮助。

工作流程中断

验证码可以在浏览器任务中停止代理。

手动回退

当代理被屏蔽时,您团队中的某个人必须介入。

无验证码处理

浏览器使用可以点击并输入,但出现验证码时仍然需要帮助。

一个新的IP是不够的

在某些情况下,更改 IP 可能会有所帮助,但它无法解决页面上已有的验证码问题。

使用案例

何时应将 CapSolver 添加到浏览器使用代理?

公共数据工作流程

当验证码检查中断任务时,支持批准的研究和数据收集。

表单和工作流程测试

在批准的环境中测试注册、登录、结账和表单流程。

内部业务流程

支持跨内部工具和业务系统批准的浏览器任务。

受监管的浏览器代理

当验证码中断授权浏览器任务时,帮助受监督的 AI 代理继续运行。

快速入门

将 CapSolver 注册为自定义操作

下面的示例目前适用于 CapSolver 的公共 REST API。它注册代理可以对任何验证码调用的一项操作,解决该问题,并将令牌返回给代理 - 代理填充挑战字段并提交。

browser_use_agent.py
# 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步添加验证码解决

01

安装并设置您的密钥

02

注册自定义操作

03

将工具传递给代理

04

运行和恢复

覆盖范围

CapSolver 支持浏览器使用哪些验证码类型?

浏览器使用支持 reCAPTCHA v2、reCAPTCHA v3、其 Enterprise 变体和 Cloudflare Turnstile。

验证码 v2

标准、隐形和企业 reCAPTCHA v2 挑战。

验证码 v3

基于分数的企业 reCAPTCHA v3 挑战以及行动支持。

Cloudflare 十字转门

托管、非交互式且不可见的 Turnstile 小部件。

更多验证码类型

探索通过 CapSolver API 可用的其他验证码任务类型。

定位

浏览器使用 + CapSolver 与代理轮换

代理帮助浏览器使用代理访问网站。 CapSolver 在支持的验证码出现时对其进行处理,帮助代理继续其任务。

能力

代理/IP轮换

帽解算器

到达目标页面

是的

并排使用

回答屏幕上的验证码

并肩工作

解决支持的验证码

是的

返回验证码令牌

重试,可能会重新阻止

是的

提供任务详细信息

各不相同

任务 ID、状态和错误

保留您的浏览器设置和代理。添加 CapSolver 以在支持的验证码出现时对其进行处理。

生产

生产浏览器使用代理的最佳实践

在代理运行之前添加 CapSolver

在代理启动其浏览器任务之前使验证码解决可用。

处理成功和失败

让代理在成功结果后继续,并在请求失败时安全停止。

记录每个验证码请求

记录每个请求的任务 ID、CAPTCHA 类型、状态和错误。

设置请求超时时间

在设定的时间后停止等待,这样代理就不会陷入困境。

使用正确的响应字段

reCAPTCHA 和 Cloudflare Turnstile 返回不同字段的结果。

安全地存储您的 API 密钥

将 CAPSOLVER_API_KEY 保存在环境变量或机密管理器中。

常见问题解答

政策

负责任的使用

CapSolver 专为负责任的自动化而设计:授权 QA 测试、RPA 工作流程、可访问性工具、公共数据访问和其他合规任务。用户有责任确保其使用符合所访问网站的适用服务条款和法规。 CapSolver 不支持或纵容未经授权的访问或恶意自动化。

相关集成

探索更多适用于您的代理堆栈的 CapSolver 集成

选择另一个集成将验证码解决添加到您的代理或浏览器工作流程中。

01

剧作家

将验证码解决添加到自定义浏览器自动化中。

查看集成
02

浪链

使用CapSolver作为LangChain代理中的可调用工具。

查看集成
03

OpenAI 代理 SDK

通过功能工具和代理工作流程添加验证码解决。

查看集成
04

MCP服务器

将 CapSolver 连接到支持 MCP 工具的其他客户端。

查看集成

将验证码解决添加到您的浏览器使用代理中

从免费试用开始,并在支持的验证码出现时保持授权浏览器工作流程的运行。