如何在 OpenAI 代理 SDK 中解决 reCAPTCHA

Ethan Collins
Pattern Recognition Specialist
28-Jul-2026
OpenAI 代理 SDK 提供了一个生产就绪的框架,用于构建具有工具调用功能的 AI 代理。当这些代理与受 reCAPTCHA 保护的网站交互时,需要一种编程方式清除验证挑战。CapSolver 的 capsolver-agent 包通过 @function_tool 装饰器与 OpenAI 代理 SDK 集成,使您的代理能够作为其自主工作流的一部分解决 reCAPTCHA v2 和 v3 挑战。
TL;DR
- OpenAI 代理 SDK 使用
@function_tool注册可调用工具——CapSolver 原生符合这一模式 capsolver-agent的execute_tool()函数将解决过程封装为一个与 SDK 兼容的异步调用- 支持 reCAPTCHA v2(复选框和不可见)、reCAPTCHA v3(基于分数)和企业版
- 令牌模式无需浏览器——只需网站密钥和 URL
- 代理根据任务上下文自主决定何时调用 CAPTCHA 解决
为什么 OpenAI 代理需要 reCAPTCHA 解决
OpenAI 代理 SDK 使开发人员能够构建使用工具执行多步骤任务的代理。当代理的任务涉及网络交互——访问登录后的数据、提交表单或从受保护页面收集信息时,reCAPTCHA 挑战会阻止进度。代理可以推理下一步该做什么,但如果没有解决工具,它无法生成继续所需的验证令牌。
reCAPTCHA 在代理需要访问的网站上尤为常见:登录门户、受速率限制的数据 API、政府数据库和 SaaS 平台。 Google 的 reCAPTCHA 文档 指出,全球有超过 500 万个网站使用 reCAPTCHA,使其成为代理最可能遇到的验证挑战。
CapSolver 的架构与 OpenAI 代理 SDK 的设计完美契合:代理决定 要做什么(包括何时解决 CAPTCHA),而 CapSolver 通过其 AI 服务处理 解决它。这种职责分离保持了代理逻辑的简洁性,同时增加了清除验证的能力。
开始前需要准备的内容
安装所需包:
bash
# CapSolver 核心引擎
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# CapSolver 代理工具
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# OpenAI 代理 SDK
pip install openai-agents
设置环境变量:
bash
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
您需要一个 CapSolver 账户 并拥有积分。SDK 当前支持 reCAPTCHA v2、reCAPTCHA v3(包括企业版)和 Cloudflare Turnstile——覆盖代理最常遇到的验证类型。
第 1 步 —— 将 CAPTCHA 解决注册为函数工具
操作内容
OpenAI 代理 SDK 使用 @function_tool 定义代理可以调用的工具。将 CapSolver 的执行器包装成这种模式:
python
from agents import Agent, Runner, function_tool
from capsolver_agent.schema import execute_tool
@function_tool
async def solve_recaptcha(
website_url: str,
website_key: str,
captcha_type: str = "reCaptchaV2"
) -> str:
"""在网站上解决 reCAPTCHA 挑战并返回验证令牌。
在需要绕过网页上的 reCAPTCHA 验证时使用此工具。
参数:
website_url: 包含 reCAPTCHA 的页面完整 URL
website_key: reCAPTCHA 网站密钥(在 data-sitekey 属性中找到)
captcha_type: 可为 'reCaptchaV2' 或 'reCaptchaV3'(默认: reCaptchaV2)
返回:
要作为 g-recaptcha-response 提交的已解决 reCAPTCHA 令牌
"""
result = await execute_tool("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}, api_key="YOUR_CAPSOLVER_API_KEY")
if result["success"]:
return f"reCAPTCHA 已解决。令牌: {result['solution']['token']}"
return f"解决失败: {result['error']}"
capsolver-agent 中的 execute_tool() 函数是一个单次异步调用,处理完整的解决生命周期——创建任务、轮询结果并返回结构化输出。它专门设计用于需要一次解决而无需构建完整执行器循环的场景。
为什么这很重要
OpenAI 代理 SDK 的 @function_tool 装饰器会自动生成模型需要的 JSON 模式。代理看到工具描述,理解何时使用它,并通过 SDK 内置的函数调用机制用正确的参数调用它。
需要避免的常见错误
- 同步执行:OpenAI 代理 SDK 是异步的。始终使用
async def定义工具函数,并使用await调用 CapSolver。 - 缺少类型提示:SDK 从类型提示生成模式。为所有参数包含正确的类型注解。
第 2 步 —— 创建具有 reCAPTCHA 解决能力的代理
操作内容
构建一个包含 reCAPTCHA 解决工具的 OpenAI 代理:
python
from agents import Agent, Runner
# 创建具有 CAPTCHA 解决能力的代理
captcha_agent = Agent(
name="Web Access Agent",
instructions="""您是一个帮助用户与网站交互的网络访问代理。当任务需要访问受 reCAPTCHA 保护的页面时,请使用 solve_recaptcha 工具获取验证令牌。
对于 reCAPTCHA v2: 使用 captcha_type='reCaptchaV2'
对于 reCAPTCHA v3: 使用 captcha_type='reCaptchaV3'
始终提供用户请求中的精确 website_url 和 website_key。""",
tools=[solve_recaptcha]
)
# 运行代理
async def main():
result = await Runner.run(
captcha_agent,
"我需要访问 https://example.com/login,它有 reCAPTCHA v2。"
"网站密钥是 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI。"
"请解决它并给我令牌。"
)
print(result.final_output)
import asyncio
asyncio.run(main())
代理处理请求,识别需要解决 reCAPTCHA,使用提供的参数调用工具,并将令牌返回给用户。
为什么这很重要
OpenAI 代理 SDK 自动处理对话循环、工具分发和结果集成。您只需定义一次工具,SDK 的运行时管理其调用的时间和方式。这比手动构建函数调用循环更简单。
第 3 步 —— 处理具有分数要求的 reCAPTCHA v3
操作内容
reCAPTCHA v3 是基于分数且不可见的——它需要 page_action 参数并返回一个带有相关分数的令牌。创建一个专用工具:
python
@function_tool
async def solve_recaptcha_v3(
website_url: str,
website_key: str,
page_action: str = "verify",
min_score: float = 0.7
) -> str:
"""解决 reCAPTCHA v3(不可见、基于分数)挑战。
当网站使用 reCAPTCHA v3 时使用此工具——没有可见的复选框,
但网站在后台验证基于分数的令牌。
参数:
website_url: 页面的完整 URL
website_key: reCAPTCHA v3 网站密钥
page_action: 用于评分的操作名称(例如,'login'、'submit'、'verify')
min_score: 最低可接受分数(0.0-1.0,默认 0.7)
"""
result = await execute_tool("solve_captcha", {
"captcha_type": "reCaptchaV3",
"website_url": website_url,
"website_key": website_key,
"page_action": page_action,
"min_score": min_score
}, api_key="YOUR_CAPSOLVER_API_KEY")
if result["success"]:
return f"reCAPTCHA v3 以高分数解决。令牌: {result['solution']['token']}"
return f"解决失败: {result['error']}"
reCAPTCHA v3 解决指南 解释了如何为不同网站识别正确的 page_action 参数。常见操作包括 login、submit、homepage 和 verify。
第 4 步 —— 构建具有完整网络工作流的多工具代理
操作内容
将 reCAPTCHA 解决与其他工具结合,创建执行完整网络任务的代理:
python
from agents import Agent, Runner, function_tool
@function_tool
async def solve_recaptcha(website_url: str, website_key: str, captcha_type: str = "reCaptchaV2") -> str:
"""解决 reCAPTCHA 并返回令牌。"""
result = await execute_tool("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}, api_key="YOUR_CAPSOLVER_API_KEY")
if result["success"]:
return f"令牌: {result['solution']['token']}"
return f"失败: {result['error']}"
@function_tool
async def check_solver_balance() -> str:
"""检查剩余的 CAPTCHA 解决积分。"""
result = await execute_tool("get_balance", {}, api_key="YOUR_CAPSOLVER_API_KEY")
if result["success"]:
return f"余额: ${result['balance']:.2f}"
return "无法检查余额"
# 多功能代理
web_agent = Agent(
name="自主网络代理",
instructions="""您帮助用户访问可能受 reCAPTCHA 保护的网络资源。您可以解决 reCAPTCHA v2(可见复选框)和 v3(不可见基于分数)。如果用户询问成本,请在解决前检查余额。
解决 reCAPTCHA 时:
- v2: 使用 captcha_type='reCaptchaV2'
- v3: 使用 captcha_type='reCaptchaV3' 并在已知时包含 page_action
清晰返回令牌,以便用户可以将其提交到表单中。""",
tools=[solve_recaptcha, check_solver_balance]
)
async def run_web_agent(task: str):
result = await Runner.run(web_agent, task)
return result.final_output
这种模式适用于需要在单个会话中处理不同网站上多个 reCAPTCHA 版本的代理。
领取您的优惠码:在 CapSolver 仪表板 使用代码 WEBS,每次充值可获得额外 5% 的奖励。非常适合构建具有网络访问能力的 OpenAI 代理的开发人员。
第 5 步 —— 生产部署注意事项
对于具有 reCAPTCHA 解决功能的生产 OpenAI 代理:
python
import os
from agents import Agent, Runner, function_tool
from capsolver_agent.schema import create_executor
# 带自定义设置的生产执行器
executor = create_executor(
api_key=os.environ["CAPSOLVER_API_KEY"],
default_timeout=90, # 90 秒超时
polling_interval=3 # 每 3 秒轮询一次
)
@function_tool
async def solve_recaptcha_production(
website_url: str,
website_key: str,
captcha_type: str = "reCaptchaV2"
) -> str:
"""具有重试逻辑的生产级 reCAPTCHA 解决器。"""
for attempt in range(3):
result = await executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
})
if result["success"]:
return f"已解决(尝试 {attempt+1})。令牌: {result['solution']['token']}"
if attempt < 2:
await asyncio.sleep(2)
return f"三次尝试后失败: {result.get('error')}"
关键的生产注意事项:
- 超时配置:根据代理的响应时间要求设置
default_timeout - 重试逻辑:网络问题和临时故障应触发重试,而不是立即失败
- 余额监控:定期检查余额以避免因积分不足导致任务中止
- 错误报告:返回清晰的错误信息,以便代理可以推理替代方案
CapSolver API 文档 涵盖了在生产环境中优化解决时间的其他配置选项。对于识别目标网站上的 reCAPTCHA 参数,CapSolver 浏览器扩展 提供了自动检测功能。
结论
将 reCAPTCHA 解决集成到 OpenAI 代理 SDK 中需要定义一个包装 CapSolver 的 @function_tool,然后将其分配给您的代理。SDK 的运行时会自动处理工具分发——代理决定何时需要 reCAPTCHA 解决并用适当的参数调用工具。CapSolver 提供了 AI 驱动的解决基础设施,为 reCAPTCHA v2、v3 和企业版生成有效令牌。
从单个 solve_recaptcha 工具开始,用您的代理在已知目标上测试它,然后添加 v3 支持和生产重试逻辑。OpenAI 代理 SDK 的异步架构与 CapSolver 的异步 API 自然契合,使集成干净且高效。
FAQ
OpenAI 代理 SDK 是否支持异步 CAPTCHA 解决?
是的。SDK 完全异步,CapSolver 的 execute_tool() 是异步函数。@function_tool 装饰器原生支持 async def 函数,因此 CAPTCHA 解决不会阻塞代理的事件循环。
代理能否通过此集成解决 reCAPTCHA 企业版?
是的。在参数中传递 enterprise: true。reCAPTCHA 企业版使用相同的 v2/v3 任务类型,但可能需要 s 令牌参数。CapSolver 通过同一 API 透明地处理企业版。
代理如何知道网站使用哪种 reCAPTCHA 版本?
在代理的指令中包含关于识别 v2 与 v3 的指导。或者在任务提示中提供 CAPTCHA 类型。reCAPTCHA 识别指南 解释了区别:v2 显示可见小部件,而 v3 通过脚本标签无形加载。
每次 reCAPTCHA 解决的成本是多少?
reCAPTCHA v2 每 1000 次解决约 2-3 美元,reCAPTCHA v3 每 1000 次解决约 1-2 美元。对于每会话解决 10 个 CAPTCHA 的代理,成本约为 0.02-0.03 美元/会话——与自主任务完成的价值相比可以忽略不计。
能否与 OpenAI 代理 SDK 的交接功能一起使用?
是的。您可以创建一个专门的“CAPTCHA 解决器”代理,并在主代理遇到验证挑战时将其交接给它。解决器代理解决 CAPTCHA 并将令牌返回给主代理。这保持了代理职责的清晰分离。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

如何使用TinyFish AgentQL解决CAPTCHA – 使用CapSolver的分步指南
学习如何将CapSolver与TinyFish AgentQL集成,以自动解决如reCAPTCHA和Cloudflare Turnstile的CAPTCHAs。分步教程,包含Python和JavaScript SDK示例,实现无缝的AI驱动的网页自动化。

Adélia Cruz
05-Aug-2026

如何在LlamaIndex智能代理中解决验证码
将CAPTCHA求解集成到LlamaIndex代理中,使用FunctionTool和CapSolver用于网络数据摄入流程。

Ethan Collins
31-Jul-2026

如何使用MCP解决CAPTCHA:CapSolver 模型上下文协议服务
在 Claude 桌面版、Cursor 和任何 MCP 客户端中设置 CapSolver MCP 服务,以实现零代码验证码破解。

Ethan Collins
31-Jul-2026

如何在 OpenAI Agents SDK 中解决 reCAPTCHA v3
使用 CapSolver function_tool 在 OpenAI 代理软件开发工具包中生成高分 reCAPTCHA v3 令牌。

Ethan Collins
30-Jul-2026

如何在CrewAI代理中解决Cloudflare Turnstile问题
将 Cloudflare Turnstile 求解集成到 CrewAI 多智能体工作流中,使用 CapSolver。

Ethan Collins
30-Jul-2026

如何在AutoGen代理中解决CAPTCHA
使用 CapSolver 通过 register_function 和群聊模式将验证码解决集成到 Microsoft AutoGen 多智能体对话中的完整指南。

Ethan Collins
29-Jul-2026

