logo
bars
按解决付费 · API

Cloudflare Turnstile 求解器

Managed、non-interactive 和 invisible 小部件的处理无需手动解决 - 您发送页面 URL 和站点密钥,并收到表单的就绪令牌。

最后更新:

免费测试:0.10 美元测试余额 ↓
API 响应时间
≤ 2 s*
成功率
高达99%*
每 1000 个代币
$1.30

Cloudflare Turnstile 求解器定价

验证码
价格 (USD)
$ 1.30
1000 代币
选择Cloudflare Turnstile的解决方案

Cloudflare Turnstile 与 Cloudflare Challenge

Cloudflare Challenge 和 Turnstile 小部件可能看起来相同。挑战并不总是一个单独的“稍等一下……”页面:它可以设计样式、嵌入到网站中或使其看起来像常规的 Turnstile 小部件,因此您无法通过外观区分它们。

Cloudflare Turnstile

小部件
你在哪里看到它
页面或表单内的小部件
它返回什么
cf-turnstile-response中的代币
CapMonster 页面
本页:Cloudflare Turnstile解算器
TurnstileTask → solution.token

Cloudflare Challenge

403 · challenge-form
你在哪里看到它
嵌入到网站中的插页式页面或样式检查;第一次请求时由 403 和 challenge-form 和 __cf_chl_f_tk= 标识
它返回什么
令牌或 cf_clearance cookie
CapMonster 页面
Cloudflare Challenge 求解器
→ token · cf_clearance

Cloudflare Turnstile 求解器比较

表格列出了四种Cloudflare Turnstile解决服务的价格、解决时间和解决成功率。

参数CapMonster Cloud2CaptchaAnti-CaptchaDeathByCaptcha
每 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 的公开数据和内部基准测试。

免费测试

在几秒钟内解决Cloudflare Turnstile

立即测试您自己的目标站点的稳定性。我们不保证 100% 的成功率:CAPTCHA 类型和目标站点配置可能随时更改。

$0.10

新用户将获得 0.10 美元的测试余额来尝试 CapMonster Cloud。

  1. 1. 注册CapMonster Cloud。

  2. 2. 通过 实时聊天 或 support@capmonster.cloud 使用与您的帐户绑定的电子邮件发送消息支持。

没有信用卡·现成SDKs适用于Python、Node.js、C#

团队使用 Cloudflare Turnstile 求解器做什么

质量保证和端到端测试

在您拥有或允许测试的页面上使用 Playwright、Puppeteer 或 Selenium 在 CI/CD 中运行注册、结账和表单流程。

监控

检查受保护的表单和端点在发布和小部件更改后是否继续工作。

公开数据

从使用 Cloudflare Turnstile 的开放页面收集公开数据。

无障碍

支持依赖 invisible 机器人检查的网站上的自动化辅助工作流程。

人工智能代理

当工作流到达验证码时,让代理通过 MCP 请求令牌。

仅限合法使用

对于公开可用的数据以及您拥有或有权测试的网站,请使用 CapMonster Cloud。未经许可,禁止通过登录或付费专区收集第三方数据。

Cloudflare Turnstile 的工作原理

Cloudflare Turnstile是什么

Cloudflare Turnstile 通过客户端浏览器信号和风险评估而不是图像拼图来验证访问者。它提供三种小部件模式:Managed(推荐)、Non-Interactive 和 Invisible。 CapMonster Cloud 自动处理所有这些 - 您无需在任务中指定模式。

资料来源:Cloudflare文档 — 小组件类型·入门·TurnstileCloudflare挑战

Managed

Turnstile 根据访问者的风险级别自动在 non-interactive 检查和复选框之间进行选择。没有图像或文字可供解读。

Non-interactive

带有加载微调器的可见小部件。检查的运行无需任何访客交互。

Invisible

检查完全在后台运行:不显示任何小部件和加载指示器。

Cloudflare Turnstile 工作流程

  1. 1. 初始化

    页面加载widget初始化代码; Cloudflare返回所需的JS,并且小部件渲染。

  2. 2. 挑战与否

    根据小部件模式和Cloudflare的风险信号,小部件决定是否显示交互式挑战。

  3. 3. Callback

    客户端callback收到令牌——一次性使用,有效期300秒。如果小部件位于<form>内,则令牌也会自动添加为隐藏字段cf-turnstile-response。

  4. 4. 代币 → 后端

    页面将令牌与表单数据一起发送到后端。

  5. 5. 验证

    您的服务器调用 Cloudflare 的 Siteverify API 来确认令牌。

来源:Cloudflare文档 — 嵌入小部件·验证令牌

Cloudflare Turnstile代币(cf-turnstile-response)是什么?

Turnstile 令牌是小部件在验证访问者后生成的字符串。小部件将其存储在名为 cf-turnstile-response 的隐藏表单字段中,并将其传递给小部件的 callback。然后,该站点的服务器将令牌发送到 Cloudflare 的 Siteverify API 进行确认。

根据Cloudflare的文档,令牌的属性:

终身

生成后 300 秒(5 分钟)内有效。

验证

一次性使用:第二次验证会返回 timeout-or-duplicate 错误。

最大长度

最长 2048 个字符。

通过 Siteverify API 在服务器上进行验证。

对于使用CapMonster Cloud获取Turnstile代币的开发者

如何通过CapMonster Cloud解决Cloudflare Turnstile

CapMonster Cloud 接受验证码参数,在其服务器上处理它们,并返回一个随时可用的令牌。将此令牌插入表单中即可通过检查,无需用户交互。

你的脚本CapMonster Cloud API目标站点

创建任务

在此阶段,您发送 API 密钥、验证码类型及其参数。该服务返回一个唯一的 taskId,您稍后可以使用它来获取结果。

发送API请求

必填参数

参数描述
类型TurnstileTask
websiteURL验证码解析页面的URL
websiteKeyTurnstile 站点密钥。格式: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 类型。

端点:

javascript
https://api.capmonster.cloud/createTask

要求:

json
{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTask",
    "websiteURL": "https://yourwebsite.com/page-with-turnstile",
    "websiteKey": "your-website-key"
  }
}

回应:

json
{
  "errorId": 0,
  "taskId": 407533072
}

收到结果

创建任务后,轮询解决方案状态。

端点:

javascript
https://api.capmonster.cloud/getTaskResult

要求:

json
{
  "clientKey": "API_KEY",
  "taskId": 407533072
}

回应:

json
{
  "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 的代码示例位于下面的常见问题解答中。

如何找到站点密钥和pageAction

要创建 Turnstile 任务,您需要来自小部件运行的页面的两个值:站点密钥 (websiteKey) 和操作名称 (pageAction)(如果页面设置了它)。

<div class="cf-turnstile" data-sitekey="SITE_KEY"← websiteKey
     data-action="ACTION"></div>← pageAction
  1. 使用验证码打开网站。

  2. 右键单击验证码元素并选择 Inspect。

  3. 找到站点密钥。在 Elements 选项卡中,它是 data-sitekey 属性 (websiteKey)。 Turnstile 站点密钥类似于 0x4AAAAAAABUYP0XeMJF0xoy。

  4. 查找操作:在小部件渲染调用中(加载验证码时运行的 callback 函数)或在 data-action 属性中。 sitekey 也可以在 callback 函数中找到。如果页面未设置操作,请忽略该参数。

  5. 要自动收集值,请在无头浏览器(例如 Playwright)中加载页面并从渲染的小部件中读取它们。 JavaScript、Python和C#中的现成示例位于CapMonster Cloud文档中。

有些值在每次页面加载时都会发生变化,因此在收集它们后立即解决任务。

Cloudflare Turnstile 官方解算器 SDK

CapMonster Cloud提供了现成的库,方便在Python、JavaScript(Node.js)、C#中工作。
以下代码示例展示了如何使用我们的客户端库使用 createTask 创建验证码解决任务并使用 getTaskResult 检索结果。
Cloudflare Turnstile 官方解算器 SDK
python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import TurnstileRequest
# 如果您打算使用自己的代理,请导入 ProxyInfo
from capmonstercloudclient.requests.proxy_info import ProxyInfo
API_KEY = "YOUR_API_KEY"  # 指定您的CapMonster Cloud API 密钥
async def solve_turnstile():
    client = CapMonsterClient(options=ClientOptions(api_key=API_KEY))
    # 没有代理的基本示例; CapMonster Cloud 自动使用自己的代理
    turnstile_request = TurnstileRequest(
        websiteURL="https://yourwebsite.com/page-with-turnstile",
        websiteKey="your-website-key",
    )
    # 使用您的代理的示例:如果您想使用自己的代理,请取消注释此块
    """
    proxy = ProxyInfo(proxyType="https", proxyAddress="123.45.67.89", proxyPort=8080, proxyLogin="username", proxyPassword="password")
    turnstile_request = TurnstileRequest(
        websiteURL="https://yourwebsite.com/page-with-turnstile",
        websiteKey="your-website-key",
        proxy=proxy,
        userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    )
    """
    # 如有需要您可以查看您的余额
    balance = await client.get_balance()
    print("Balance:", balance)
    result = await client.solve_captcha(turnstile_request)
    print("Solution:", result)
asyncio.run(solve_turnstile())
javascript
const { CapMonsterCloudClientFactory, ClientOptions, TurnstileRequest } = require("@zennolab_com/capmonstercloud-client");
const API_KEY = "YOUR_API_KEY"; // 指定您的 CapMonster Cloud API 密钥
async function solveTurnstile() {
  const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
  // 没有代理的基本示例; CapMonster Cloud 自动使用自己的代理
  let turnstileRequest = new TurnstileRequest({
    websiteURL: "https://yourwebsite.com/page-with-turnstile",
    websiteKey: "your-website-key",
  });
  // 使用您的代理的示例:如果您想使用您自己的代理,请取消注释此块
  /*
  const proxy = { proxyType: "https", proxyAddress: "123.45.67.89", proxyPort: 8080, proxyLogin: "username", proxyPassword: "password" };
  turnstileRequest = new TurnstileRequest({
    websiteURL: "https://yourwebsite.com/page-with-turnstile",
    websiteKey: "your-website-key",
    proxy,
  });
  */
  // 如果需要,您可以检查您的余额
  const balance = await client.getBalance();
  console.log("Balance:", balance);
  const result = await client.Solve(turnstileRequest);
  console.log("Solution:", result.solution);
}
solveTurnstile().catch(console.error);
csharp
using System;
using System.Threading.Tasks;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
class Program
{
    static async Task Main(string[] args)
    {
        // 指定您的 CapMonster Cloud API 密钥
        var clientOptions = new ClientOptions { ClientKey = "YOUR_API_KEY" };
        var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
        // 没有代理的基本示例; CapMonster Cloud 自动使用自己的代理
        var turnstileRequest = new TurnstileRequest
        {
            WebsiteUrl = "https://yourwebsite.com/page-with-turnstile",
            WebsiteKey = "your-website-key"
        };
        // 使用您的代理的示例:如果您想使用您自己的代理,请取消注释此块
        /*
        turnstileRequest = new TurnstileRequest
        {
            WebsiteUrl = "https://yourwebsite.com/page-with-turnstile",
            WebsiteKey = "your-website-key",
            Proxy = new ProxyContainer("123.45.67.89", 8080, ProxyType.Http, "username", "password")
        };
        */
        // 如果需要,您可以检查您的余额
        var balance = await cmCloudClient.GetBalanceAsync();
        Console.WriteLine("Balance: " + balance);
        var turnstileResult = await cmCloudClient.SolveAsync(turnstileRequest);
        Console.WriteLine("Solution: " + turnstileResult.Solution.Value);
    }
}

对于低代码工作流程,请使用官方 CapMonster Cloud n8n 节点。

Background

Cloudflare Turnstile 错误以及如何修复它们

大多数 Turnstile 任务错误来自于从不同页面呈现获取的站点密钥或 URL、超时太短或未传递到页面的令牌。下面的每张卡片都列出了错误和修复方法。
Bug Icon

站点密钥或 URL 不正确

任务失败或令牌被拒绝。从页面的同一渲染中获取 websiteURL 和 websiteKey。
Bug Icon

解决超时

在超时到期之前未收到结果。增加超时值并重试该任务。
Bug Icon

空令牌

令牌未传递到页面。检查 getTaskResult 返回了 ready 状态,并且您在插入之前获取了 solution.token。

Cloudflare Siteverify(timeout-or-duplicate、invalid-input-secret 等)返回的错误涉及网站所有者 — 请参阅下面“Siteverify 错误代码”。

在您自己的网站上验证 Turnstile 令牌

如果您运行受 Turnstile 保护的网站:验证令牌并测试您的设置

text
POST https://challenges.cloudflare.com/turnstile/v0/siteverify

secret=YOUR_SECRET_KEY
response=TOKEN
success: truehostname: = expectedaction: = expected

如果您运行该站点,您的服务器会通过向 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的验证指南了解更多信息。

Turnstile 测试:虚拟站点密钥和秘密密钥

Cloudflare 提供虚拟站点密钥和秘密密钥,因此您可以测试 Turnstile 实施,而不会触发真正的挑战。测试站点密钥适用于任何域,包括localhost,并生成虚拟令牌XXXX.DUMMY.TOKEN.XXXX。虚拟令牌仅被虚拟密钥接受,而生产密钥则拒绝它们。

1x… 始终通过2x… 始终失败3x… 交互式 / 已使用XXXX.DUMMY.TOKEN.XXXX

虚拟站点密钥

cf-turnstile · 测试 sitekey
<div class="cf-turnstile"
  data-sitekey="1x…AA">
</div>

cf-turnstile-response:
  "XXXX.DUMMY.TOKEN.XXXX"
适用于任何域名,包括 localhost
通过失败交互式
通过可见

1x00000000000000000000AA

总是过去

失败可见

2x00000000000000000000AB

总是失败

通过invisible

1x00000000000000000000BB

总是过去

失败invisible

2x00000000000000000000BB

总是失败

交互式可见

3x00000000000000000000FF

强制互动挑战

虚拟密钥

通过secret

1x0000000000000000000000000000000AA

始终通过验证

失败secret

2x0000000000000000000000000000000AA

总是验证失败

已使用secret

3x0000000000000000000000000000000AA

返回“令牌已用”错误(超时或重复)

Cloudflare的完整参考:Turnstile测试。

Cloudflare Siteverify 错误代码

当验证失败时,Cloudflare的SiteverifyAPI返回error-codes数组。下表列出了每个代码及其含义。

siteverify · 响应
{
  "success": false,
  "error-codes": [
    "timeout-or-duplicate"
  ]
}
检查每个 Siteverify 响应中的 error-codes 数组
密钥Token请求
密钥error-codes

missing-input-secret

未提供秘密参数

密钥error-codes

invalid-input-secret

密钥无效或已过期

Tokenerror-codes

missing-input-response

未提供响应参数(token)

Tokenerror-codes

invalid-input-response

令牌无效、格式错误或已过期

请求error-codes

bad-request

请求格式错误

Tokenerror-codes

timeout-or-duplicate

令牌已被验证或已过期

请求error-codes

internal-error

发生内部错误;重试请求

Siteverify 可以返回 success: true,如果 hostname 或 action 与您的预期不匹配,您的服务器仍应拒绝该令牌。

关于Cloudflare Turnstile的常见问题

关于使用 CapMonster Cloud 解决 Cloudflare Turnstile 的简短解答:模式、代理、令牌、测试和 Siteverify 错误。

Cloudflare Turnstile是什么?它有哪些模式?

Cloudflare Turnstile 是Cloudflare 的验证码替代方案,通过浏览器信号和风险评估而不是图像拼图来验证访问者。它具有三种小部件模式。 Managed(推荐):Cloudflare 根据访客风险在 non-interactive 检查和复选框之间进行选择。 Non-interactive:一个可见的小部件,带有加载旋转器,不需要交互。 Invisible:根本没有小部件。 CapMonster Cloud 自动处理所有三个,因此您无需在任务中指定模式。

我需要代理来解决Cloudflare Turnstile吗?

不需要。TurnstileTask无需代理即可工作,并且代理字段(proxyType、proxyAddress、proxyPort、proxyLogin、proxyPassword)是可选的。与目标站点的地理位置相匹配的代理可以改善地理敏感页面的结果,因此值得测试这两种配置。不允许透明代理和本地计算机上的代理。在没有您自己的代理的情况下,CapMonster Cloud通过其内置代理(IP地址65.21.190.34)解决任务。

在哪里可以找到 websiteKey 和 pageAction 参数?

打开DevTools,找到具有data-sitekey属性的元素(以及data-action,如果页面设置了操作)并复制值; Turnstile 站点密钥类似于 0x4AAAAAAABUYP0XeMJF0xoy。每次页面加载时,某些值都会发生变化,因此请在创建任务之前提取它们。分步说明位于上面的部分。

cf-turnstile-response令牌是什么?它的有效期是多久?

cf-turnstile-response 是保存Turnstile 令牌的隐藏表单字段。令牌有效期为300秒(5分钟),并且只能验证一次;之后Siteverify返回timeout-or-duplicate错误。 立即提交您从CapMonster Cloud收到的令牌,并为每次提交请求一个新的。

如何插入带有 Playwright、Puppeteer 或 Selenium 的 Turnstile 令牌?

要插入 Turnstile 令牌,请找到隐藏的响应字段(名为 cf-turnstile-response 的输入)并将其设置为从 CapMonster Cloud 检索到的令牌。以下是如何跨三个自动化框架执行此操作。

Playwright / Puppeteer (Node.js):

javascript
const token = "YOUR_TOKEN";
await page.evaluate((t) => {
  document.querySelector('[name="cf-turnstile-response"]').value = t;
}, token);
await page.click('#submit-btn');

Selenium (Python):

javascript
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 Turnstile?

使用Cloudflare的虚拟钥匙。在客户端,将sitekey设置为1x00000000000000000000AA(总是通过)、2x00000000000000000000AB(总是失败)或3x00000000000000000000FF(强制进行交互式挑战);在服务器上,使用虚拟密钥,例如 1x0000000000000000000000000000000AA。虚拟站点密钥适用于任何域,包括 localhost,并生成令牌 XXXX.DUMMY.TOKEN.XXXX,只有虚拟密钥接受该令牌。完整列表位于上面的测试部分。

为什么Siteverify拒绝我的Turnstile令牌?

当令牌超过 300 秒、已验证或密钥错误时,Siteverify 返回success: false,如果返回的 hostname 或 action 与您的期望不符,您的服务器也可能会拒绝它。检查响应中的error-codes数组,查看Siteverify错误码表。为每次提交请求一个新的令牌,并在收到后立即发送。

CapMonster Cloud

* 我们不保证 100% 的成功率:验证码类型和目标站点配置可能随时更改。 CapMonster Cloud 为Cloudflare Turnstile 解决提供了很高的成功率。基于CapMonster Cloud团队内部每月基准测试。实际解决速度和成功率取决于目标站点、服务器负载和网络状况。

Cloudflare 和 Turnstile 是Cloudflare, Inc. 的商标。CapMonster Cloud 不隶属于Cloudflare,也不受其认可。该服务旨在用于公开数据、测试您自己或授权的网站、图像识别和可访问性。未经许可,禁止通过登录或付费专区收集第三方数据;您自己的帐户不受影响。您在开始工作之前确定数据的法律状态。