Getting Started

CaptchaAI 快速上手:5 分钟解决你的第一个验证码

本指南只做一件事:让你以最快速度发出第一次成功的 API 调用并拿回令牌。不讲理论,不长篇大论,直奔可运行的代码。

CaptchaAI 支持的所有验证码类型都遵循同一个四步模式:

  1. 提交 —— 把验证码参数发到 in.php
  2. 拿任务 ID —— 从响应里保存任务 ID
  3. 轮询 —— 每 5 秒查询一次 res.php,直到结果就绪
  4. 使用令牌 —— 把token 提交目标页面或请求

第 0 步:获取 API Key

  1. captchaai.com 注册账号
  2. 打开 仪表板
  3. 复制 32 位 API Key

账户必须有可用线程才能提交任务。如果在评估服务,可以联系客服申请试用线程。


第 1 步:提交一个验证码

下面用 Cloudflare Turnstile 演示——这是当前最常见的验证码类型之一。你需要从目标页面拿到两个输入:

  • sitekey —— Turnstile 控件的公开密钥(在 data-sitekey 属性或 Turnstile 脚本参数里,以 0x 开头)
  • pageurl —— 加载该控件的完整页面 URL

cURL

curl -X POST "https://ocr.captchaai.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=turnstile" \
  -d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
  -d "pageurl=https://staging.example.com/qa-login" \
  -d "json=1"

Python

import requests

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1,
})
print(response.json())

Node.js

const response = await fetch("https://ocr.captchaai.com/in.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    method: "turnstile",
    sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
    pageurl: "https://staging.example.com/qa-login",
    json: "1",
  }),
});
console.log(await response.json());

PHP

<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
    "key"       => "YOUR_API_KEY",
    "method"    => "turnstile",
    "sitekey"   => "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl"   => "https://staging.example.com/qa-login",
    "json"      => 1,
]));
echo $response;

第 2 步:保存任务 ID

成功响应:

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

request 字段是你的任务 ID,下一步要用到。

如果 status0,说明出错了。检查 request 字段里的错误码:

错误码 含义 解决方案
ERROR_WRONG_USER_KEY API Key 格式错误 确认 32 位 Key 没拼错
ERROR_KEY_DOES_NOT_EXIST API Key 不存在 在仪表板核对 Key
ERROR_ZERO_BALANCE 没有可用线程 充值或等待线程释放
ERROR_PAGEURL 缺少 pageurl 参数 补上完整页面 URL
ERROR_WRONG_GOOGLEKEY sitekey 为空或格式错误 重新提取 sitekey(Turnstile 以 0x 开头)

第 3 步:轮询结果

先等 15 秒,然后每 5 秒查询一次。

Python

import time

time.sleep(15)

while True:
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": "71823469",
        "json": 1,
    }).json()

    if result.get("request") == "CAPCHA_NOT_READY":
        time.sleep(5)
        continue

    if result.get("status") == 1:
        token = result["request"]
        print(f"Solved! Token: {token[:60]}...")
        break

    raise RuntimeError(result)

Node.js

await new Promise((r) => setTimeout(r, 15000));

while (true) {
  const r = await fetch(
    `https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
  );
  const data = await r.json();
  if (data.request === "CAPCHA_NOT_READY") {
    await new Promise((r) => setTimeout(r, 5000));
    continue;
  }
  if (data.status === 1) {
    console.log("Solved:", data.request.slice(0, 60));
    break;
  }
  throw new Error(JSON.stringify(data));
}

第 4 步:使用令牌

不同验证码类型,注入方式略有不同:

  • Turnstile / reCAPTCHA:写入 cf-turnstile-responseg-recaptcha-response 文本域,或调用页面回调函数。
  • 图像 OCR:把识别出的文本填入答案输入框。
  • GeeTest / FunCaptcha:把返回的多个字段按页面要求拼装。

最简单的浏览器内注入示例:

document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();

常见踩坑

  • API Key 复制时带了空格 —— 删干净再用。
  • pageurl 漏了协议头 —— 必须是 https:// 开头的完整地址。
  • 首次轮询太早 —— 务必先等 15 秒,否则只是浪费请求。
  • 轮询过于频繁 —— 5 秒一次足够,更快不会更早出结果。
  • 线程已用完 —— 看 常见错误码 与你的套餐线程数。

下一步

按你最常遇到的验证码类型继续:

  • 使用 API 解决 reCAPTCHA v2
  • 使用 API 解决 Cloudflare Turnstile
  • 使用 API 解决 GeeTest v3
  • 使用 API 解决图像验证码

立即在 captchaai.com/api.php 获取你的 API Key,5 分钟内完成第一次成功求解。

该文章已禁用评论。