跳到主要内容
NexCaptcha

迁移指南

从 CapSolver 迁移过来

同为任务式接口,请求结构可直接映射,任务类型名按对照表改四五个。计费只按目标站点接受的 token 算,被拒与超时当小时自动退回余额。

接口兼容性轻量适配,概念一致、字段名不同

他们做得好的地方

  • 在 Cloudflare 这一块的价格是全场最低,差距还不小,直说:Turnstile 和完整的 5秒盾过盾都是每千次 $1.20。我们这两项分别是 $2.18 和 $4.49,Anti-Captcha 干脆不卖完整过盾。
  • 识别类任务是 createTask 同步返回结果的,没有 taskId,没有轮询,没有第二次往返。这份名单里只有它这么做,跑大批量 OCR 的场景,请求数直接减半,p99 也明显降下来。
  • ImageToText 和 reCAPTCHA 图像分类每千次 $0.40,除了 CapMonster 的 ComplexImage,是这里最便宜的图像识别。我们是 $0.75。
  • VisionEngine 是实打实的差异化能力,一个通用视觉接口,专门接那些还没有专门任务类型的点选、识图题,每千次 $1.50。
  • 官方周边工具是这几家里最全的:带开发者计划的浏览器插件,Puppeteer、Playwright、Selenium 的集成,proxy 与 cookie 的专门文档,SDK,还有给 LLM 自动化用的 agent 工具和 MCP 服务,这份名单里没有第二家做到。
  • 它的 DataDome 文档写得相当坦白,会告诉你 captchaUrl 里出现 t=bv 说明你的 IP 已经被封了,会强调 userAgent 必须一模一样,还解释了为什么固定 IP 的 proxy 比轮换 IP 好用。在一个大多数人只写营销话术的行业里,这是真的在讲运维细节。

不足之处

  • 公开价目表一共 14 个任务类型,就这些。我们是 33 个,2Captcha 的表有 48 行。
  • 没有 hCaptcha。它公开的任务类型表和价目表里都没有这一项,不管第三方对比文章怎么写。目标站点用 hCaptcha,CapSolver 就接不了。
  • FunCaptcha / Arkose Labs 也没有,同样是任务列表和价目表里都查不到。
  • KeyCaptcha、Capy、Lemin、CyberSiARA、Cutcaptcha、Friendly Captcha、atbCAPTCHA、腾讯防水墙、Prosopo、Altcha、Imperva、阿里,以及所有国产验证码,一个都没有。
  • 核心接口没有公开的 callbackUrl,token 类任务只能轮询。量一大这就是实实在在的成本,跑 serverless 的架构还特别别扭。
  • MtCaptcha $3.00、ReCaptchaV3Enterprise $3.00,是它自己表里最贵的两行,也明显高于这两个题型的行情,我们这边都是 $2.18。
  • 差评主线集中在计费和账务:Trustpilot 122 条评价 3.0 分,一星占 21%,大部分是充值扣款成功但余额没到账,加上一条被反复提到的严格不退款政策。公平地说,CapSolver 对约 91% 的差评都有回复,而且这些投诉几乎没有一条是说识别质量的。

[ 02 ]逐项对比

逐项对比

逐项对比
CapSolverNexCaptcha
公开价格14 行价目。Turnstile 与 5秒盾过盾都是 $1.20,ImageToText $0.40,MtCaptcha $3.00。33 行价目。Turnstile $2.18,5秒盾过盾 $4.49,图形题 $0.75,MTCaptcha $2.18。
公开延迟token 类任务文档写的是 1 到 10 秒,识别类任务 createTask 同步返回。每个题型公开 p50 与 p95,整体 p50 4.8 秒、p95 11.2 秒,所有任务都走轮询。
公开识别成功率没有公开。按题型公开,整体 99.4%,口径是目标站点接受的 token。
怎么算识别成功返回 token 即算,它自己的 DataDome 文档也写了返回的 cookie 仍可能被 403。目标站点接受 token 才算成功,计费也按这个口径。
识别失败怎么计费识别不出返回 status: failed,充值余额按其公开政策不退。被拒、失败、超时都不计费,当小时自动退回余额。
接口兼容性请求结构一样,类型名自成一套,AntiTurnstileTaskProxyLess、DatadomeSliderTask、VisionEngine。用 Anti-Captcha 的标准类型名,改四五个字符串常量,其他不动。
技术支持响应对约 91% 的差评有回复,但没有公开响应时间承诺。7x24 工程师值守,Telegram 首次响应中位数 7 分钟。

[ 03 ]代码改动

代码改动

CapSolver 用的是 Anti-Captcha 的请求外壳,里面换了一套自己的词。传输层和我们完全一样,JSON POST 到 /createTask 和 /getTaskResult,clientKey 放 body 里,发出去是 errorId / taskId,收回来是 errorId / status / solution,所以你的 HTTP 层、错误处理、结果解析都不用动。不一样的是任务类型名:CapSolver 把 ProxyLess 里的 L 写成大写,ReCaptcha 里的 C 也是大写,还有 AntiTurnstileTaskProxyLess 这种带 Anti 前缀的名字,以及 DatadomeSliderTask 这种一次性命名。要动的是四五个字符串常量,另外要确认的是它那条同步返回的识别通道,这边没有对应。请求里要改的还是只有 base URL 这一行,但任务类型常量里的字符串要跟着改。

改之前
const task = { type: TURNSTILE_TASK, websiteURL, websiteKey };
const res = await fetch("https://api.capsolver.com/createTask", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, task }),
});
改之后
const task = { type: TURNSTILE_TASK, websiteURL, websiteKey };
const res = await fetch("https://api.nexcaptcha.net/createTask", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, task }),
});

怎么迁移

  1. 01把现有客户端指到 https://api.nexcaptcha.net/createTask,换掉 clientKey 的值,appId 直接删掉,这边没有对应字段。
  2. 02把 CapSolver 自己那套任务类型名改过来:AntiTurnstileTaskProxyLess 改成 TurnstileTaskProxyless,ReCaptchaV2TaskProxyLess 改成 RecaptchaV2TaskProxyless,ReCaptchaV3TaskProxyLess 改成 RecaptchaV3TaskProxyless,DatadomeSliderTask 改成 DataDomeTask,AntiAwsWafTask 改成 AmazonTaskProxyless,AntiCloudflareTask 对应我们的 5秒盾过盾任务。注意 ProxyLess 里的大写 L 和 ReCaptcha 里的大写 C 都要改。
  3. 03识别类任务要补一个轮询循环。ImageToTextTask、ReCaptchaV2Classification、AwsWafClassification 在 CapSolver 是 createTask 同步出结果的,这边所有任务都走 getTaskResult,直接从创建接口的返回里读 solution 的代码会拿到空值,而且不会报错。
  4. 04proxy 和 cookie 参数要转换。CapSolver 的 proxy 是一整个字符串,cookies 是 name=value; 这种串,我们跟的是 Anti-Captcha 那套结构化字段,proxyType、proxyAddress、proxyPort、proxyLogin、proxyPassword 分开写。十行代码的事,写一次就够。
  5. 05先灰度一周,按题型比目标站点接受率,不要比标价。Cloudflare 5秒盾这一行我们明显更贵,$4.49 对它的 $1.20,这一项只看实测接受率决定,别看别的。

[ 04 ]关于这一项的常见问题

关于这一项的常见问题

多数代码库就是四五个字符串常量,因为 CapSolver 的请求外壳和我们本来就是同一套。AntiTurnstileTaskProxyLess 改 TurnstileTaskProxyless,ReCaptchaV2TaskProxyLess 改 RecaptchaV2TaskProxyless,ReCaptchaV3TaskProxyLess 改 RecaptchaV3TaskProxyless,DatadomeSliderTask 改 DataDomeTask,AntiAwsWafTask 改 AmazonTaskProxyless。如果这些字符串是散在每个调用点里写死的,那才是真正的迁移成本,建议先把它们收到一个模块里。

这条路径会静默失效。ImageToTextTask、ReCaptchaV2Classification、AwsWafClassification 在 CapSolver 是 createTask 同步返回结果的,我们这边所有任务都走 getTaskResult,创建接口只返回 taskId 不返回 solution,你的解析代码读到的是 undefined,也不会抛错。轮询循环要在切流量之前补上,不是之后。这边图形题 p50 是 1.9 秒、p95 是 3.6 秒,这个循环很短。

在它有报价的题型上不便宜。Turnstile 它 $1.20,我们 $2.18;5秒盾过盾它 $1.20,我们 $4.49;图像识别它 $0.40,我们 $0.75。多出来的钱买的是能对账的计费口径:只有目标站点接受了 token 才算一次成功,被拒、失败、超时当小时自动退回余额,不用跟客服扯皮。另外还有按题型公开的 p50 与 p95,以及 33 个题型而不是 14 个,包括它完全接不了的 hCaptcha 和 Arkose。

考虑到要改类型名,这就是推荐的切法。先把 hCaptcha 和 Arkose 的流量切过来,这两类 CapSolver 根本不卖,没有可比性。然后挑一个一直在重试的题型切过来,Turnstile 和 5秒盾先留在它那边,边跑边测,这两项按每块钱换到多少个被接受的 token 来决定,别只看单价。

第一千次识别,我们请。

创建密钥,粘进上面的示例代码,看着真实的 token 返回。不用绑卡,没有销售电话。