如何使用 CapSolver 和 n8n 解决 Cloudflare Turnstile

Adélia Cruz
Neural Network Developer
10-Mar-2026

Cloudflare Turnstile 正迅速成为现代网站首选的验证码替代方案。与传统验证码不同,Turnstile 在后台静默运行,这使得它更难被标准自动化工具检测和绕过。
但如果你能构建一个自己的 Turnstile 解决 API——一个接收挑战并返回有效令牌的 API,而无需编写任何传统代码呢?
在本指南中,你将学习如何将 n8n(一个可视化工作流自动化工具)与 CapSolver(一个基于人工智能的验证码解决服务)结合,创建一个按需解决 Cloudflare Turnstile 挑战的强大 API 端点。
你将构建的内容:
- 一个 Cloudflare Turnstile 解决 API
- 一个网络爬虫示例,该示例解决 Turnstile、提交令牌到网站并提取受保护的数据
什么是 Cloudflare Turnstile?
Cloudflare Turnstile 是一种智能验证码替代方案,旨在验证用户而不会带来传统挑战的摩擦。它不强制用户点击复选框或识别图片中的对象,而是通过浏览器信号和行为分析自动验证访客。
| 功能 | Cloudflare Turnstile |
|---|---|
| 用户交互 | 无 —— 在后台自动运行 |
| 工作原理 | 使用浏览器挑战和行为信号验证访客 |
| 可见性 | 显示一个小的控件,但不需要解决谜题 |
| 控件模式 | 托管模式、非交互模式、不可见模式 |
| 常见用例 | 登录表单、注册页面、结账页面,任何受 Cloudflare 保护的页面 |
| 站点密钥可见? | 是 |
控件模式
Turnstile 为网站提供了三种控件模式:
| 模式 | 描述 |
|---|---|
| 托管模式 | Cloudflare 决定是否显示交互式挑战或静默验证 |
| 非交互模式 | 永不显示挑战 —— 始终在后台验证 |
| 不可见模式 | 完全隐藏 —— 页面上不渲染控件 |
从解决角度来看,模式不会改变你配置 CapSolver 的方式 —— 你始终需要相同的参数:websiteURL 和 websiteKey。
Turnstile 与 Cloudflare 挑战(不是同一回事)
不要将 Turnstile 与 Cloudflare 的全页安全挑战 混淆 —— 那是显示“执行安全验证”并带有加载进度条的页面,让你在访问网站前完成验证。这是 Cloudflare 挑战(也称为 JS 挑战或托管挑战),而不是 Turnstile。
| Cloudflare Turnstile | Cloudflare 挑战 | |
|---|---|---|
| 出现位置 | 嵌入在页面中(例如在登录表单中) | 在访问网站前显示的全页弹窗 |
| 外观 | 页面中的一个小控件 | 显示“执行安全验证...”并带有加载条 |
| 实现方式 | 网站所有者将其添加到表单中 | Cloudflare 根据安全规则自动添加 |
| 解决方式 | 使用 CapSolver 的 Turnstile 操作(本指南) | 不同 —— 需要 Cloudflare 挑战解决器 |
如果你看到全页的“执行安全验证”屏幕,那不是 Turnstile —— 而是 Cloudflare 挑战,需要不同的解决方式。查看 更多关键区别
准备工作
开始之前,请确保你已准备好以下内容:
- 一个 n8n 实例 —— 可以是 自托管 或 n8n Cloud
- 一个 CapSolver 账户 —— 在此注册 并获取你的 API 密钥
- CapSolver 的 n8n 节点 —— 已作为官方节点在 n8n 中提供(无需安装)
重要提示: 确保你的 CapSolver 账户中有足够的余额。Turnstile 解决任务会根据使用情况消耗积分。
在 n8n 中设置 CapSolver
CapSolver 作为 官方集成 在 n8n 中提供 —— 无需安装社区节点。你可以在构建工作流时直接在节点面板中找到它。
由于是官方集成,你需要在 n8n 中创建凭证,以便 CapSolver 节点可以与你的账户进行身份验证。
步骤 1:打开凭证页面
进入你的 n8n 实例,导航至 设置 → 凭证。你将在这里看到所有已配置的凭证。

步骤 2:创建 CapSolver 凭证
- 点击 创建凭证(右上角)
- 搜索 "CapSolver" 并选择 CapSolver API
- 输入你的 API 密钥 —— 直接从 CapSolver 仪表板 复制
- 将 允许的 HTTP 请求域名 保留为
All(默认) - 点击 保存
n8n 会自动测试连接。你应该会看到一个绿色的 “连接测试成功” 通知,确认你的 API 密钥有效。

重要提示: 你工作流中的每个 CapSolver 节点都会引用此凭证。你只需创建一次 —— 所有解决器工作流将共享同一凭证。
现在你已准备好构建你的 Turnstile 解决工作流!
如何识别 Turnstile 参数
在解决 Turnstile 挑战之前,你需要知道其参数 —— 特别是 websiteURL 和 websiteKey(也称为站点密钥)。
Turnstile 仅需要两个参数,因此找到它们非常简单:
网站 URL
这仅仅是包含 Turnstile 控件的页面的完整 URL。从浏览器地址栏中复制它即可。
网站密钥(站点密钥)
站点密钥嵌入在页面的 HTML 中。以下是几种查找方法:
1. 在页面源代码中搜索 data-sitekey
右键点击页面 → 查看页面源代码(或按 Ctrl+U)并搜索 data-sitekey:
html
<div class="cf-turnstile" data-sitekey="0x4AAAAAAADV8V8V8V8V8V8V"></div>
2. 在 JavaScript 中搜索 turnstile.render()
一些网站通过 JavaScript 渲染 Turnstile 而不是 HTML 属性。在页面源代码中搜索 turnstile.render:
javascript
turnstile.render('#widget', {
sitekey: '0x4AAAAAAADV8V8V8V8V8V8V',
});
3. 检查 DevTools 的网络标签
打开 DevTools(F12)→ 网络 标签 → 按 turnstile 或 challenges.cloudflare.com 过滤。站点密钥通常会出现在请求 URL 或响应数据中。
4. 在 HTML 中搜索 challenges.cloudflare.com
Turnstile 从 Cloudflare 加载其脚本。在页面源代码中搜索此域名 —— 站点密钥通常在附近:
html
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
提示:
- 站点密钥始终以
0x开头,并且是一个长的字母数字字符串- 如果网站使用 Cloudflare 的托管挑战(访问网站前的全页挑战),Turnstile 控件可能不在页面源代码中 —— 它是由 Cloudflare 的挑战页面提供的
工作流:Cloudflare Turnstile 解决 API
此工作流创建一个 POST API 端点,接收 Turnstile 参数并返回解决后的令牌。

工作原理
该工作流由三个节点组成:
- Webhook —— 接收带有 Turnstile 参数的传入 POST 请求
- Cloudflare Turnstile —— 将挑战发送到 CapSolver 并等待解决方案
- 响应 Webhook —— 以 JSON 响应返回解决方案
节点配置
1. Webhook 节点
| 设置 | 值 |
|---|---|
| HTTP 方法 | POST |
| 路径 | solver-turnstile |
| 响应模式 | 响应节点 |
这将创建一个端点:https://your-n8n-instance.com/webhook/solver-turnstile
2. CapSolver Cloudflare Turnstile 节点
| 参数 | 值 | 描述 |
|---|---|---|
| 操作 | Cloudflare Turnstile |
必须设置为 Cloudflare Turnstile |
| 类型 | AntiTurnstileTaskProxyLess |
此任务类型不需要代理 |
| 网站 URL | {{ $json.body.websiteURL }} |
包含 Turnstile 控件的页面的 URL |
| 网站密钥 | {{ $json.body.websiteKey }} |
Turnstile 站点密钥 |
| metadata.action | (可选) | 一些网站要求特定的 action 字符串用于 Turnstile 挑战 |
| metadata.cdata | (可选) | 一些网站传递给 Turnstile 控件的自定义数据用于验证 |
一些网站还需要 metadata.action 和/或 metadata.cdata —— 你可以在节点的 可选 部分添加这些内容。同时在此节点中选择你的 CapSolver 凭证。
3. 响应 Webhook 节点
| 设置 | 值 |
|---|---|
| 响应内容 | JSON |
| 响应体 | {{ JSON.stringify($json.data) }} |
这将返回完整的 CapSolver 响应,包括解决后的 Turnstile 令牌。
测试它
向你的 Webhook 端点发送 POST 请求:
bash
curl -X POST https://your-n8n-instance.com/webhook/solver-turnstile \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAADV8V8V8V8V8V8V"
}'
预期响应:
json
{
"taskId": "abc123...",
"solution": {
"token": "0.XXXXXXXXXXXXXXXX..."
},
"status": "ready"
}
导入此工作流
复制以下 JSON 并通过 菜单 → 从 JSON 导入 导入到 n8n 中:
点击展开工作流 JSON
json
{
"name": "Turnstile 解决器",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "solver-turnstile",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-208, 0],
"id": "137be4f0-1762-4f0c-b993-c512d27e35de",
"name": "Webhook",
"webhookId": "3d32ad61-d925-4a09-8fe5-7226e6664a98"
},
{
"parameters": {
"operation": "Cloudflare Turnstile",
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [192, 80],
"id": "954ff1f0-d5de-4468-b0d1-fbce03676676",
"name": "Cloudflare Turnstile",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver 账户"
}
}
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [400, 0],
"id": "db264e2b-48ce-4887-9b2b-2b8077993c30",
"name": "响应 Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Cloudflare Turnstile",
"type": "main",
"index": 0
}
]
]
},
"Cloudflare Turnstile": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
}
}
API 参数参考
Turnstile 解决 API 端点接受以下参数:
| 参数 | 必需 | 描述 |
|---|---|---|
websiteURL |
是 | 托管 Turnstile 控件的页面的 URL |
websiteKey |
是 | Turnstile 站点密钥 |
metadata.action |
否 | 一些网站要求的用于 Turnstile 挑战的操作字符串 |
metadata.cdata |
否 | 一些网站传递给 Turnstile 控件的自定义数据 |
提示: 你可以通过检查页面源代码来识别
websiteURL和websiteKey—— 参见 如何识别 Turnstile 参数。
与 reCAPTCHA 相比,Turnstile 更简单 —— 你只需要两个必需参数。一些网站可能还需要可选的 metadata.action 或 metadata.cdata 字段 —— 如果令牌未被接受,请在节点的 可选 部分添加这些内容。
现实世界示例:向网站提交 Turnstile 令牌
上述 API 工作流展示了如何获取已解决的 Turnstile 令牌。但你实际上如何使用它呢?
在现实世界的自动化中,解决挑战只是工作的一半。你需要提交令牌到目标网站 —— 就像浏览器那样 —— 以解锁 Turnstile 保护后的数据或操作。
以下是通用模式:
- 解决挑战 → 从 CapSolver 获取令牌
- 提交令牌 → 通过 HTTP 请求将令牌发送到目标网站(通常作为
cf-turnstile-response表单字段) - 验证响应 → 检查网站是否接受该令牌
- 处理结果 → 提取你需要的数据
示例:解决并提交 Turnstile
示例: https://example.com/ —— 一个受 Turnstile 保护的网站
工作流流程
手动触发 → CapSolver Turnstile → HTTP POST 请求 → IF(检查成功) → 编辑字段(提取数据)
工作原理
- 手动触发 —— 手动启动工作流(点击“执行工作流”)。你可以用任何触发器替换它 —— Webhook、定时器、应用事件等。
- CapSolver Cloudflare Turnstile —— 解决 Turnstile 挑战:
- 操作:
Cloudflare Turnstile - 网站 URL:
https://example.com/login - 网站密钥:
0x4AAAAAAA...(通过检查页面源代码找到 —— 参见 如何识别 Turnstile 参数
- 操作:
- HTTP POST 请求 —— 提交已解决的令牌到目标网站:
- 令牌通过
cf-turnstile-response表单字段发送 - 包含网站预期的其他表单字段(例如
username、password) - 这就是浏览器在 Turnstile 验证后提交表单时所做的
- 令牌通过
- IF 节点 —— 检查响应是否表示成功(例如重定向、成功消息或特定 JSON 字段)
- 编辑字段 — 从响应中提取你需要的数据。在实际场景中,这一步你将使用HTML节点解析HTML,提取特定元素(例如用户数据、产品列表、仪表板内容),并将其映射到你的输出字段。
关键概念:每个网站处理令牌提交的方式不同。在这个示例中,令牌通过POST请求发送到
cf-turnstile-response表单字段——但其他网站可能期望它以不同的字段名、JSON正文、请求头或完全不同的端点发送。始终使用DevTools的网络标签检查网站的实际表单提交,以确定令牌需要如何发送。
将此模式应用于任何受Turnstile保护的网站
- 识别Turnstile参数 — 通过检查页面源代码找到
websiteURL和websiteKey - 检查表单提交 — 使用浏览器的DevTools网络标签查看表单提交时发送的请求(URL、方法、请求头、正文字段)
- 在n8n中复制请求 — 配置HTTP请求节点以完全匹配表单提交,将解决的令牌插入正确的字段(通常是
cf-turnstile-response,但请检查实际表单) - 添加验证 — 使用IF节点检查响应并确认数据是否已解锁
- 提取数据 — 一旦网站接受令牌,解析响应以提取你需要的数据。对于HTML响应使用HTML节点,对于JSON响应使用编辑字段
注意:此示例为简化起见使用了手动触发,但你可以将其替换为任何触发节点——Webhook(构建API)、定时触发(每小时运行一次)、应用事件(响应Telegram消息)或其他。有关所有选项,请参阅工作流触发方式。
触发工作流的方式
本指南中的示例使用了手动触发(用于抓取工作流)和Webhook(用于API工作流),但n8n提供了更多启动工作流的方式。你可以将触发节点替换为适合你用例的节点:
| 触发方式 | 描述 | 适用场景 |
|---|---|---|
| 手动触发 | 在n8n中点击“执行工作流” | 测试和一次性运行 |
| 定时触发 | 每天、每小时或自定义间隔(cron)运行 | 定期抓取任务(例如每小时检查一次网站) |
| Webhook触发 | 在接收到HTTP请求时运行 | 构建其他服务可以调用的API |
| 应用事件触发 | 在Telegram、Notion、Airtable等发生事件时运行 | 响应事件(例如新Telegram消息触发解决) |
| 表单提交触发 | 在n8n中生成一个网页表单并将响应传递给工作流 | 让用户通过表单提交验证码参数 |
| 由其他工作流执行 | 通过其他工作流的“执行工作流”节点调用 | 模块化架构——将求解器作为可重用的子工作流 |
| 聊天消息触发 | 在用户发送聊天消息时运行(AI节点) | 需要按需解决挑战的聊天机器人集成 |
| 其他方式 | 工作流错误、文件更改等 | 高级自动化触发 |
例如,要每小时运行一次你的抓取工作流,只需将手动触发节点替换为定时触发节点,并将间隔设置为1小时。其余工作流保持完全不变。
存储和导出抓取的数据
一旦你的工作流解决了Turnstile挑战并从目标网站获取了数据,你将需要存储或导出这些数据。n8n提供了内置的数据转换和输出节点来实现这一点。
数据转换
在保存之前,你可以使用n8n的内置节点转换抓取的数据:
| 节点 | 描述 |
|---|---|
| 合并 | 合并多个来源的数据 |
| 汇总 | 对项目进行求和、计数、取最大值等 |
| 转换为文件 | 将JSON数据转换为CSV、Excel或其他二进制格式 |
| 从文件中提取 | 将二进制数据转换为JSON |
| HTML | 解析并从HTML响应中提取数据 |
| XML | 在JSON和XML之间转换 |
| 重命名键 | 重命名字段以匹配你期望的输出格式 |
| 排序 | 在导出前重新排序项目 |
输出目标
在IF节点验证响应后,你可以添加以下节点来保存数据:
| 目标 | 方法 |
|---|---|
| Google表格 | 追加行到电子表格——适合跟踪随时间变化的结果 |
| Excel/CSV文件 | 使用转换为文件节点生成.xlsx或.csv,然后使用写入二进制文件节点保存或上传到Google Drive |
| 数据库(MySQL、PostgreSQL、MongoDB) | 直接插入数据库表以进行结构化存储 |
| Airtable/Notion | 将数据发送到你的项目管理工具 |
| Google Drive/S3 | 上传文件到云存储 |
| Telegram/Slack/邮件 | 通过抓取的数据发送通知 |
| 本地JSON文件 | 将结果写入磁盘上的.json文件 |
提示:你可以组合多个输出——例如,通过将两个节点连接到IF节点的“true”输出,同时保存到Google表格并发送Telegram通知。
故障排除
“ERROR_KEY_DOES_NOT_EXIST”或无效API密钥
| 症状 | CapSolver节点因API密钥错误而失败 |
| 原因 | 你的API密钥不正确或未配置 |
| 修复 | 在设置→凭证中再次检查你的API密钥。直接从CapSolver仪表板复制密钥 |
“ERROR_ZERO_BALANCE”
| 症状 | 任务创建失败,提示余额错误 |
| 原因 | 你的CapSolver账户没有余额 |
| 修复 | 在CapSolver仪表板充值 |
错误或过期的令牌
| 症状 | 返回的令牌被目标网站拒绝 |
| 原因 | Turnstile令牌在短时间内过期 |
| 修复 | 在收到令牌后立即使用 |
令牌未被网站接受
| 症状 | CapSolver成功返回令牌,但目标网站仍拒绝它 |
| 原因 | 某些网站有Turnstile之外的额外保护,或需要未包含的特定参数 |
| 修复 | 再次确认你是否按网站要求提交了令牌(正确的字段名、方法和端点)。确保你使用了正确的网站密钥。如果令牌仍不被接受,联系CapSolver支持团队寻求帮助——他们可以帮助诊断特定网站的问题 |
超时或响应缓慢
| 症状 | Webhook耗时过长或超时 |
| 原因 | 根据负载不同,验证码解决可能需要几秒钟 |
| 修复 | 在n8n设置中增加Webhook超时时间。对于生产用例,考虑添加重试逻辑 |
最佳实践
-
立即使用令牌 — Turnstile令牌会快速过期。在从求解器API收到令牌后,立即将其发送到目标网站。
-
配置前验证参数 — 在配置工作流前,始终通过检查页面源代码确认正确的
websiteKey。 -
确保API密钥安全 — 千万不要在客户端代码中暴露你的CapSolver API密钥。这些n8n工作流将密钥保留在服务器端,这是推荐的做法。
-
监控你的余额 — 在CapSolver仪表板中设置余额警报,以避免因余额不足导致工作流意外失败。
-
添加错误处理 — 对于生产工作流,添加一个IF节点在CapSolver节点后检查错误并优雅处理(例如重试、通知或记录失败)。
结论
你已经学习了如何使用n8n和CapSolver构建一个Cloudflare Turnstile求解API和抓取工作流模式——无需传统编码。
在本指南中,我们涵盖了:
- 基于Webhook的工作流,用于Cloudflare Turnstile的API求解端点
- 现实世界的抓取模式,展示如何将解决的令牌提交到目标网站并提取受保护的数据
- 通过检查页面源代码识别Turnstile参数
- 令牌处理、错误管理和生产使用的最佳实践
关键要点:解决Turnstile挑战只是工作的一半——你还需要将令牌提交到目标网站以解锁受保护的数据。
准备好了吗? 注册CapSolver,使用优惠码n8n在首次充值时获得额外8%的奖励!

常见问题
什么是Cloudflare Turnstile?
Cloudflare Turnstile 是一种 CAPTCHA 替代方案,通过浏览器信号和行为分析在后台验证访问者,而无需他们解决谜题。
CapSolver在n8n中支持哪些验证码类型?
CapSolver的n8n节点支持Cloudflare Turnstile、reCAPTCHA v2、reCAPTCHA v2 Invisible、reCAPTCHA v3等。查看n8n CapSolver集成页面获取完整列表。
解决一个Turnstile挑战需要多少钱?
费用根据使用情况而定。查看CapSolver定价页面获取当前的Turnstile费率。
解决一个Turnstile挑战需要多长时间?
Turnstile挑战通常在几秒钟内解决,因为没有涉及图像挑战。
我可以将此工作流与n8n Cloud一起使用吗?
可以!此工作流适用于自托管的n8n和n8n Cloud。CapSolver节点已作为官方集成提供——只需添加你的API凭证即可。
如何找到网站的Turnstile网站密钥?
在页面源代码中搜索HTML中的data-sitekey或JavaScript中的turnstile.render()。你也可以打开DevTools(按F12)→网络标签并按turnstile过滤请求,以在请求中找到网站密钥。详见如何识别Turnstile参数的详细指南。
Turnstile和reCAPTCHA有什么区别?
Turnstile是Cloudflare的CAPTCHA替代方案,注重隐私和用户体验——它很少显示可见的挑战。reCAPTCHA是Google的机器人检测系统,可能需要用户解决图像谜题(v2)或分配行为评分(v3)。两者都可以通过n8n中的CapSolver解决。
如果CapSolver无法解决Turnstile挑战会发生什么?
CapSolver节点将返回错误。对于生产工作流,建议添加错误处理(例如使用IF节点检查错误并添加重试机制或通知)。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

如何使用 CapSolver 和 n8n 解决 Cloudflare Turnstile
使用CapSolver和n8n构建一个Cloudflare Turnstile求解API。学习如何自动化解决令牌,将其提交到网站,并无需编码即可提取受保护的数据。

Adélia Cruz
10-Mar-2026

面向开发者的浏览器自动化:2026年掌握Selenium与验证码
通过这份2026年指南,掌握浏览器自动化开发。学习Selenium WebDriver Java、Actions接口以及如何使用CapSolver解决验证码。

Sora Fujimoto
02-Mar-2026

如何在Nanobot中使用CapSolver解决验证码
使用 Nanobot 和 CapSolver 自动化验证码解决。使用 Playwright 自主解决 reCAPTCHA 和 Cloudflare。

Anh Tuan
26-Feb-2026

数据即服务(DaaS):它是什么以及为何在2026年重要
了解2026年的数据即服务(DaaS)。探索其优势、应用场景以及如何通过实时洞察和可扩展性改变企业。

Rajinder Singh
12-Feb-2026

如何在RoxyBrowser中通过CapSolver集成解决验证码
将 CapSolver 与 RoxyBrowser 集成,以自动化浏览器任务并绕过 reCAPTCHA、Turnstile 及其他验证码。

Ethan Collins
04-Feb-2026

在 Node.js 中进行网页爬虫:使用 Node Unblocker 和 CapSolver
掌握Node.js中的网络爬虫技术,利用Node Unblocker绕过限制,并使用CapSolver解决CAPTCHAs。本指南提供高效且可靠的数据提取进阶策略。

Lucas Mitchell
04-Feb-2026

