
Ethan Collins
Pattern Recognition Specialist

capsolver-core 适用于 Playwright 脚本,capsolver-agent 适用于工具调用代理,capsolver-mcp 适用于 MCP 兼容客户端。CrewAI 验证码求解器工作需要在规划、浏览器控制和审查之间建立代码级工具边界。 CapSolver 应作为已记录的代理能力进行配置:浏览器或模型检测到验证挑战时,经批准的工具处理它,代理仅在原始用户授权任务仍然有效时才恢复。官方 CapSolver AI 文档描述了三个实用层:CapSolver for AI Agents 用于架构,Core SDK 浏览器模式 用于 Playwright 流程,agent tool schemas 用于模型控制的调用,以及 MCP 服务工具 用于通过模型上下文协议发现工具的客户端。本文将这些文档转化为具有代码、停止规则和日志字段的生产级 CrewAI 验证码求解工作流。
CapSolver AI 文档描述了三个层。使用与您的所有权模型匹配的最低层:当您的代码控制浏览器时使用 Core SDK,当模型决定何时调用工具时使用 Agent 工具,当您的 AI 客户端应自动发现求解工具时使用 MCP 服务。
pip install "capsolver-core[playwright] @ git+https://github.com/capsolver-ai/capsolver-core.git"
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
pip install "capsolver-mcp[browser] @ git+https://github.com/capsolver-ai/capsolver-mcp.git"
playwright install chromium
export CAPSOLVER_API_KEY="your-capsolver-api-key"
简介和快速入门 解释了包的角色:capsolver-core 暴露引擎,capsolver-agent 将其封装为工具,capsolver-mcp 将相同功能暴露给 MCP 客户端。将 API 密钥保留在环境配置中,避免将其放在提示、日志、截图或文章示例中。
CrewAI 实现应为每个角色分配狭窄的责任。规划者识别页面是否被验证挑战阻止。浏览器工作者负责导航。CapSolver 工具处理者负责挑战步骤。审查者负责在运行不确定时做出最终决策。
crew_state = {
"task_id": "lead-enrichment-042",
"allowed_domains": ["example.com"],
"captcha_attempts": 0,
"max_captcha_attempts": 1,
"final_state": "planning",
}
def may_call_capsolver(state, current_url):
if state["captcha_attempts"] >= state["max_captcha_attempts"]:
return False
return any(domain in current_url for domain in state["allowed_domains"])
这个小的门控机制保持了 CrewAI 验证码求解器行为的可见性。只有在页面在范围内且重试预算仍可用时,Crew 才能请求帮助。
当模型应选择何时需要处理挑战时,使用 capsolver-agent。代理工具指南 通过 get_all_tools() 暴露工具定义,并通过 create_executor() 路由模型工具调用。
import json
from openai import OpenAI
from capsolver_agent.schema import create_executor, get_all_tools
client = OpenAI()
executor = create_executor(api_key="YOUR_CAPSOLVER_KEY", default_timeout=120)
tools = [tool.to_openai_function() for tool in get_all_tools()]
messages = [{
"role": "user",
"content": "继续批准的浏览器任务。如果出现验证码,请调用一次 CapSolver 工具并报告结果。"
}]
async def run_one_turn():
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
)
for call in response.choices[0].message.tool_calls or []:
args = json.loads(call.function.arguments)
result = await executor.execute(call.function.name, args)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result),
})
对于 CrewAI 验证码求解器,将此工具路径绑定到审查者策略。模型可以请求工具,但您的应用程序决定允许的 URL 范围、最大尝试次数以及结果是否可用于继续。
当您的 CrewAI 验证码求解流程已拥有 Playwright 页面时,使用 capsolver-core。官方 Core SDK 路径是检测、读取验证码信息、求解并将其令牌填回页面。当页面结构动态时,全功能浏览器调用很有用。
import asyncio
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
TARGET_URL = "https://example.com/approved-workflow"
async def run_agent_step():
async with async_playwright() as pw:
browser = await pw.chromium.launch()
page = await browser.new_page()
await page.goto(TARGET_URL, wait_until="domcontentloaded")
async with create_capsolver(api_key="YOUR_CAPSOLVER_KEY") as cap:
captcha_types = await cap.detect(page)
if not captcha_types:
return "continue_without_challenge"
results = await cap.solve_on_page(page)
solved = [r for r in results if r.solution and not r.error]
if not solved:
return "stop_for_review"
return "resume_original_authorized_task"
asyncio.run(run_agent_step())
重要的工程细节是返回值,而不仅仅是令牌。您的代理应在原始任务仍然合法、合理和用户授权时继续。当页面要求私人、受限、敏感或未经授权的数据时,应停止。
领取您的 CapSolver 奖励代码
立即提升您的自动化预算!
在充值 CapSolver 账户时使用奖励代码 CAP26,每次充值均可获得 5% 的额外奖励——无限制。
现在在您的 CapSolver 仪表板 中领取
在调用任何挑战工具之前,确认用户授权了任务,目标在批准的域名列表内,并且访问的数据是公开的或以其他方式允许的。CrewAI 验证码求解工作流不应将技术能力视为权限。
使用小的重试预算。一次浏览器状态重试和一次冷却重试通常就足够了。重复的挑战事件应创建审查工单,而不是继续静默进行。
捕获 URL、时间戳、挑战类型、CapSolver 包路径、尝试次数、结果状态和最终页面状态。除非您的策略明确允许,否则不要存储无关的页面内容、凭据、会话密钥或个人数据。
对于 CrewAI 验证码求解器,保持运行合法且有证据支持:尊重 HTTP 状态码行为、可访问性要求、隐私风险管理 和 公共数据管理。
强大的 CrewAI 验证码求解文章应展示实际的实现路径,强大的生产工作流也应如此。实际选择很简单:使用 capsolver-core 进行代码拥有的浏览器自动化,capsolver-agent 进行工具调用代理,capsolver-mcp 进行 MCP 兼容客户端。保持挑战处理的边界、记录和与合法用户授权工作的关联。当您的团队准备好将此恢复层添加到代理工作流时,从 CapSolver 和官方 AI 代理文档开始。
当您的应用程序拥有浏览器代码时使用 capsolver-core,当模型应调用工具时使用 capsolver-agent,当 AI 客户端应通过 MCP 发现工具时使用 capsolver-mcp。
不。模型可以请求工具调用,但应用程序应强制执行范围、重试限制和停止条件。
不可以。验证码处理不授予权限。仅用于合法、合理、用户授权的工作流,尊重网站条款和数据权利。
记录源 URL、挑战类型、工具路径、尝试次数、结果状态和最终页面状态。不要在日志中包含凭据和无关的页面内容。
OpenAI Agents 验证码求解器内容应展示工具调用如何进入和退出模型循环。CapSolver 应作为经过记录的代理功能进行连接:浏览器或模型检测到验证挑战,经批准的工具处理它,并且代理仅在原始用户授权任务仍然有效时才恢复。官方的 CapSolver AI 文档描述了三个实用层:CapSolver for AI Agents 用于架构,Core SDK 浏览器模式用于 Playwright

分步教程:在LangChain代理中使用CapSolver capsolver-agent工具解决reCAPTCHA v2,涵盖令牌模式和浏览器模式并附带代码示例。
