Cloudflare Turnstile
小部件- 你在哪里看到它
- 页面或表单内的小部件
- 它返回什么
cf-turnstile-response中的代币- CapMonster 页面
- 本页:Cloudflare Turnstile解算器
最后更新:
Cloudflare Challenge 和 Turnstile 小部件可能看起来相同。挑战并不总是一个单独的“稍等一下……”页面:它可以设计样式、嵌入到网站中或使其看起来像常规的 Turnstile 小部件,因此您无法通过外观区分它们。
cf-turnstile-response中的代币challenge-form 和 __cf_chl_f_tk= 标识cf_clearance cookie表格列出了四种Cloudflare Turnstile解决服务的价格、解决时间和解决成功率。
| 参数 | CapMonster Cloud | 2Captcha | Anti-Captcha | DeathByCaptcha |
|---|---|---|---|---|
每 1000 个解决方案的价格(来自) | $ 1.30 | — | $2.00 | — |
是时候解决了 | 6.24秒* | 16.9秒 | 20.33秒 | 〜13秒 |
解决成功率 | 99%* | 96% | 96% | 96% |
2Captcha、Anti-Captcha和DeathByCaptcha是其各自所有者的商标。 CapMonster Cloud 不隶属于这些实体。性能指标和定价比较基于截至 02.10.2026 的公开数据和内部基准测试。
立即测试您自己的目标站点的稳定性。我们不保证 100% 的成功率:CAPTCHA 类型和目标站点配置可能随时更改。
$0.10
新用户将获得 0.10 美元的测试余额来尝试 CapMonster Cloud。
1. 注册CapMonster Cloud。
2. 通过 实时聊天 或 support@capmonster.cloud 使用与您的帐户绑定的电子邮件发送消息支持。
在您拥有或允许测试的页面上使用 Playwright、Puppeteer 或 Selenium 在 CI/CD 中运行注册、结账和表单流程。
检查受保护的表单和端点在发布和小部件更改后是否继续工作。
从使用 Cloudflare Turnstile 的开放页面收集公开数据。
支持依赖 invisible 机器人检查的网站上的自动化辅助工作流程。
当工作流到达验证码时,让代理通过 MCP 请求令牌。
对于公开可用的数据以及您拥有或有权测试的网站,请使用 CapMonster Cloud。未经许可,禁止通过登录或付费专区收集第三方数据。
Cloudflare Turnstile 通过客户端浏览器信号和风险评估而不是图像拼图来验证访问者。它提供三种小部件模式:Managed(推荐)、Non-Interactive 和 Invisible。 CapMonster Cloud 自动处理所有这些 - 您无需在任务中指定模式。
资料来源:Cloudflare文档 — 小组件类型·入门·TurnstileCloudflare挑战
Turnstile 根据访问者的风险级别自动在 non-interactive 检查和复选框之间进行选择。没有图像或文字可供解读。
带有加载微调器的可见小部件。检查的运行无需任何访客交互。
检查完全在后台运行:不显示任何小部件和加载指示器。
页面加载widget初始化代码; Cloudflare返回所需的JS,并且小部件渲染。
根据小部件模式和Cloudflare的风险信号,小部件决定是否显示交互式挑战。
客户端callback收到令牌——一次性使用,有效期300秒。如果小部件位于<form>内,则令牌也会自动添加为隐藏字段cf-turnstile-response。
页面将令牌与表单数据一起发送到后端。
您的服务器调用 Cloudflare 的 Siteverify API 来确认令牌。
Turnstile 令牌是小部件在验证访问者后生成的字符串。小部件将其存储在名为 cf-turnstile-response 的隐藏表单字段中,并将其传递给小部件的 callback。然后,该站点的服务器将令牌发送到 Cloudflare 的 Siteverify API 进行确认。
根据Cloudflare的文档,令牌的属性:
生成后 300 秒(5 分钟)内有效。
一次性使用:第二次验证会返回 timeout-or-duplicate 错误。
最长 2048 个字符。
通过 Siteverify API 在服务器上进行验证。
CapMonster Cloud 接受验证码参数,在其服务器上处理它们,并返回一个随时可用的令牌。将此令牌插入表单中即可通过检查,无需用户交互。
在此阶段,您发送 API 密钥、验证码类型及其参数。该服务返回一个唯一的 taskId,您稍后可以使用它来获取结果。
必填参数
| 参数 | 描述 |
|---|---|
| 类型 | TurnstileTask |
| websiteURL | 验证码解析页面的URL |
| websiteKey | Turnstile 站点密钥。格式:0x4AAAAAAABUYP0XeMJF0xoy |
可选参数
| 参数 | 描述 |
|---|---|
| userAgent | 浏览器User-Agent。推荐:传递CapMonster Cloud支持的当前值。您可以在https://capmonster.cloud/api/useragent/actual获取最新值 |
| pageAction | 验证码加载时在callback函数中找到的action字段 |
| 数据 | 数据字段的值,取自cData参数 |
| 代理类型 | http — 常规 HTTP/HTTPS 代理; https — 如果 http 不起作用,请尝试此操作(某些自定义代理需要); socks4 — SOCKS4 代理; socks5 — SOCKS5 代理 |
| 代理地址 | 代理的 IP 地址 (IPv4/IPv6)。不允许透明代理和本地机器上的代理 |
| 代理端口 | 代理端口 |
| 代理登录 | 代理用户名 |
| 代理密码 | 代理密码 |
无论有没有代理,都使用相同的 TurnstileTask 类型。
端点:
https://api.capmonster.cloud/createTask要求:
{
"clientKey": "API_KEY",
"task": {
"type": "TurnstileTask",
"websiteURL": "https://yourwebsite.com/page-with-turnstile",
"websiteKey": "your-website-key"
}
}回应:
{
"errorId": 0,
"taskId": 407533072
}创建任务后,轮询解决方案状态。
端点:
https://api.capmonster.cloud/getTaskResult要求:
{
"clientKey": "API_KEY",
"taskId": 407533072
}回应:
{
"errorId": 0,
"status": "ready",
"solution": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
"token": "0.iGX3xsyFCkbGePM3jP4P4khLo6TrLukt8ZzBvwuQOvbC...f61f3082"
}
}| 财产 | 类型 | 描述 |
|---|---|---|
| 代币 | 字符串 | 在输入字段中或调用 callback 函数时使用令牌。 |
将返回的令牌插入到cf-turnstile-response字段或将其传递到小部件的callback,然后在五分钟内提交表单:Cloudflare令牌将在300秒后过期,并且只能验证一次。 Playwright、Puppeteer 和 Selenium 的代码示例位于下面的常见问题解答中。
要创建 Turnstile 任务,您需要来自小部件运行的页面的两个值:站点密钥 (websiteKey) 和操作名称 (pageAction)(如果页面设置了它)。
<div class="cf-turnstile" data-sitekey="SITE_KEY"← websiteKey
data-action="ACTION"></div>← pageActionturnstile.render('#container', {
sitekey: 'SITE_KEY',← websiteKey
action: 'ACTION',← pageAction
callback: function (token) { /* ... */ }
});使用验证码打开网站。
右键单击验证码元素并选择 Inspect。
找到站点密钥。在 Elements 选项卡中,它是 data-sitekey 属性 (websiteKey)。 Turnstile 站点密钥类似于 0x4AAAAAAABUYP0XeMJF0xoy。
查找操作:在小部件渲染调用中(加载验证码时运行的 callback 函数)或在 data-action 属性中。 sitekey 也可以在 callback 函数中找到。如果页面未设置操作,请忽略该参数。
要自动收集值,请在无头浏览器(例如 Playwright)中加载页面并从渲染的小部件中读取它们。 JavaScript、Python和C#中的现成示例位于CapMonster Cloud文档中。
有些值在每次页面加载时都会发生变化,因此在收集它们后立即解决任务。
createTask 创建验证码解决任务并使用 getTaskResult 检索结果。对于低代码工作流程,请使用官方 CapMonster Cloud n8n 节点。
websiteURL 和 websiteKey。getTaskResult 返回了 ready 状态,并且您在插入之前获取了 solution.token。Cloudflare Siteverify(timeout-or-duplicate、invalid-input-secret 等)返回的错误涉及网站所有者 — 请参阅下面“Siteverify 错误代码”。
如果您运行受 Turnstile 保护的网站:验证令牌并测试您的设置
POST https://challenges.cloudflare.com/turnstile/v0/siteverify
secret=YOUR_SECRET_KEY
response=TOKEN如果您运行该站点,您的服务器会通过向 https://challenges.cloudflare.com/turnstile/v0/siteverify 发送 POST 请求来验证每个 Turnstile 令牌。端点接受 application/x-www-form-urlencoded 和 JSON,并始终返回 JSON。所需参数:secret(您的小部件的密钥)和response(令牌)。可选:remoteip 和 idempotency_key。检查 success,如果您设置了它们,还要在响应中检查 action 和 hostname。
令牌的有效期为 300 秒,并且只能验证一次。请阅读Cloudflare的验证指南了解更多信息。
Cloudflare 提供虚拟站点密钥和秘密密钥,因此您可以测试 Turnstile 实施,而不会触发真正的挑战。测试站点密钥适用于任何域,包括localhost,并生成虚拟令牌XXXX.DUMMY.TOKEN.XXXX。虚拟令牌仅被虚拟密钥接受,而生产密钥则拒绝它们。
<div class="cf-turnstile"
data-sitekey="1x…AA">
</div>
cf-turnstile-response:
"XXXX.DUMMY.TOKEN.XXXX"总是过去
总是失败
总是过去
总是失败
强制互动挑战
始终通过验证
总是验证失败
返回“令牌已用”错误(超时或重复)
Cloudflare的完整参考:Turnstile测试。
当验证失败时,Cloudflare的SiteverifyAPI返回error-codes数组。下表列出了每个代码及其含义。
{
"success": false,
"error-codes": [
"timeout-or-duplicate"
]
}未提供秘密参数
密钥无效或已过期
未提供响应参数(token)
令牌无效、格式错误或已过期
请求格式错误
令牌已被验证或已过期
发生内部错误;重试请求
Siteverify 可以返回 success: true,如果 hostname 或 action 与您的预期不匹配,您的服务器仍应拒绝该令牌。
关于使用 CapMonster Cloud 解决 Cloudflare Turnstile 的简短解答:模式、代理、令牌、测试和 Siteverify 错误。
Cloudflare Turnstile 是Cloudflare 的验证码替代方案,通过浏览器信号和风险评估而不是图像拼图来验证访问者。它具有三种小部件模式。 Managed(推荐):Cloudflare 根据访客风险在 non-interactive 检查和复选框之间进行选择。 Non-interactive:一个可见的小部件,带有加载旋转器,不需要交互。 Invisible:根本没有小部件。 CapMonster Cloud 自动处理所有三个,因此您无需在任务中指定模式。
不需要。TurnstileTask无需代理即可工作,并且代理字段(proxyType、proxyAddress、proxyPort、proxyLogin、proxyPassword)是可选的。与目标站点的地理位置相匹配的代理可以改善地理敏感页面的结果,因此值得测试这两种配置。不允许透明代理和本地计算机上的代理。在没有您自己的代理的情况下,CapMonster Cloud通过其内置代理(IP地址65.21.190.34)解决任务。
打开DevTools,找到具有data-sitekey属性的元素(以及data-action,如果页面设置了操作)并复制值; Turnstile 站点密钥类似于 0x4AAAAAAABUYP0XeMJF0xoy。每次页面加载时,某些值都会发生变化,因此请在创建任务之前提取它们。分步说明位于上面的部分。
cf-turnstile-response 是保存Turnstile 令牌的隐藏表单字段。令牌有效期为300秒(5分钟),并且只能验证一次;之后Siteverify返回timeout-or-duplicate错误。 立即提交您从CapMonster Cloud收到的令牌,并为每次提交请求一个新的。
要插入 Turnstile 令牌,请找到隐藏的响应字段(名为 cf-turnstile-response 的输入)并将其设置为从 CapMonster Cloud 检索到的令牌。以下是如何跨三个自动化框架执行此操作。
Playwright / Puppeteer (Node.js):
const token = "YOUR_TOKEN";
await page.evaluate((t) => {
document.querySelector('[name="cf-turnstile-response"]').value = t;
}, token);
await page.click('#submit-btn');Selenium (Python):
token = "YOUR_TOKEN"
driver.execute_script("document.querySelector('[name=\"cf-turnstile-response\"]').value = arguments[0];", token)
driver.find_element("id", "submit-btn").click()如果表单通过 callback 函数(小部件的 data-callback 属性)验证令牌,请使用令牌调用该函数。
使用Cloudflare的虚拟钥匙。在客户端,将sitekey设置为1x00000000000000000000AA(总是通过)、2x00000000000000000000AB(总是失败)或3x00000000000000000000FF(强制进行交互式挑战);在服务器上,使用虚拟密钥,例如 1x0000000000000000000000000000000AA。虚拟站点密钥适用于任何域,包括 localhost,并生成令牌 XXXX.DUMMY.TOKEN.XXXX,只有虚拟密钥接受该令牌。完整列表位于上面的测试部分。
当令牌超过 300 秒、已验证或密钥错误时,Siteverify 返回success: false,如果返回的 hostname 或 action 与您的期望不符,您的服务器也可能会拒绝它。检查响应中的error-codes数组,查看Siteverify错误码表。为每次提交请求一个新的令牌,并在收到后立即发送。
* 我们不保证 100% 的成功率:验证码类型和目标站点配置可能随时更改。 CapMonster Cloud 为Cloudflare Turnstile 解决提供了很高的成功率。基于CapMonster Cloud团队内部每月基准测试。实际解决速度和成功率取决于目标站点、服务器负载和网络状况。
Cloudflare 和 Turnstile 是Cloudflare, Inc. 的商标。CapMonster Cloud 不隶属于Cloudflare,也不受其认可。该服务旨在用于公开数据、测试您自己或授权的网站、图像识别和可访问性。未经许可,禁止通过登录或付费专区收集第三方数据;您自己的帐户不受影响。您在开始工作之前确定数据的法律状态。