本文依据穿云 API 官方文档整理:V2s 与 V2 使用方式基本一致,核心差异是 V2s 支持 stream 流式响应。实际接入前,请以当前官方文档和控制台配置为准。
什么是穿云 API V2s
穿云 API V2s 可以理解为 V2 的流式响应版本。它与 V2 的挑战处理、代理配置、会话分区和 Turnstile 参数保持一致,但支持 stream 流式响应。如果你的请求会返回大文件、长文本、导出内容,或者需要边下载边处理,就可以使用 V2s。
适用场景
- 目标站需要穿云 V2 能力,例如 JS 质询、Turnstile 或会话保持。
- 响应体较大,普通一次性读取容易超时或占用过多内存。
- 需要下载文件、导出 CSV/ZIP/PDF,或者边接收边写入文件。
- 希望在响应到达时立即处理,而不是等待服务端完整返回后再处理。
核心请求头
| 请求头 | 说明 |
|---|---|
x-cb-apikey | 穿云 API Key,必填 |
x-cb-host | 目标站域名,不包含协议和路径 |
x-cb-version: 2s | 启用 V2s 流式响应版本 |
x-cb-proxy | V2/V2s 必须配置固定或具有时效性的 IP 代理 |
x-cb-part | 可选,会话分区,用于服务端托管验证 Cookie |
x-cb-sitekey | Turnstile 场景可选,用于触发小部件验证 |
x-cb-timeout | 可选,V2s 默认 30 秒,范围 5-3600 秒 |
cURL 示例:下载大文件
curl --request GET --url "https://api.cloudbypass.com/files/report.zip" --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" --header "x-cb-timeout: 600" --output report.zip
URL 的路径和查询参数保持目标站原样,只需要把协议和域名替换为 https://api.cloudbypass.com,并通过 x-cb-host 指定目标域名。
Python 示例:边下载边写入文件
import requests
url = "https://api.cloudbypass.com/files/report.zip"
headers = {
"x-cb-apikey": "YOUR_APIKEY",
"x-cb-host": "target.com",
"x-cb-version": "2s",
"x-cb-proxy": "http://user:pass@proxy-host:port",
"x-cb-timeout": "600",
}
with requests.get(url, headers=headers, stream=True, timeout=650) as resp:
print(resp.status_code, resp.headers.get("x-cb-status"))
resp.raise_for_status()
with open("report.zip", "wb") as f:
for chunk in resp.iter_content(chunk_size=1024 * 64):
if chunk:
f.write(chunk)
Node.js 示例:使用响应流
import axios from "axios";
import fs from "node:fs";
const resp = await axios.get("https://api.cloudbypass.com/files/report.zip", {
responseType: "stream",
headers: {
"x-cb-apikey": "YOUR_APIKEY",
"x-cb-host": "target.com",
"x-cb-version": "2s",
"x-cb-proxy": "http://user:pass@proxy-host:port",
"x-cb-timeout": "600",
},
});
console.log(resp.status, resp.headers["x-cb-status"]);
resp.data.pipe(fs.createWriteStream("report.zip"));
V2s 与 Part 模式
V2s 支持与 V2 相同的 x-cb-part 会话分区。对于需要多次请求同一目标站、复用挑战结果或减少重复验证的场景,可以设置固定的 part。多线程并发时,建议为不同线程分配不同 part,避免同一会话分区被挑战锁占用。
curl --request GET --url "https://api.cloudbypass.com/accounts/label/lido" --header "x-cb-apikey: YOUR_APIKEY" --header "x-cb-host: etherscan.io" --header "x-cb-version: 2s" --header "x-cb-part: 0" --header "x-cb-proxy: http://user:pass@proxy-host:port"
Turnstile 场景如何使用 V2s
如果目标接口同时需要 Turnstile token 和流式响应,V2s 仍然使用 x-cb-sitekey 触发 Turnstile 验证,并在目标接口需要 token 的字段中填写 [cf_token]。如果小部件还有 action 或 cData,可以按目标站要求配置 x-cb-action 和 x-cb-cdata。
curl --request POST --url "https://api.cloudbypass.com/api/export" --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" --header "x-cb-sitekey: 0x4AAAA..." --header "content-type: application/json" --data '{"turnstileToken":"[cf_token]"}' --output export.csv
从 V2 切换到 V2s
- 把
x-cb-version: 2改为x-cb-version: 2s。 - 保留原来的
x-cb-proxy、x-cb-part、x-cb-sitekey等参数。 - 客户端改成流式读取,例如 Python 使用
stream=True,Node.js 使用responseType: "stream"。 - 根据文件大小或响应时长设置
x-cb-timeout,V2s 可设置 5-3600 秒。
常见问题
V2s 是否比 V2 更适合所有请求?
不是。普通短响应接口继续使用 V2 即可;只有需要流式响应时才切换 V2s。
V2s 是否仍然需要代理?
需要。V2s 与 V2 一样,必须配置固定或具有时效性的 IP 代理。
V2s 是否支持 Turnstile?
支持。x-cb-sitekey 在 V2/V2s 场景下都可用于 Turnstile 小部件验证。
小结
如果你的业务已经需要 V2 的挑战处理能力,同时响应体较大或需要边下载边处理,就使用 V2s。接入时重点记住三点:版本头写 x-cb-version: 2s,其余 V2 参数保持一致,客户端使用流式读取。