实战教程

n8n + CaptchaAI:无代码验证码解决工作流程

n8n 是一款开源工作流程自动化工具,具有本机循环支持,使其在验证码解决方面比 Zapier 更加灵活。您可以构建一个提交 → 轮询 → 使用自动重试直到解决完成的工作流程。


工作流程概述

Manual Trigger / Cron
    ↓
HTTP Request: Submit CAPTCHA
    ↓
Wait: 10 seconds
    ↓
Loop: Poll until solved
    ├── HTTP Request: Get result
    ├── IF: status == 1? → Exit loop
    └── Wait: 5 seconds → Loop again
    ↓
HTTP Request: Use token

节点1:提交验证码

添加 HTTP 请求 节点:

环境 价值
方法 POST
网址 https://ocr.captchaai.com/in.php
正文内容类型 Form URL Encoded

机身参数:

姓名 价值
key {{ $credentials.captchaaiApiKey }} 或对您的密钥进行硬编码
method userrecaptcha
googlekey 6Le-SITEKEY
pageurl https://example.com
json 1

回复:

{
  "status": 1,
  "request": "71823456"
}

节点2:等待

添加 Wait 节点:

环境 价值
等待时间 10
单元 Seconds

这使得求解器有时间在第一次轮询之前开始处理。


节点 3:轮询结果(带循环)

n8n 支持通过 Loop Over Items 节点进行循环,或通过将 IF 节点的 false 输出连接回前一个节点来进行循环。

选项 A:简单 IF 循环

添加 HTTP 请求 节点(轮询):

环境 价值
方法 GET
网址 https://ocr.captchaai.com/res.php
查询参数 keyaction=getid={{ $json.request }}json=1

将其连接到 IF 节点:

健康)状况 价值
值1 {{ $json.status }}
手术 Equal
值2 1
  • 真实输出 → 继续下一步操作(使用token)
  • 错误输出等待(5秒) → 返回Poll节点

选项B:代码节点

要进行更多控制,请使用 Code 节点:

const apiKey = 'YOUR_API_KEY';
const taskId = $input.first().json.request;

for (let i = 0; i < 24; i++) {
  await new Promise(r => setTimeout(r, 5000));

  const resp = await fetch(
    `https://ocr.captchaai.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`
  );
  const data = await resp.json();

  if (data.status === 1) {
    return [{ json: { token: data.request, taskId } }];
  }
  if (data.request !== 'CAPCHA_NOT_READY') {
    throw new Error(`CaptchaAI error: ${data.request}`);
  }
}

throw new Error(`Task ${taskId} timed out`);

节点4:使用token

添加另一个 HTTP Request 节点以使用已解析的令牌提交表单:

环境 价值
方法 POST
网址 https://staging.example.com/submit
正文内容类型 Form URL Encoded

身体参数包括您的表单数据以及:

姓名 价值
g-recaptcha-response {{ $json.token }}

安全存储 API 密钥

使用 n8n 的 Credentials 系统:

  1. 转到 凭据 → 添加凭据 → 标头身份验证
  2. 名称:CaptchaAI API Key
  3. 安全地存放密钥

或者使用环境变量

# In your n8n environment
export CAPTCHAAI_API_KEY="your_key_here"

节点中的引用:{{ $env.CAPTCHAAI_API_KEY }}


图像验证码工作流程

对于图像验证码,调整提交节点:

姓名 价值
method base64
body Base64 编码的图像(来自先前的节点或 URL)

要将图像 URL 转换为 n8n 中的 base64,请在提交之前添加 Code 节点:

const imageUrl = $input.first().json.imageUrl;
const resp = await fetch(imageUrl);
const buffer = Buffer.from(await resp.arrayBuffer());
const base64 = buffer.toString('base64');

return [{ json: { imageBase64: base64 } }];

余额检查工作流程

创建按计划运行的单独工作流程:

Cron (daily at 9 AM)
    ↓
HTTP Request: GET res.php?action=getbalance
    ↓
IF: balance < 5
    ↓
Slack / Email: "CaptchaAI balance low: $X.XX"

n8n 与 Zapier 验证码解决方案

特征 n8n 扎皮尔
Loop/retry 支持 本机(IF 循环、循环节点) 有限(仅限路径)
自托管选项 是(免费) 否(仅限云)
代码节点 完整的 JavaScript 有限的
成本 免费(自托管)或付费云 付费(每项任务)
易于设置 缓和 简单的

由于其循环支持和代码节点,n8n 更适合验证码工作流程。


故障排除

问题 原因 处理方式
轮询循环永远运行 无最大迭代次数限制 添加一个计数器变量,24次迭代后中断
CAPCHA_NOT_READY 不间断 第一次投票前的等待时间太短 将初始等待时间增加到 15-20 秒
令牌在下一个节点中不可用 错误的表达路径 检查 {{ $json.token }} 是否与输出匹配
未找到凭证 环境变量未设置 设置环境变量后重新启动 n8n

常问问题

我可以在一个工作流程中处理多个验证码吗?

是的。使用 Split In Batches 节点处理多个项目,每个项目都有自己的提交 → 轮询 → 使用流程。

n8n 支持旋转门吗?

是的。将 method 更改为 turnstile 并使用 sitekey 而不是 googlekey


将验证码解决构建到您的 n8n 工作流程中

获取您的 API 密钥:验证码网站


相关指南

该文章已禁用评论。