Comparisons

为什么开发人员从 2Captcha 转向 CaptchaAI

先说结论:换到 CaptchaAI,代码上只要改一行 endpoint。两边都是 in.php 提交、res.php 轮询,参数名和返回结构一致。

要评估的不是迁移成本,而是三件事:识别耗时、v3 分数、Cloudflare Challenge 和 BLS 的覆盖。


能力对照表

以下为公开资料与内部观测样本的参考值,请在自有环境中实测。

能力 CaptchaAI 2Captcha
reCAPTCHA v2
reCAPTCHA v3 ✅ 可指定 action 部分支持
reCAPTCHA Enterprise
Cloudflare Turnstile 部分支持
Cloudflare Challenge
GeeTest v3
GeeTest v4 ❌(即将支持)
hCaptcha ❌ 暂不支持
FunCaptcha(Arkose Labs) ❌ 暂不支持
BLS CAPTCHA
图片 / OCR ✅ 27,500+ 种变体
CaptchaFox / Friendly Captcha / Lemin ✅(测试版)

开发者最常给出的 5 个理由

1. 识别耗时:模型识别 vs 人工打码

2Captcha 以人工打码为主,队列长度决定等待时间。

类型 CaptchaAI(官方 SLA 上限) 2Captcha(社区实测区间)
reCAPTCHA v2 <60 秒 20–60 秒
图片验证码 <0.5 秒 8–20 秒
Cloudflare Turnstile <10 秒 15–40 秒
GeeTest v3 <12 秒 无公开区间

人工打码有排队和换班,夜里和周末在线人数少,耗时就会拉长。

2. reCAPTCHA v3:分数够不够过阈值

v3 不看解没解出来,看分数。站点阈值常见 0.5,严的到 0.7,而 2Captcha 的 v3 token 常落在 0.1–0.3。CaptchaAI 提交时可以指定 versionaction

# CaptchaAI — control the v3 score
import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "version": "v3",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "action": "login",
    "json": 1,
})

action 必须和页面里 grecaptcha.execute() 传的值一致,写错了分数照样掉。

3. BLS 验证码:2Captcha 没有的类型

做签证预约、政府门户自动化的团队,多半是被 BLS CAPTCHA 逼着换服务的。

# CaptchaAI — BLS CAPTCHA with a high success rate
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "bls",
    "pageurl": "https://bls-portal.example.com",
    "sitekey": "BLS_SITE_KEY",
    "json": 1,
})

参数结构和 reCAPTCHA 一样,只是 method 换了个名字。

4. Cloudflare 要覆盖两层

类型 CaptchaAI 2Captcha
Turnstile ✅ SLA <10 秒 部分支持
Challenge 挑战页 ✅ SLA <15 秒
JS 挑战

拦住爬虫的往往不是 Turnstile,而是那张 Challenge 挑战页。

5. 接口格式与 2Captcha 兼容

# 2Captcha original
ENDPOINT = "https://2captcha.com"

# CaptchaAI — just change the URL
ENDPOINT = "https://ocr.captchaai.com"

# Same API format, same parameters, same response structure

CAPCHA_NOT_READY 等状态串也一致,轮询和超时逻辑原样保留。


迁移前后的运行记录

自有 QA 采集流水线切换前后的对照,仅作参考,实际结果随环境变化。

迁移前(2Captcha)

Pipeline: 500 pages/hour
Avg solve time: 35s
Failure rate: 8%
Peak hour solve: 60-90s
Monthly cost: $300

Night shift: Slow (fewer workers)
Weekends: Slower (fewer workers)
Flash sales: Breaks (demand spike)

迁移后(CaptchaAI)

Pipeline: 1,200 pages/hour
Avg solve time: 12s
Failure rate: 3%
Peak hour solve: 12-15s
Monthly cost: $280

Night shift: Same speed
Weekends: Same speed
Flash sales: Same speed

月成本几乎没动($300 → $280),吞吐量翻了一倍多。差别在等待时间:平均识别耗时从 35 秒降到 12 秒,同样的线程数能跑完更多任务。按线程包月、套餐内识别次数不限,吞吐涨了账单也不跟着涨。


中文开发者的两个额外考量

  • 国内站点大多是极验(GeeTest)、易盾、防水墙,reCAPTCHA 和 Turnstile 更多出现在出海项目上。先把类型列清楚,再对照上面的表。
  • reCAPTCHA 的前端脚本挂在 Google 域名下,国内加载不稳定,但这只影响本地调试——提交 googlekeypageurl 是纯服务端 API 调用。采集类项目另外守住授权边界:《网络安全法》《数据安全法》和 PIPL 都要求只采集你有权采集的数据。

切换清单

  1. 注册 CaptchaAI,在控制台拿到 API Key。
  2. endpoint 常量改成 https://ocr.captchaai.com,key 换成新的。
  3. 旧任务继续用 2Captcha 余额,新任务走 CaptchaAI,并行跑一周。
  4. 对比识别耗时和失败率,再全量切过来。
import requests
import time

# Only these two lines change:
API_KEY = "YOUR_CAPTCHAAI_KEY"
API_URL = "https://ocr.captchaai.com"

def solve_recaptcha(sitekey, pageurl):
    resp = requests.post(f"{API_URL}/in.php", data={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "json": 1,
    })
    task_id = resp.json()["request"]

    for _ in range(60):
        time.sleep(5)
        result = requests.get(f"{API_URL}/res.php", params={
            "key": API_KEY, "action": "get",
            "id": task_id, "json": 1,
        })
        data = result.json()
        if data["request"] != "CAPCHA_NOT_READY":
            return data["request"]

    raise TimeoutError("Solve timeout")

只有开头两行常量变了,轮询逻辑完全不动。


故障排查

  • 速度和以前一样:请求还打在 2captcha.com,确认 endpoint 是 ocr.captchaai.com
  • API Key 被拒:还在用 2Captcha 的 key,到控制台重新申请。
  • Turnstile 任务失败:method 名写旧了,改成 method=turnstile

常见问题

CaptchaAI 是按次收费还是按线程收费?

按线程包月:BASIC $15/月(5 线程)、ADVANCE $90/月(50 线程),最高到 VIP-3 $7,500/月(5,000 线程)。套餐内识别次数不限,也不按类型加价,选档看的是并发量。

hCaptcha 和 GeeTest v4 能用 CaptchaAI 识别吗?

都不支持。GeeTest v4 官方标注为即将支持,现在可用的是 v3。CaptchaFox、Friendly Captcha、Lemin 属于测试版,上生产前先小批量验证。

迁移期间两家能同时跑吗?

能,也建议这么做。接口格式一致,用一个环境变量控制 endpoint 就能来回切。

v3 分数一直上不去怎么办?

先核对 action 与页面是否一致,再确认 pageurl 写的是真正触发验证码的页面。


相关指南

想知道差距有多大?免费试用 CaptchaAI,把 endpoint 换掉,用现有代码跑一轮对比。

该文章已禁用评论。