
Ethan Collins
Pattern Recognition Specialist

Cloudflare Turnstile 正在迅速取代现代网络应用中的传统 CAPTCHA。当 CrewAI 多代理工作流在网页研究、数据收集或自动化工作流中遇到受 Turnstile 保护的页面时,整个团队都会停滞。CapSolver 的 capsolver-core SDK 可在 2-5 秒内解决 Turnstile 挑战,与 CrewAI 的工具系统无缝集成,确保您的多代理流水线持续运行。
cloudflare 任务类型在 2-5 秒内解决 Turnstile —— 比 reCAPTCHA 更快@tool 装饰器包装 CapSolver 的异步执行器website_url 和 website_key(以 0x 开头的 Turnstile 站点密钥)Cloudflare Turnstile 已成为越来越多网页的默认验证系统。与 reCAPTCHA 不同,Turnstile 作为“非交互式挑战”运行——它在后台运行,仅在风险评分升高时显示可见的小部件。这使得代理更难检测和处理,相比传统的复选框 CAPTCHA。
CrewAI 代理在 SaaS 平台、API 文档网站、现代电商平台(尤其是 Shopify)、金融科技门户和内容管理系统中会遇到 Turnstile。Cloudflare 的 Turnstile 文档 表明,该系统每月处理数十亿次挑战,覆盖数百万个网站,采用率年增长超过 40%。
对于执行网页研究或数据收集的 CrewAI 团队,Turnstile 会毫无预警地出现——昨天能正常加载的页面可能在今天启用 Cloudflare 的机器人管理后部署了 Turnstile。CapSolver 的 cloudflare 任务类型可以透明处理这种情况。
# CapSolver 核心引擎
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# CapSolver 代理工具
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# CrewAI
pip install crewai crewai-tools
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
import asyncio
from crewai.tools import tool
from capsolver_agent.schema import create_executor
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
@tool("解决 Cloudflare Turnstile")
def solve_turnstile(website_url: str, website_key: str) -> str:
"""解决 Cloudflare Turnstile 挑战并返回验证令牌。
在网站受 Cloudflare Turnstile 保护时使用此工具。
website_key 以 '0x' 开头,可以在页面的 cf-turnstile div 元素的 data-sitekey 属性中找到。
参数:
website_url: 受 Turnstile 保护的页面完整 URL
website_key: Turnstile 站点密钥(以 0x 开头)
返回:
要与请求一起提交的 cf-turnstile-response 令牌
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "cloudflare",
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Turnstile 在 ~3 秒内解决。令牌: {result['solution']['token']}"
return f"解决失败: {result['error']}"
from crewai import Agent, Task, Crew, Process
# 具备解决 Turnstile 的代理
researcher = Agent(
role="网页研究专家",
goal="访问受 Cloudflare 保护的网站并收集数据",
backstory="""你研究受 Cloudflare Turnstile 保护的网站。
当你遇到 Turnstile 挑战(通过 cf-turnstile 元素或 Cloudflare 挑战页面识别时),使用页面 URL 和站点密钥(以 0x 开头)调用 solve_turnstile 工具。将返回的令牌作为 cf-turnstile-response 提交。""",
tools=[solve_turnstile],
verbose=True
)
# 需要解决 Turnstile 的任务
research_task = Task(
description="""访问位于 {url} 的受 Cloudflare 保护的页面。
Turnstile 站点密钥是 {site_key}。
解决 Turnstile 挑战并报告令牌。""",
expected_output="访问受保护资源的 Turnstile 令牌",
agent=researcher
)
crew = Crew(agents=[researcher], tasks=[research_task], process=Process.sequential)
result = crew.kickoff(inputs={"url": "https://example.com", "site_key": "0x4AAAAAAA..."})
Turnstile 站点密钥位于页面 HTML 中:
<!-- Turnstile 小部件 -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAABkMYinukE8nzYS"></div>
<!-- 或在 JavaScript 中 -->
<script>
turnstile.render('#container', { sitekey: '0x4AAAAAAABkMYinukE8nzYS' });
</script>
CapSolver 浏览器扩展 可以在任何页面上自动检测 Turnstile 参数。Cloudflare Turnstile 解决指南 提供了详细的实现模式。
对于使用 Playwright 驱动浏览器的 CrewAI 代理,使用 solve_on_page() 进行自动检测:
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
async def solve_turnstile_on_page(url: str):
cap = create_capsolver(api_key="YOUR_CAPSOLVER_API_KEY")
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto(url)
# 自动检测并解决 Turnstile
results = await cap.solve_on_page(page)
for r in results:
if r.solution:
print(f"Turnstile 已解决并填写: {r.filled}")
await browser.close()
await cap.aclose()
| 特性 | Turnstile 与 reCAPTCHA |
|---|---|
| 解决时间 | 2-5 秒(更快) |
| 每次解决成本 | 每 1000 次 1-2 美元 |
| 是否需要浏览器 | 否(Token 模式有效) |
| 可见小部件 | 有时(基于风险) |
| 令牌字段名称 | cf-turnstile-response |
领取您的优惠码:在 CapSolver 仪表板 使用代码 WEBS,每次充值可额外获得 5% 奖励。
在 CrewAI 中解决 Cloudflare Turnstile 需要使用 @tool 装饰器包装 CapSolver 的执行器,并设置 captcha_type: "cloudflare"。Turnstile 解决速度更快(2-5 秒)且成本更低,使其成为高吞吐量 CrewAI 工作流的高效选择。CapSolver 通过与 reCAPTCHA 相同的 API 透明处理 Turnstile,因此您的 CrewAI 工具可以在不更改代码的情况下跨所有 CAPTCHA 类型工作。
不。Turnstile 实际上更容易解决(2-5 秒 vs reCAPTCHA v2 的 5-12 秒),并且每次解决的成本更低。CapSolver API 通过相同的接口处理两者——只需更改 captcha_type 参数即可。
Turnstile 站点密钥始终以 0x 开头,后跟字母数字字符,例如 0x4AAAAAAABkMYinukE8nzYS。它们位于 div.cf-turnstile 元素的 data-sitekey 属性中。
可以。创建一个统一的工具,接受 captcha_type 作为参数。执行器会根据类型值路由到正确的求解器——cloudflare 用于 Turnstile,reCaptchaV2 或 reCaptchaV3 用于 reCAPTCHA。
可以。Token 模式只需 website_url 和 website_key。无需浏览器、无需 Playwright、无需页面渲染。直接返回令牌,并将其作为 cf-turnstile-response 提交到 HTTP 请求中。