Comparisons

CaptchaAI 与 CapSolver 对比:定价与识别速度实测

CaptchaAI 和 CapSolver 都是按 API 调用的验证码识别服务,但计费逻辑完全不同:CaptchaAI 按线程包月、每个线程识别次数不限,CapSolver 按识别次数计费、量越大账单涨得越快。想直接看结论就往下翻,完整对比在功能覆盖、定价、识别速度、API 设计四个维度展开。

该选 CaptchaAI 还是 CapSolver?

选 CaptchaAI 的场景

  • 你需要识别 BLS 或网格图片验证码
  • 你想在常见类型上拿到更低的单价
  • 你更喜欢简单的 REST API,不想拼 JSON 请求体
  • 识别速度对你的流程很关键
  • 你在做轻量集成,不想依赖外部 SDK

选 CapSolver 的场景

  • 你需要识别 AWS WAF 或 DataDome 验证码
  • 团队更习惯基于 JSON 的 API 和类型化任务对象
  • 你需要官方 Go SDK
  • 你已经在用 CapSolver,迁移成本划不来

功能与类型覆盖对比

功能 CaptchaAI CapSolver
reCAPTCHA v2
reCAPTCHA v3
reCAPTCHA Enterprise
Cloudflare Turnstile
Cloudflare Challenge
GeeTest v3
GeeTest v4 ❌(即将支持)
图片/OCR 验证码
BLS CAPTCHA
计费模式 线程制(无限次识别) 按次计费
免费试用
API 风格 REST(GET/POST) JSON POST
回调支持

以下数字基于公开资料与内部观测样本,仅供参考。实际结果会因运行环境、任务量和时间而不同,请在自有环境中测量。

两家都覆盖主流验证码类型,差异集中在小众类型:

只有 CaptchaAI 支持:

  • BLS CAPTCHA——签证预约类网站常用的多图验证码,最多接受 9 张带说明的图片,返回正确的图片索引。
  • 网格图片验证码——比标准 reCAPTCHA 九宫格更复杂的自定义网格选择挑战。

只有 CapSolver 支持:

  • AWS WAF 验证码——CapSolver 支持 Amazon WAF 的验证挑战。
  • DataDome——CapSolver 能处理 DataDome 的间隙式验证码。

按你实际会遇到的验证码类型来选,多数抓取和自动化场景里 CaptchaAI 的覆盖已经够用。

识别速度对比

验证码类型 CaptchaAI CapSolver(参考)
reCAPTCHA v2 <60 秒 15–30 秒
reCAPTCHA v3 <4 秒 10–20 秒
Cloudflare Turnstile <10 秒 10–20 秒
图片/OCR <0.5 秒 5–10 秒

CaptchaAI 的数字是官方 SLA 上限,多数情况下实际更快。图片验证码上两家表现接近,瓶颈在 OCR 处理本身。

定价对比:线程制 vs 按次计费

下表是两家在常见验证码类型上的每 1000 次起步单价:

验证码类型 CaptchaAI(每 1000 次起) CapSolver(每 1000 次起)
图片/OCR $0.50 $0.80
reCAPTCHA v2 $1.00 $1.50
reCAPTCHA v3 $1.20 $1.80
Cloudflare Turnstile $1.00 $1.50
Cloudflare Challenge $2.00 $2.50

reCAPTCHA 和 Turnstile 这类高频类型上,线程制优势最明显——量越大,优势越大。

大批量场景下的费用测算

假设你在东南亚做电商价格监控,团队分布在新加坡和吉隆坡,每月要处理 100 万次 reCAPTCHA v2——中大型抓取项目的常见规模。按 CapSolver 约 $1.50/1000 次的公开单价,对比 CaptchaAI 按并发峰值配置的套餐:

每月 reCAPTCHA v2 量 CapSolver 费用(按次计费) CaptchaAI 套餐 CaptchaAI 费用 节省幅度
10,000 次 约 $15 BASIC(5 线程) $15 打平
100,000 次 约 $150 BASIC(5 线程) $15 约 90%
1,000,000 次 约 $1,500 ADVANCE(50 线程) $90 约 94%
10,000,000 次 约 $15,000 ENTERPRISE(200 线程) $300 约 98%

超过每月 1 万次识别之后,线程制在结构上更便宜,识别量越大差距越大。以上均为起步单价,实时套餐价格请以官网为准。

API 设计:REST 查询参数 vs JSON POST

CaptchaAI —— REST 查询参数

import requests

# Submit task
resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com"
})
task_id = resp.text.split("|")[1]

CapSolver —— JSON POST

import requests

# Submit task
resp = requests.post("https://api.capsolver.com/createTask", json={
    "clientKey": "YOUR_KEY",
    "task": {
        "type": "ReCaptchaV2TaskProxyLess",
        "websiteURL": "https://example.com",
        "websiteKey": "SITE_KEY"
    }
})
task_id = resp.json()["taskId"]

CaptchaAI 用 GET 参数,你直接用浏览器或者 curl 命令就能测试。CapSolver 走 JSON,需要自己拼请求体,好处是类型定义更结构化。

完整识别流程示例

CaptchaAI(Python)

import requests
import time

API_KEY = "YOUR_API_KEY"

def solve_recaptcha(site_key, page_url):
    # Submit
    resp = requests.get("https://ocr.captchaai.com/in.php", params={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": site_key,
        "pageurl": page_url
    })
    if not resp.text.startswith("OK|"):
        raise Exception(f"Submit failed: {resp.text}")
    task_id = resp.text.split("|")[1]

    # Poll
    for _ in range(60):
        time.sleep(5)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": API_KEY,
            "action": "get",
            "id": task_id
        })
        if result.text == "CAPCHA_NOT_READY":
            continue
        if result.text.startswith("OK|"):
            return result.text.split("|")[1]
        raise Exception(f"Solve failed: {result.text}")
    raise TimeoutError("Solve timed out")

token = solve_recaptcha("6Le-wvkS...", "https://example.com")

CapSolver(Python)

import requests
import time

API_KEY = "YOUR_KEY"

def solve_recaptcha(site_key, page_url):
    resp = requests.post("https://api.capsolver.com/createTask", json={
        "clientKey": API_KEY,
        "task": {
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteURL": page_url,
            "websiteKey": site_key
        }
    })
    task_id = resp.json()["taskId"]

    for _ in range(60):
        time.sleep(5)
        result = requests.post("https://api.capsolver.com/getTaskResult", json={
            "clientKey": API_KEY,
            "taskId": task_id
        })
        data = result.json()
        if data["status"] == "processing":
            continue
        if data["status"] == "ready":
            return data["solution"]["gRecaptchaResponse"]
        raise Exception(f"Failed: {data}")
    raise TimeoutError("Solve timed out")

token = solve_recaptcha("6Le-wvkS...", "https://example.com")

两边都是“提交任务 → 轮询结果”的模式,代码行数和复杂度差不多。

开发者体验对比

维度 CaptchaAI CapSolver
文档 清晰,带代码示例 结构化,附 SDK
错误信息 纯文本错误码 JSON 错误对象
控制台 余额、用量统计 余额、用量统计、日志
支持渠道 邮件 + 文档 邮件 + Discord
SDK Python、Node.js Python、Node.js、Go

CapSolver 官方 SDK 包更多一些,CaptchaAI 的 API 简单到多数场景不需要 SDK。

从 CapSolver 迁移到 CaptchaAI

  1. CaptchaAI 官网 注册账号
  2. https://api.capsolver.com/createTask 换成 https://ocr.captchaai.com/in.php
  3. 把 JSON 任务对象改成查询参数: - "type": "ReCaptchaV2TaskProxyLess"method=userrecaptcha - "websiteKey"googlekey - "websiteURL"pageurl
  4. 响应解析从 JSON 改成管道分隔格式
  5. getTaskResult 调用换成 res.php?action=get&id=TASK_ID

常见问题

GeeTest v4 现在支持吗?

目前还不支持,CaptchaAI 已支持 GeeTest v3,v4 属于即将支持。如果目标站点已经升级到 v4,现阶段 CapSolver 覆盖更全。

切换到 CaptchaAI 需要停机吗?

不需要。先把 CaptchaAI 配置成并行识别器,验证跟你现有集成是否兼容,确认无误后再把流量切过去。两家都是“提交 → 轮询”模式,不用改架构。

CaptchaAI 和 CapSolver 哪个识别准确率更高?

两家官方都不公布具体的准确率数字,只强调“支持类型上有高成功率”。多数场景下这点差异感知不到,真正影响成本的是计费模式,而不是准确率。

CaptchaAI 的线程套餐怎么选,会不会太小?

线程数决定并发上限,不是识别次数上限——同一线程能连续处理不限次数的识别请求。按峰值并发估算套餐,而不是按月识别总量;多数中小规模抓取用 BASIC 或 STANDARD 就够,并发涨了再升级线程数。

相关指南

该文章已禁用评论。