跳到主要内容
NexCaptcha

迁移指南

从穿云 API 迁移过来

同样是 header 驱动的网关,x-cb-* 按名改成 x-nc-* 就能切。还多过 DataDome、Akamai,页面中间弹的 reCAPTCHA、极验 由网关在链路里直接解。

接口兼容性自有接口,需要一层薄封装

他们做得好的地方

  • 它解决的是另一类问题,而且是更难的一类:Cloudflare 的 5秒盾 JS 挑战和 Incapsula,直接在 HTTP 传输层过掉,返回的是目标页面本身,不是一个还要你自己带对指纹去重放的 token。
  • 协议级实现,不起 Chromium。每个并发不用占一个浏览器进程,CPU 和内存开销比 Selenium、Puppeteer、Playwright 那套低一个量级,容器化也干净。
  • 接入对采集代码来说几乎没有成本:请求本身不动,把 host 换掉、加两个 header 就行。官方 Python SDK 是个仿 requests 的 Session 对象,绝大多数调用点不用改。
  • 指纹控制直接做成 header 暴露出来,x-cb-fp 指定 TLS 与浏览器指纹,origin、referer、cookie、User-Agent 都能覆盖。多数 token 平台把这一层藏起来,结果就是 token 拿到了、指纹对不上、照样被拦。
  • x-cb-part 会话分区(0–999)设计得很聪明:过一次盾之后十分钟内复用同一个会话,每个请求从 3 个积分降到 1 个,适合一次过盾、批量抓很多页的场景。
  • 中文市场做得扎实:中文文档、中文技术支持、支付宝和 USDT 充值,本地品牌认知也在。海外平台这一块基本是空白。
  • V1 自带轮换代理池,简单场景连代理都不用配。错误码文档写得完整,还提供在线代码生成器,付钱之前就能先测目标站点通不通。

不足之处

  • 只覆盖 Cloudflare、Turnstile 和 Incapsula 三种。我们的自动化 API 是同一种用法,除这三种之外还过 DataDome、Akamai、Kasada、PerimeterX、AWS WAF;流程中间弹出来的 reCAPTCHA、hCaptcha、极验,网关会直接调识别引擎在链路里解掉再往下走。它那边撞到嵌在页面里的验证码只能返回 UNSUPPORTED_CAPTCHA,你得再接一家打码平台,这是两者最大的差别。
  • 积分会过期。官方 FAQ 原话是,穿云API积分在有效期内没用完就会清空,套餐 30 天有效,充值按最早的积分先扣。另外 V2 过盾成功后先扣 2 个积分,之后响应报错这 2 个积分不退,这一条也写在它的计费文档里。
  • 真正能过 JS 挑战和 Turnstile 的 V2 不带代理,必须自己买带会话保持的 IP。所以实际成本是积分加流量两笔,官网那句每 1000 个验证 $0.35 起没有把流量算进去。
  • 所有套餐的并发上限都是 30 次/秒,包括 $1,056 那一档,这是官方 FAQ 写明的。
  • 官方 FAQ 明确说不支持 Selenium 和 Puppeteer,因为整条链路里根本没有浏览器。流水线是浏览器驱动的话完全用不了。
  • V2 的会话锁会带来并发 bug,错误码表里就有 CHALLENGE_LOCK_OCCUPIED 和 CHALLENGE_LOCK_TIMEOUT,两个线程用同一个 part 就会撞上。你得自己写一套 part 分配池,上限 1000 个。
  • 官方 FAQ 说明它的代理在中国大陆不能直连,建议把程序部署到海外服务器,或者走 TUN 模式全局代理。对一个主要服务中文开发者的产品来说,这是它自己承认的摩擦。
  • 第三方评价几乎查不到,Trustpilot、G2 都没有收录,搜索结果基本是自家的营销和教程内容。可靠性好坏都没法从外部验证。

[ 02 ]逐项对比

逐项对比

逐项对比
穿云API (Cloudbypass)NexCaptcha
公开价格按月积分套餐 $49 到 $1,056,30 天有效,过期清零,V2 还要另外买代理流量。两条线共用一张价目表,按每千次成功请求计价:5秒盾 $4.49,Turnstile $2.18,DataDome $2.18,33 种题型全部公开,余额不过期。
公开延迟没有公开延迟数据,只能用 x-cb-timeout 自己设,范围 5 到 3600 秒。每个题型公开 p50 与 p95,5秒盾 p50 8.2 秒、p95 19.5 秒,Turnstile p50 3.1 秒、p95 7.4 秒。
公开成功率没有公开成功率,只能逐个请求看 x-cb-status 响应头。5秒盾 97.6%,Turnstile 99.8%,DataDome 97.2%,按题型公开。
什么算识别成功响应头出现 x-cb-status: ok 就算成功,计费也按这个头。自动化 API 以取回目标页面的真实响应为准,打码接口以目标站点接受 token 为准。
失败怎么计费失败不扣积分,但过盾成功后响应报错,那 2 个积分不退。识别失败不计费,被拒与超时的当小时自动退回余额,过盾成功但响应报错同样退。
接口兼容性header 驱动的 HTTP 转发,没有任务对象、没有 taskId、不返回 token。自动化 API 是同一种 header 驱动转发,x-cb-* 按名对应到 x-nc-*;要 token 就走 createTask / getTaskResult。
支持响应有中文文档和中文支持,但没有公开响应时效。7×24 由工程师值守,Telegram 首次响应中位数 7 分钟。

[ 03 ]代码改动

代码改动

穿云 API 是一层请求转发,没有 createTask,没有 taskId,也不会返回任何 token。你把原来的请求改成发给 api.cloudbypass.com,path、query、method、body 都不动,真正的目标放进 header:x-cb-apikey 鉴权,x-cb-host 指定目标域名,另外还有 x-cb-fp 指纹、x-cb-proxy 代理、x-cb-part 会话分区。返回的就是目标站点的响应本身,成功与否看响应头 x-cb-status: ok,计费也按这个头。我们的自动化 API 是同一种形状:请求发给网关,目标放在 header 里,回来的还是目标页面本身。header 一一对应,x-cb-apikey 对 x-nc-key,x-cb-host 对 x-nc-host,x-cb-fp 对 x-nc-fingerprint,x-cb-proxy 对 x-nc-proxy,x-cb-part 对 x-nc-session。名字不一样,所以这不是换一行 base URL,是一层很薄的 header 改名。如果你要的是 token 不是页面,自动化打码那条线还在:createTask / getTaskResult 返回 g-recaptcha-response、cf-turnstile-response、cf_clearance,由你自己带着去提交。两条线共用同一批节点、同一张价目表,选哪个接口都不影响单价。

改之前
const res = await fetch("https://api.cloudbypass.com" + path, {
headers: {
"x-cb-apikey": KEY,
"x-cb-host": "target.example",
"x-cb-fp": fingerprint,
"x-cb-proxy": stickyProxy,
"x-cb-part": String(session),
},
});
// x-cb-status: ok means it worked, and cost 3 credits
const html = await res.text();
改之后
const res = await fetch("https://gateway.nexcaptcha.net" + path, {
headers: {
"x-nc-key": KEY,
"x-nc-host": "target.example",
"x-nc-fingerprint": fingerprint,
"x-nc-proxy": stickyProxy,
"x-nc-session": String(session),
},
});
// same page back, billed once at the rate for the challenge actually hit
const html = await res.text();

怎么迁移

  1. 01先确认你要的是页面还是 token。原来发给 api.cloudbypass.com 的请求要的是页面,对应我们的自动化 API;如果你用 x-cb-sitekey 只是为了拿 Turnstile token,走打码接口的 TurnstileTaskProxyless 更省,不用代理,不用会话分区,token 直接返回。
  2. 02把 base URL 从 https://api.cloudbypass.com 换成 https://gateway.nexcaptcha.net,path、query、method、body 都不用动。
  3. 03header 按名改一遍:x-cb-apikey 改成 x-nc-key,x-cb-host 改成 x-nc-host,x-cb-fp 改成 x-nc-fingerprint,x-cb-proxy 改成 x-nc-proxy,x-cb-part 改成 x-nc-session。x-cb-version 没有对应项,网关按目标站点实际出的盾自己选路。
  4. 04删掉整套 part 分配池,连 CHALLENGE_LOCK_OCCUPIED 和 CHALLENGE_LOCK_TIMEOUT 的重试逻辑一起删。x-nc-session 是会话分区,不是互斥锁,同一个 session 上并发请求不会互相挤掉,也没有 1000 个 part 的上限要你自己调度。
  5. 05改判成功的写法:原来看响应头 x-cb-status: ok,现在回来的就是目标站点自己的响应,你原来那套状态码判断可以直接用回来。错误码再对照一遍,其中 UNSUPPORTED_CAPTCHA 基本不会再出现,页面中间弹的 reCAPTCHA、hCaptcha、极验 由网关在链路里解掉。识别失败不计费。

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

关于这一项的常见问题

能。我们的自动化 API 是同一种形状:请求发给网关,目标域名放在 header 里,回来的是目标页面本身,没有任务对象,也不用轮询。要改的就两处,base URL 换成 https://gateway.nexcaptcha.net,五个 header 按名改一遍,x-cb-apikey 到 x-nc-key,x-cb-host 到 x-nc-host,x-cb-fp 到 x-nc-fingerprint,x-cb-proxy 到 x-nc-proxy,x-cb-part 到 x-nc-session。header 名字不一样,所以要写一层很薄的适配,不是换一行域名就完事,但请求体和判断逻辑都不用动。稳妥的做法是先挑一个目标站点,同一批 URL 一半走穿云、一半走网关,比过盾成功率和端到端耗时,再整体切。

穿云只做 Cloudflare、Turnstile 和 Incapsula,采集链路上撞到 reCAPTCHA、hCaptcha、极验、DataDome、Akamai、Kasada、PerimeterX、AWS WAF,它会返回 UNSUPPORTED_CAPTCHA,你得在它旁边再接一家打码平台。我们这边不用分两家:自动化 API 的网关可以在链路里直接调识别引擎,页面中间弹出来的 reCAPTCHA、hCaptcha、极验 当场解掉再继续往下走;如果你更想自己拿 token 去提交,打码接口有 33 种题型。价格按实际遇到的盾算,走哪个接口都是同一张价目表,选省事的那个不会多收钱。

转不过来,而且它官方 FAQ 写明有效期内没用完的积分会清空。比较稳的做法是在当前套餐快到期时切,剩下的积分先跑完,然后停止续费,中间那段时间把同一批 URL 分一半过来双跑。我们这边按次计费,没有套餐要预付,余额也不过期。

过盾这条路不会。按它自己的计费规则折算,过盾请求算 3 个积分,$259 以上的套餐大约合每千次 $0.35,入门那档大约合 $1.84,我们的 5秒盾是 $4.49 每千次,这一项它明显便宜,前提是积分能在 30 天内跑完,并且要另算 V2 必须自己买的代理流量。如果你原来只是用 x-cb-sitekey 拿 Turnstile,换成 TurnstileTaskProxyless 反而更省:$2.18 每千次,不用代理,不用会话分区。真正的结构差别在并发和计费口径:它所有套餐都卡在 30 次/秒,包括 $1,056 那一档,我们默认密钥是每分钟 50,000 次请求;我们按次计费、识别失败不计费、被拒的自动退回余额、余额不过期。另外走自动化 API 还是打码接口都是同一张价目表,选省事的那个不会多收钱。

第一千次识别,我们请。

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