产品集成资源文档定价
立即开始

© 2026 CapSolver. All rights reserved.

联系我们

Slack: lola@capsolver.com

产品

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • 浏览器插件
  • 更多验证码类型

集成

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • 合作伙伴
  • 查看所有集成

资源

  • 推荐返佣系统
  • 官方文档
  • API 参考
  • 博客
  • 常见问题 (FAQ)
  • 术语表
  • 系统状态

法律声明

  • 服务条款
  • 隐私政策
  • 退款政策
  • 请勿出售我的信息
博客/Web Scraping/如何使用 CapSolver 和 n8n 解决 Cloudflare Turnstile
Mar09, 2026

如何使用 CapSolver 和 n8n 解决 Cloudflare Turnstile

Adélia Cruz

Adélia Cruz

Neural Network Developer

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 挑战,需要不同的解决方式。查看 更多关键区别


准备工作

开始之前,请确保你已准备好以下内容:

  1. 一个 n8n 实例 —— 可以是 自托管 或 n8n Cloud
  2. 一个 CapSolver 账户 —— 在此注册 并获取你的 API 密钥
  3. CapSolver 的 n8n 节点 —— 已作为官方节点在 n8n 中提供(无需安装)

重要提示: 确保你的 CapSolver 账户中有足够的余额。Turnstile 解决任务会根据使用情况消耗积分。


在 n8n 中设置 CapSolver

CapSolver 作为 官方集成 在 n8n 中提供 —— 无需安装社区节点。你可以在构建工作流时直接在节点面板中找到它。

由于是官方集成,你需要在 n8n 中创建凭证,以便 CapSolver 节点可以与你的账户进行身份验证。

步骤 1:打开凭证页面

进入你的 n8n 实例,导航至 设置 → 凭证。你将在这里看到所有已配置的凭证。

n8n 凭证页面显示 CapSolver 账户

步骤 2:创建 CapSolver 凭证

  1. 点击 创建凭证(右上角)
  2. 搜索 "CapSolver" 并选择 CapSolver API
  3. 输入你的 API 密钥 —— 直接从 CapSolver 仪表板 复制
  4. 将 允许的 HTTP 请求域名 保留为 All(默认)
  5. 点击 保存

n8n 会自动测试连接。你应该会看到一个绿色的 “连接测试成功” 通知,确认你的 API 密钥有效。

CapSolver 凭证配置并成功测试连接

重要提示: 你工作流中的每个 CapSolver 节点都会引用此凭证。你只需创建一次 —— 所有解决器工作流将共享同一凭证。

现在你已准备好构建你的 Turnstile 解决工作流!


如何识别 Turnstile 参数

在解决 Turnstile 挑战之前,你需要知道其参数 —— 特别是 websiteURL 和 websiteKey(也称为站点密钥)。

Turnstile 仅需要两个参数,因此找到它们非常简单:

网站 URL

这仅仅是包含 Turnstile 控件的页面的完整 URL。从浏览器地址栏中复制它即可。

网站密钥(站点密钥)

站点密钥嵌入在页面的 HTML 中。以下是几种查找方法:

1. 在页面源代码中搜索 data-sitekey

右键点击页面 → 查看页面源代码(或按 Ctrl+U)并搜索 data-sitekey:

html Copy
<div class="cf-turnstile" data-sitekey="0x4AAAAAAADV8V8V8V8V8V8V"></div>

2. 在 JavaScript 中搜索 turnstile.render()

一些网站通过 JavaScript 渲染 Turnstile 而不是 HTML 属性。在页面源代码中搜索 turnstile.render:

javascript Copy
turnstile.render('#widget', {
  sitekey: '0x4AAAAAAADV8V8V8V8V8V8V',
});

3. 检查 DevTools 的网络标签

打开 DevTools(F12)→ 网络 标签 → 按 turnstile 或 challenges.cloudflare.com 过滤。站点密钥通常会出现在请求 URL 或响应数据中。

4. 在 HTML 中搜索 challenges.cloudflare.com

Turnstile 从 Cloudflare 加载其脚本。在页面源代码中搜索此域名 —— 站点密钥通常在附近:

html Copy
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

提示:

  • 站点密钥始终以 0x 开头,并且是一个长的字母数字字符串
  • 如果网站使用 Cloudflare 的托管挑战(访问网站前的全页挑战),Turnstile 控件可能不在页面源代码中 —— 它是由 Cloudflare 的挑战页面提供的

工作流:Cloudflare Turnstile 解决 API

此工作流创建一个 POST API 端点,接收 Turnstile 参数并返回解决后的令牌。

Cloudflare Turnstile

工作原理

该工作流由三个节点组成:

  1. Webhook —— 接收带有 Turnstile 参数的传入 POST 请求
  2. Cloudflare Turnstile —— 将挑战发送到 CapSolver 并等待解决方案
  3. 响应 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 Copy
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 Copy
{
  "taskId": "abc123...",
  "solution": {
    "token": "0.XXXXXXXXXXXXXXXX..."
  },
  "status": "ready"
}

导入此工作流

复制以下 JSON 并通过 菜单 → 从 JSON 导入 导入到 n8n 中:

点击展开工作流 JSON
json Copy
{
  "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 保护后的数据或操作。

以下是通用模式:

  1. 解决挑战 → 从 CapSolver 获取令牌
  2. 提交令牌 → 通过 HTTP 请求将令牌发送到目标网站(通常作为 cf-turnstile-response 表单字段)
  3. 验证响应 → 检查网站是否接受该令牌
  4. 处理结果 → 提取你需要的数据

示例:解决并提交 Turnstile

示例: https://example.com/ —— 一个受 Turnstile 保护的网站

工作流流程

Copy
手动触发 → CapSolver Turnstile → HTTP POST 请求 → IF(检查成功) → 编辑字段(提取数据)

工作原理

  1. 手动触发 —— 手动启动工作流(点击“执行工作流”)。你可以用任何触发器替换它 —— Webhook、定时器、应用事件等。
  2. CapSolver Cloudflare Turnstile —— 解决 Turnstile 挑战:
    • 操作:Cloudflare Turnstile
    • 网站 URL:https://example.com/login
    • 网站密钥:0x4AAAAAAA...(通过检查页面源代码找到 —— 参见 如何识别 Turnstile 参数
  3. HTTP POST 请求 —— 提交已解决的令牌到目标网站:
    • 令牌通过 cf-turnstile-response 表单字段发送
    • 包含网站预期的其他表单字段(例如 username、password)
    • 这就是浏览器在 Turnstile 验证后提交表单时所做的
  4. IF 节点 —— 检查响应是否表示成功(例如重定向、成功消息或特定 JSON 字段)
  5. 编辑字段 — 从响应中提取你需要的数据。在实际场景中,这一步你将使用HTML节点解析HTML,提取特定元素(例如用户数据、产品列表、仪表板内容),并将其映射到你的输出字段。

关键概念:每个网站处理令牌提交的方式不同。在这个示例中,令牌通过POST请求发送到cf-turnstile-response表单字段——但其他网站可能期望它以不同的字段名、JSON正文、请求头或完全不同的端点发送。始终使用DevTools的网络标签检查网站的实际表单提交,以确定令牌需要如何发送。

将此模式应用于任何受Turnstile保护的网站

  1. 识别Turnstile参数 — 通过检查页面源代码找到websiteURL和websiteKey
  2. 检查表单提交 — 使用浏览器的DevTools网络标签查看表单提交时发送的请求(URL、方法、请求头、正文字段)
  3. 在n8n中复制请求 — 配置HTTP请求节点以完全匹配表单提交,将解决的令牌插入正确的字段(通常是cf-turnstile-response,但请检查实际表单)
  4. 添加验证 — 使用IF节点检查响应并确认数据是否已解锁
  5. 提取数据 — 一旦网站接受令牌,解析响应以提取你需要的数据。对于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超时时间。对于生产用例,考虑添加重试逻辑

最佳实践

  1. 立即使用令牌 — Turnstile令牌会快速过期。在从求解器API收到令牌后,立即将其发送到目标网站。

  2. 配置前验证参数 — 在配置工作流前,始终通过检查页面源代码确认正确的websiteKey。

  3. 确保API密钥安全 — 千万不要在客户端代码中暴露你的CapSolver API密钥。这些n8n工作流将密钥保留在服务器端,这是推荐的做法。

  4. 监控你的余额 — 在CapSolver仪表板中设置余额警报,以避免因余额不足导致工作流意外失败。

  5. 添加错误处理 — 对于生产工作流,添加一个IF节点在CapSolver节点后检查错误并优雅处理(例如重试、通知或记录失败)。


结论

你已经学习了如何使用n8n和CapSolver构建一个Cloudflare Turnstile求解API和抓取工作流模式——无需传统编码。

在本指南中,我们涵盖了:

  • 基于Webhook的工作流,用于Cloudflare Turnstile的API求解端点
  • 现实世界的抓取模式,展示如何将解决的令牌提交到目标网站并提取受保护的数据
  • 通过检查页面源代码识别Turnstile参数
  • 令牌处理、错误管理和生产使用的最佳实践

关键要点:解决Turnstile挑战只是工作的一半——你还需要将令牌提交到目标网站以解锁受保护的数据。


准备好了吗? 注册CapSolver,使用优惠码n8n在首次充值时获得额外8%的奖励!

CapSolver优惠码横幅


常见问题

什么是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节点检查错误并添加重试机制或通知)。

查看更多

Web ScrapingApr 22, 2026

Rust网络爬虫架构:可扩展的数据提取

学习可扩展的Rust网络爬虫架构,包括reqwest、scraper、异步爬取、无头浏览器爬取、代理轮换以及符合规范的验证码处理。

Ethan Collins
Ethan Collins
Web ScrapingMar 02, 2026

面向开发者的浏览器自动化:2026年掌握Selenium与验证码

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

Sora Fujimoto

目录

Sora Fujimoto
Web ScrapingFeb 17, 2026

如何在Nanobot中使用CapSolver解决验证码

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

Anh Tuan
Anh Tuan
Web ScrapingFeb 10, 2026

数据即服务(DaaS):它是什么以及为何在2026年重要

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

Rajinder Singh
Rajinder Singh