如何解决人工智能代理的CAPTCHA挑战:使用n8n、CapSolver和OpenClaw进行数据提取

Lucas Mitchell
Automation Engineer
20-Mar-2026
使用 n8n、CapSolver 和 OpenClaw 进行数据提取
让您的 AI 助手触发自动化、服务器端的数据提取 — 无需浏览器注入,无需代码。
挑战:CAPTCHA 阻碍了您的 AI 代理的效率
当您的 AI 代理浏览网页时,CAPTCHA 是主要障碍。受保护的页面会阻止代理,表单无法提交,任务停滞,等待人工干预。这显著限制了 AI 代理在自动化数据抓取和信息处理中的效率和自主性。
为了解决这一核心问题,我们提供两种强大的解决方案,结合 OpenClaw 和 CapSolver:
方法 1 — 浏览器扩展集成
在 OpenClaw 的浏览器环境中加载 CapSolver Chrome 扩展。该扩展在客户端自动检测并解决 CAPTCHA,无需 n8n 的参与,使 AI 代理在浏览页面时能够无缝绕过验证。(参见我们关于扩展方法的完整指南)
方法 2 — 服务器端 n8n 自动化流水线(本指南重点)
OpenClaw 通过 webhook 触发单个请求,然后 n8n 通过 CapSolver API 解决 CAPTCHA,提交表单,并将清理后的页面内容返回给您的 AI 代理。在此过程中,AI 代理不会直接处理 CAPTCHA 验证。
您将构建的内容:
一个由 webhook 触发的服务器端 CAPTCHA 自动化流水线。n8n 将利用 CapSolver 解决 CAPTCHA,提交表单,并将处理后的页面内容返回给 AI 代理,确保数据提取任务的顺利执行。
先决条件
在开始之前,请确保您拥有以下环境和工具:
- 安装并运行 OpenClaw 网关 (
openclaw gateway start) - 本地运行 n8n — 安装指南
- CapSolver 账户和 API 密钥 — 立即注册
- n8n 中可用的 CapSolver 节点 (官方集成 — 已内置)
在 n8n 中设置 CapSolver
CapSolver 作为 n8n 的官方集成提供,无需额外安装社区节点。您可以在构建工作流时直接在节点面板中找到它。要使 CapSolver 节点能够通过凭证认证您的账户,您需要在 n8n 中创建凭证。
打开您的 n8n 画布,点击 + 添加节点,并搜索 CapSolver。此节点将处理任务创建、轮询和令牌检索。
添加凭证的步骤:
- 在 n8n 中,进入 凭证 → 新建凭证
- 搜索 CapSolver
- 将您的 API 密钥粘贴到 CapSolver 仪表板 中
- 保存
重要:您工作流中的每个 CapSolver 节点都会引用此凭证。您只需创建一次 — 所有 CAPTCHA 解决工作流将共享同一凭证。此外,CapSolver 官方提供了一个丰富的 GitHub 技能仓库,您可以探索更多与 CapSolver 相关的集成和用例,进一步扩展您的 AI 代理能力。
工作流:OpenClaw CAPTCHA 自动化流水线
以下内容仅为示例。URL、字段名称、CAPTCHA 类型、成功条件、响应结构 — 所有内容都特定于此处使用的演示站点。您的实际目标站点会有所不同。请将每个节点配置视为起点,而非最终设置。
工作原理
- Webhook — 接收来自 OpenClaw(或任何 HTTP 客户端)的 POST 请求。
- 定时触发器 — 按照 cron 计划自动触发(例如每天 09:00)。
- CapSolver — 使用配置的任务类型解决 CAPTCHA。
- HTTP 请求 — 提交解决后的令牌到目标站点。
- If — 检查响应是否表示成功或失败。
- 编辑字段 — 从响应中提取
pageText。 - 保存结果 — 将结果保存到存储(可选)。
- 回应 webhook — 将结果返回给调用者。
Webhook ──┐
├──► 抓取站点 ──► HTTP 请求 ──► If ──► 编辑字段 ──► 保存结果 ──► 回应 webhook
定时触发器 ──┘ 编辑字段1 ─┘
节点配置详情
创建一个名为“OpenClaw/Capsolver/n8n 抓取器”的新工作流,包含以下节点:
1. Webhook 节点
- 类型:Webhook
- HTTP 方法:POST
- 路径:
openclaw/scrape - 回应:回应节点 (使调用同步 — 调用者等待结果)
2. 定时触发器节点
- 类型:定时触发器
- Cron:
0 9 * * *(每天 09:00) - 连接到:抓取站点(与 Webhook 相同)
在一个工作流中使用两个触发器节点是有效的。两者都进入相同的处理流水线。
3. CapSolver 节点
- 类型:CapSolver
- 任务类型:
ReCaptchaV2TaskProxyless - 网站 URL:
https://example.com/protected-page - 网站密钥:
YOUR_SITE_KEY(在页面源代码中查找data-sitekey) - 凭证:您的 CapSolver API 密钥
使用 reCAPTCHA v3?将任务类型切换为
ReCaptchaV3TaskProxyless并添加页面操作字段(例如login、submit、homepage)。这是 v3 所需的 — 该操作名称是站点与 Google 注册的名称。您可以在页面源代码中grecaptcha.execute(...)调用附近找到它。请注意,每个 CAPTCHA 类型都有其特定的参数集 — v2 中某些可选字段在 v3 中可能变为必填,而 v3 可能暴露 v2 中不存在的字段(如
minScore)。始终查看 CapSolver 文档 以确认您的任务类型所需的准确参数。
此节点调用 CapSolver API,等待解决(通常为 5–20 秒),并返回令牌在 $json.data.solution.gRecaptchaResponse 中。
4. HTTP 请求节点
- 方法:POST
- URL:
https://example.com/protected-page - 正文:表单编码(form-urlencoded)
g-recaptcha-response=={{ $json.data.solution.gRecaptchaResponse }}
- 请求头:标准浏览器请求头(User-Agent、Accept、Referer、Origin 等)
此操作以浏览器方式提交表单。
注意:令牌提交方式因站点而异。大多数表单期望它作为请求正文中的
g-recaptcha-response提交,但一些站点可能将其作为 JSON 字段、自定义请求头或甚至 cookie 或其他名称发送。使用浏览器的 DevTools(网络标签)检查真实提交情况,并在您的 HTTP 请求节点中镜像该行为。
5. If 节点(成功检查)
- 条件:
$json.data包含"recaptcha-success" - 成功分支 → 编辑字段(成功)
- 失败分支 → 编辑字段1(失败)
6. 编辑字段 / 编辑字段1 节点
两个分支均设置单个字段:
pageText={{ $json.data }}
成功和失败分支均传递 pageText — 调用者可以检查 HTML 以确定结果。
根据您的页面进行调整:您如何解析和使用响应数据完全取决于您的需求和目标站点返回的内容。一些页面返回 JSON,一些返回 HTML,一些在成功时会重定向。您可能需要提取特定字段、解析表格、检查会话 cookie 或完全剥离 HTML。成功条件(
"recaptcha-success")只是一个示例 — 您的站点将有自己的指示器。这些节点是起点;请根据您的用例进行自定义。
7. 保存结果节点
此节点将 { pageText, savedAt } 传递到 webhook 响应,并可选择将结果保存到存储。
注意:n8n 的代码节点运行在沙盒 VM 中,会阻止 Node.js 内置模块如
require('fs')。使用执行命令节点代替以写入磁盘,或完全用适合您堆栈的任何 n8n 集成替换此节点。
选项 A — 本地 JSON 文件(执行命令节点):
使用两个连接的节点:
节点 7a — 准备数据(代码节点):
javascript
const item = $input.first().json;
const now = new Date();
const savedAt = now.toISOString();
const data = { pageText: item.pageText || '', savedAt };
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
const cmd = 'python3 /path/to/save-result.py ' + encoded;
return [{ json: { cmd, pageText: data.pageText, savedAt } }];
节点 7b — 保存结果(执行命令节点):
- 命令:
={{ $json.cmd }}
其中 save-result.py 读取 base64 参数并追加到本地 JSON 文件。
选项 B — 任何 n8n 支持的存储:
n8n 有几乎每个存储系统的原生节点。将节点 7 替换为以下任意一个:
| 存储 | n8n 节点 |
|---|---|
| Google Sheets | 以 pageText + 时间戳追加一行 |
| Airtable | 创建记录 |
| Notion | 创建数据库条目 |
| PostgreSQL / MySQL | 插入到表中 |
| AWS S3 / Cloudflare R2 | 上传 JSON 文件 |
| Slack / Telegram | 将结果发送到频道 |
只需在“编辑字段”和“回应 webhook”之间连接节点,并配置为存储 $json.pageText 和时间戳。
8. 回应 webhook 节点
- 回应内容:JSON
- 回应正文:
={{ JSON.stringify($json) }} - 失败后继续:启用 (必需 — 当通过定时触发器触发时,没有活动的 webhook 可以回应)
一旦工作流构建完成,激活它。webhook 路径将处于活动状态:
POST http://127.0.0.1:3005/webhook/openclaw/scrape
OpenClaw 集成
要连接 OpenClaw 到此工作流,请创建一个触发脚本并注册它。
创建触发脚本:
bash
cat > ~/.openclaw/scripts/extract-data << 'EOF'
#!/usr/bin/env bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
EOF
chmod +x ~/.openclaw/scripts/extract-data
这是 OpenClaw 运行的唯一内容。没有参数、没有站点密钥、没有 URL — 工作流知道要抓取什么内容。
OpenClaw 如何获取数据:脚本等待 n8n 完成(CapSolver 解决 + 表单提交),然后直接在 webhook 响应中接收
{ pageText, savedAt }。无需文件读取 — 数据通过 HTTP 同步返回。响应结构只是此工作流返回的内容 — 如果您需要其他字段(例如解析后的价格、登录状态、结构化的 JSON 对象),请修改“编辑字段”和“保存结果”节点以返回您的用例所需内容。
在 TOOLS.md 中注册命令:
打开 ~/.openclaw/workspace/TOOLS.md 并添加以下条目,以便 OpenClaw 了解该命令:
markdown
### extract-data
运行:`/root/.openclaw/scripts/extract-data`
从实时流水线返回最新的 `{ pageText, savedAt }`。从 JSON 响应中返回 `pageText` 字段。
测试您的 AI 代理自动化流程
从 OpenClaw 触发 — 通过 Discord、Telegram、WhatsApp 或任何渠道向您的 AI 代理发送此命令:
extract data
OpenClaw 运行 extract-data 脚本,该脚本触发 webhook 并等待。n8n 解决 CAPTCHA,提交表单,并直接在 HTTP 响应中返回 { pageText, savedAt }。OpenClaw 接收并总结结果 — 通常在 10–40 秒内。
从终端测试:
bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
定时运行 — 该工作流还会通过定时触发器节点每天 09:00 自动运行。
适配工作流至您的目标站点
本指南的工作流是为特定演示站点构建的。对于您的实际目标站点,流水线的每一部分可能需要调整。以下是需要关注的方面:
1. CAPTCHA 类型
并非所有站点都使用 reCAPTCHA v2。将 CapSolver 节点的任务类型更改为匹配目标站点:
| 您在网站上看到的内容 | n8n 节点操作 |
|---|---|
| "我不是机器人" 复选框 | reCAPTCHA v2 |
| 隐式 reCAPTCHA(自动触发) | reCAPTCHA v2 |
| reCAPTCHA v3 分数 | reCAPTCHA v3 |
| Cloudflare Turnstile 小部件 | Cloudflare Turnstile |
| Cloudflare 挑战(5 秒页面) | Cloudflare Challenge |
| GeeTest 拼图(v3) | GeeTest V3 |
| GeeTest 拼图(v4) | GeeTest V4 |
| DataDome 机器人保护 | DataDome |
| AWS WAF CAPTCHA | AWS WAF |
| MTCaptcha | MTCaptcha |
同时更新网站 URL 和网站密钥以匹配您的目标站点。您可以在页面源代码中找到站点密钥(查找 data-sitekey 属性,或 CapSolver 浏览器扩展会自动检测它)。
2. 令牌提交方式
这是站点之间差异最大的部分。演示站点使用简单的表单 POST,令牌在正文字段中。您的目标站点可能不同:
作为表单字段(最常见)
POST /submit
Content-Type: application/x-www-form-urlencoded
g-recaptcha-response=TOKEN&other_field=value
在 JSON 正文中
POST /api/login
Content-Type: application/json
{ "username": "...", "password": "...", "captchaToken": "TOKEN" }
在请求头中
POST /api/action
X-Captcha-Token: TOKEN
作为 cookie
POST /submit
Cookie: cf_clearance=TOKEN
在 URL 中作为查询参数
GET /search?q=query&token=TOKEN
在浏览器的开发者工具网络标签中手动解决 CAPTCHA 时,查看立即在解决后触发的请求 — 这会显示令牌的准确位置。
3. HTTP 请求节点
一旦知道令牌提交方式,请相应配置 HTTP 请求节点:
- 方法:匹配站点(POST、GET、PUT)
- URL:接收表单或 API 调用的精确端点
- 请求头:从网络标签复制浏览器请求头 — User-Agent、Referer、Origin、Accept、Content-Type 通常为必需
- 正文:根据端点使用表单编码(form-urlencoded)、JSON 或 multipart
- Cookies:如果站点使用会话 cookie,要么作为请求头传递,要么通过先前的 HTTP 请求节点在登录步骤中获取
4. 提取您需要的数据
当前工作流将响应的完整 HTML 作为 pageText 传递。根据您的用例,您可能需要对其进行后处理:
- 在 HTTP 请求节点后添加代码节点以解析 HTML 并提取特定字段(产品名称、价格、状态)
- 使用 n8n 的 HTML 提取节点从特定 CSS 选择器中提取数据,无需编写代码
- 存储结构化字段而非原始 HTML — 更易于跨运行查询和比较
5. 多步骤流程
一些目标站点需要多个请求:
- GET 页面以获取 CSRF 令牌或会话 cookie
- 解决 CAPTCHA
- POST 表单,包含 CSRF 令牌 + CAPTCHA 令牌 + 凭据
在n8n中链式连接多个HTTP请求节点以处理此问题。使用$json表达式在节点之间传递值。
故障排除
"无法连接到n8n爬虫"
json
{"success": false, "error": "无法连接到n8n爬虫。OpenClaw CAPTCHA爬虫工作流是否已激活?"}
检查:n8n是否正在运行?工作流是否已激活?打开n8n并确认工作流处于活动状态(绿色开关)。
CapSolver超时/无令牌
可能原因:
- 无效的API密钥 — 检查
~/.n8n/credentials - 余额不足 — 在 capsolver.com/dashboard 充值
- n8n服务器与CapSolver API之间的网络问题
pageText为空或包含错误页面
- HTTP请求的URL或表单字段名称可能与目标网站不匹配
- 检查
g-recaptcha-response字段名称 — 一些网站可能使用不同的字段名称 - 在HTTP请求节点中启用
fullResponse: true以查看状态码
定时运行在"响应网络钩子"处失败
这是预期且安全的。当通过定时器触发时,没有活动的网络钩子上下文。确保在"响应网络钩子"节点上启用了"继续失败"。
完整配置参考
n8n工作流节点摘要
| 节点 | 类型 | 关键配置 |
|---|---|---|
| 网络钩子 | n8n-nodes-base.webhook |
POST,路径:openclaw/scrape,响应模式:responseNode |
| 定时触发器 | n8n-nodes-base.scheduleTrigger |
Cron:0 9 * * * |
| 爬取网站 | n8n-nodes-capsolver.capSolver |
任务:ReCaptchaV2TaskProxyless |
| HTTP请求 | n8n-nodes-base.httpRequest |
POST到目标URL并在正文中包含令牌 |
| 如果 | n8n-nodes-base.if |
检查 $json.data 是否包含 "recaptcha-success" |
| 编辑字段 | n8n-nodes-base.set |
pageText = $json.data |
| 保存结果 | n8n-nodes-base.executeCommand 或任何存储节点 |
持久化结果(文件、数据库、电子表格等) |
| 响应网络钩子 | n8n-nodes-base.respondToWebhook |
JSON,continueOnFail: true |
CAPTCHA任务类型
| CAPTCHA | n8n节点操作 |
|---|---|
| reCAPTCHA v2(复选框) | reCAPTCHA v2 |
| reCAPTCHA v2(不可见) | reCAPTCHA v2 |
| reCAPTCHA v3 | reCAPTCHA v3 |
| Cloudflare Turnstile | Cloudflare Turnstile |
| Cloudflare Challenge | Cloudflare Challenge |
| GeeTest V3 | GeeTest V3 |
| GeeTest V4 | GeeTest V4 |
| DataDome | DataDome |
| AWS WAF | AWS WAF |
| MTCaptcha | MTCaptcha |
结论
OpenClaw + n8n + CapSolver管道提供了一个生产级的数据提取设置,其特点包括:
- 在您的AI代理请求时按需运行。
- 在计划时间自动运行,无需任何人工输入。
- 完全不需要浏览器或显示器。
- 完全隐藏CAPTCHA处理过程 — 对您和AI代理都不可见。
AI代理只需发出"提取数据"命令并接收干净的页面内容。CapSolver处理困难的部分,n8n协调流程,OpenClaw作为接口。
准备开始?注册CapSolver 并使用优惠码 OPENCLAW 在首次充值时获得额外6%的奖励!
常见问题
我需要告诉OpenClaw关于CapSolver或CAPTCHAs吗?
不需要。OpenClaw只是运行一个脚本,发送HTTP请求。n8n处理其余所有内容。您的AI代理并不知道CAPTCHAs — 它只需触发任务并读取结果。
我可以将其指向其他网站吗?
可以,但您可能需要调整的不仅仅是URL。每个网站提交CAPTCHA令牌的方式不同 — 有些使用表单字段,有些使用JSON正文,有些使用头或Cookie。参见上面的"适配工作流到您的目标网站"部分,了解需要检查和更改的完整说明。
如果目标网站使用Turnstile而不是reCAPTCHA怎么办?
将CapSolver节点的任务类型更改为 AntiTurnstileTaskProxyless。然后检查目标网站的网络请求,找到Turnstile令牌提交的位置 — 通常在名为 cf-turnstile-response 的隐藏表单字段中,但某些实现可能通过JSON正文、头或Cookie传递。
存储了多少结果?
这取决于您的存储选择。使用本地JSON文件,您可以存储任意数量。使用Google Sheets或数据库,每次运行都会无限追加一行。配置"保存结果"节点以匹配您的保留需求。
我可以使用cron作业而不是OpenClaw来触发吗?
可以 — 网络钩子端点只是一个HTTP POST。任何可以发送HTTP请求的内容都可以触发它:
bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
每次提取的成本是多少?
每次运行需要一个CapSolver信用点用于CAPTCHA解决。reCAPTCHA v2是其中最便宜的类型。查看当前定价 capsolver.com。
OpenClaw是免费的吗?
OpenClaw是开源的,可自行托管。您需要AI模型提供商的API信用点和CapSolver的CAPTCHA解决信用点。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

如何解决人工智能代理的CAPTCHA挑战:使用n8n、CapSolver和OpenClaw进行数据提取
学习如何使用n8n、CapSolver和OpenClaw自动化AI代理的验证码解决。构建一个无需浏览器自动化或手动步骤即可从受保护网站提取数据的服务器端流程。

Lucas Mitchell
20-Mar-2026

如何通过Vercel代理浏览器解决CAPTCHA – 使用CapSolver的分步指南
学习如何将CapSolver与Agent Browser集成,以处理验证码并构建可靠的AI自动化工作流程。

Ethan Collins
18-Mar-2026

将 CapSolver 与 Web MCP 集成:面向自主代理的指南
增强您的AI代理的网页自动化能力。本指南详细介绍了如何在Web MCP框架内集成CapSolver以实现高效的验证码破解,确保操作的可靠性和合规性。

Aloísio Vítor
17-Mar-2026

基于大模型的人工智能验证码:为什么它更适合企业场景
AI视觉模型如何重塑CAPTCHA识别,以及企业级求解器为何需要数据、规模和定制训练。

Ethan Collins
13-Mar-2026

WebMCP 与 MCP:对AI代理有什么区别?
探索WebMCP与MCP在AI代理中的关键差异,了解它们在网页自动化和结构化数据交互中的作用。学习这些协议如何塑造AI代理能力的未来。

Lucas Mitchell
13-Mar-2026

开OpenClaw 对比 Nanobot:选择你的AI代理用于自动化
比较 OpenClaw 和 Nanobot,两个领先的 AI 代理框架,以实现高效自动化。了解它们的功能、性能以及 CapSolver 如何增强其能力。

Ethan Collins
11-Mar-2026


