跳到主要内容
NexCaptcha

迁移指南

从 DeathByCaptcha 迁移过来

它自带 2Captcha 兼容接口,迁出同样只改一个 base URL。hCaptcha 与 Arkose 无报价,其余统一 $2.89 每千次,延迟与成功率未公开。

接口兼容性完全兼容,换域名即可

他们做得好的地方

  • 自带三套兼容接口:2Captcha 的 in.php / res.php、Antigate 以及 DeCaptcher,老代码不用改就能接进去。整个行业只有它把迁入这件事做到这个程度。
  • 除 HTTP 之外还保留一套 socket 接口(TCP 8123–8130),跑大批量图片识别确实比轮询快,做批量 OCR 的团队至今还在用它。
  • 客户端库覆盖到 C、C++、Perl 这些冷门语言,老式桌面自动化和早期爬虫框架在别家基本找不到现成 SDK。
  • 绝大多数 token 题型统一 $2.89 每千次,不按竞价浮动、不分 score 档位、Arkose 也没有开放式上限,预算好估。
  • 音频验证码 $0.59 每千次,比我们的 $0.75 便宜;图形验证码从 $0.99 起。
  • 部分支付渠道充值有 25%–30% 的赠送额度,预充值的话实际单价还能再降一截。

不足之处

  • 文档和官方 SDK 至今把 username + password 当作首选鉴权方式,账号密码会出现在配置文件、日志以及链路上的每一个 proxy 里。authtoken 虽然有,但只是备选路径。
  • socket 接口要求出网访问 TCP 8123–8130,容器、Serverless 和大多数企业内网都出不去这几个端口。
  • $2.89 每千次对纯 ML 就能过的题型偏贵,同样一个 Turnstile token,CapSolver 报 $1.20、CapMonster 报 $1.30。
  • 上传图片限制 180 KB,base64 限制 120 KB,高分辨率截图必须先在客户端压一遍。
  • token 类题型是后来加在图片识别架构上的,官方文档里有几种至今仍标着 BETA。
  • hCaptcha 和 FunCaptcha / Arkose 根本没有公开报价,有用户反馈微软和亚马逊在用的那套 Arkose 过不去。
  • 支持响应慢是它最长期的抱怨,2018、2019、2023、2024 年都有人提到在线客服常年离线、邮件没人回。不过它在 Trustpilot 上总共只有 7 条评价,比例没有统计意义,值得看的是这个时间跨度。

[ 02 ]逐项对比

逐项对比

逐项对比
DeathByCaptchaNexCaptcha
公开价格主流 token 题型统一 $2.89 每千次,hCaptcha 与 Arkose 没有报价。33 种题型,$0.75 到 $4.49 每千次,统一美元标价,所有访客同一张表。
公开延迟没有公开,文档只要求轮询间隔不低于两秒。每个题型公开 p50 与 p95,整体 p50 4.8 秒、p95 11.2 秒。
公开成功率任何题型都没有公开识别成功率。按题型公开,整体 99.4%,口径是 token 被目标站点接受。
什么算识别成功接口返回了答案就算,被目标站点拒掉的情况文档没写。目标站点接受 token 才算,只是返回不算。
失败怎么计费价格页没有说明失败是否计费。识别失败不计费,被拒与超时的当小时自动退回余额。
接口兼容性原生是 multipart 上传加 socket,外面包了 2Captcha 与 Antigate 兼容层。createTask / getTaskResult,clientKey 放在请求体,任务类型名通用。
支持响应2018、2019、2023、2024 年都有邮件无人回复、在线客服离线的反馈。7×24 由工程师值守,Telegram 首次响应中位数 7 分钟。

[ 03 ]代码改动

代码改动

DeathByCaptcha 自己的接口是图片优先的:multipart/form-data 提交到 /api/captcha,再 GET 轮询 /api/captcha/<id>,每个请求都带 username 和 password(或 authtoken),另外还有一套跑在 TCP 8123–8130 上的 socket 协议。在这之上它主动提供了兼容层,/2captcha/in.php 与 /2captcha/res.php 走 2Captcha 的参数,api.dbcapi.me/in.php 走 Antigate 的参数,目的就是让别家用户不改代码迁进来。大部分存量代码跑在这两个兼容接口上,所以迁出同样只是换一个 base URL 常量,只有原生接口和 socket 用户需要真的改代码。

改之前
const client = new Solver({
apiKey: process.env.SOLVER_KEY,
baseURL: "http://api.deathbycaptcha.com/2captcha",
});
const token = await client.recaptchaV2(sitekey, pageUrl);
改之后
const client = new Solver({
apiKey: process.env.SOLVER_KEY,
baseURL: "https://api.nexcaptcha.net",
});
const token = await client.recaptchaV2(sitekey, pageUrl);

怎么迁移

  1. 01把现有客户端的 base URL 指向 api.nexcaptcha.net,换掉 API key。如果你用的是它的 2Captcha 或 Antigate 兼容接口,改这一个常量就迁完了。
  2. 02确认 HTTP 客户端没有写死 http://。它的兼容接口是明文 HTTP,我们这边只接受 HTTPS。
  3. 03如果调的是原生接口,把 multipart 图片上传改成 JSON createTask,图片用 base64 放进 task.body;轮询从 GET /api/captcha/<id> 改成 POST /getTaskResult,判断条件从 text 字段是否为空改成读 status 的 processing / ready。
  4. 04迁完之后把 DeathByCaptcha 的账号密码改掉。它在你发过的每一个请求体里都出现过,按已泄露处理比较稳妥。
  5. 05还在用 socket 接口的话一起换到 443 端口的 HTTPS,防火墙上 TCP 8123–8130 的放行规则可以删掉,180 KB 的图片大小限制和客户端压图也跟着没有了。

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

关于这一项的常见问题

可以,也建议这么做。DeathByCaptcha 的客户端先别拆,按比例分一部分流量到 api.nexcaptcha.net,用你自己的目标站点对比识别成功率和耗时,数据对得上再全量切。我们这边不要求独占接入,走兼容接口的话切换本身也就一个下午。

走 2Captcha 或 Antigate 兼容接口的话不用改,参数名一一对应。走原生图片接口的只有一处要改:multipart 上传改成 ImageToTextTask,图片 base64 放进 task.body。

转不过来。双跑期间先把那边的余额用完,等余额接近零再关账号。这也是建议灰度切而不是一次性切的主要原因。

大部分题型更便宜,少数更贵。reCAPTCHA v2 我们 $1.50、它 $2.89,Turnstile $2.18 对 $2.89,DataDome 和 AWS WAF 也是 $2.18 对 $2.89。但极验三代四代我们 $4.49、它 $2.89,腾讯防水墙、Capy 同样是它便宜,音频题型我们 $0.75、它 $0.59。真正的差别不在单价:我们每个题型都公开 p50、p95 和识别成功率,被拒的 token 自动退回余额,这两个数字它一个都没公开。

第一千次识别,我们请。

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