如何判断使用穿云 V1、V2 还是 V2s?

本文依据穿云 API 官方文档整理:V2s 与 V2 使用方式基本一致,核心差异是 V2s 支持 stream 流式响应。实际接入前,请以当前官方文档和控制台配置为准。

判断逻辑:先看挑战类型,再看响应形态

选择 V1、V2 还是 V2s,可以按两个问题判断:第一,目标站是否存在 JS 质询或 Turnstile;第二,响应是否需要流式处理。V2s 不是单独的挑战类型,而是 V2 能力加上 stream 流式响应。

第一步:先尝试判断是否能用 V1

  • 浏览器能正常打开页面,程序请求返回 403。
  • 响应中没有明显的 cf-mitigated: challenge
  • 页面没有提交表单时弹出的 Turnstile 小部件。
  • 不需要保持 Cloudflare 验证 Cookie 或固定会话。

满足以上条件时,可以优先用 V1。V1 请求更简单,不需要显式设置 x-cb-version,通常适合轻量页面访问、普通接口请求或常规 403 场景。

第二步:出现挑战或 Turnstile 时使用 V2

如果目标站第一次加载时返回 HTTP 403,并且响应头中包含 cf-mitigated: challenge,通常就是 Cloudflare JS 质询。如果是在提交登录、注册、领取、查询等表单时出现 Turnstile 小部件,则需要提供 x-cb-sitekey 并在目标接口 token 字段中填写 [cf_token]。这些都属于 V2 场景。

curl --request POST   --url "https://api.cloudbypass.com/api/submit"   --header "x-cb-apikey: YOUR_APIKEY"   --header "x-cb-host: target.com"   --header "x-cb-version: 2"   --header "x-cb-proxy: http://user:pass@proxy-host:port"   --header "x-cb-sitekey: 0x4AAAA..."   --header "content-type: application/json"   --data '{"turnstileToken":"[cf_token]"}'

第三步:V2 场景里遇到大响应时切换 V2s

如果目标站仍然需要 V2 的挑战处理、代理和会话能力,但响应体很大,或者业务上希望边接收边处理,就应该使用 V2s。典型例子包括大文件下载、导出文件、长响应接口、需要实时落盘的内容下载等。V2s 的接入方式与 V2 基本一致,只需要设置 x-cb-version: 2s

curl --request GET   --url "https://api.cloudbypass.com/download/report.csv"   --header "x-cb-apikey: YOUR_APIKEY"   --header "x-cb-host: target.com"   --header "x-cb-version: 2s"   --header "x-cb-proxy: http://user:pass@proxy-host:port"   --output report.csv

快速判断表

现象推荐版本原因
浏览器能访问,代码请求 403,无挑战页面V1普通访问绕过,配置最轻
响应头出现 cf-mitigated: challengeV2需要自动处理 JS 质询
提交表单时触发 TurnstileV2需要 x-cb-sitekey[cf_token]
V2 场景 + 大文件或长响应V2s需要 stream 流式响应
多线程复用验证会话V2 或 V2s + Part通过 x-cb-part 区分会话分区

排查建议

  • 先看响应头和状态码,再决定是否升级到 V2/V2s。
  • 如果需要 Turnstile,先确认 sitekey 是否正确,JS 质询不需要 sitekey。
  • 如果 V2 正常但下载大文件不稳定,优先改为 x-cb-version: 2s 并使用客户端的流式读取能力。
  • 如果使用 V2s,注意客户端不要一次性把大响应全部读入内存,应使用文件流或迭代读取。
  • 如果仍然失败,检查代理可用性、地区、粘性时长和 x-cb-timeout 设置。

一句话总结

普通 403 先用 V1;遇到 JS 质询、Turnstile 或会话保持用 V2;在 V2 场景下还需要流式下载或处理大响应时,用 V2s。