本文依据穿云 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: challenge | V2 | 需要自动处理 JS 质询 |
| 提交表单时触发 Turnstile | V2 | 需要 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。