流量计费口径
什么字节算流量、什么不算、计费倍率怎么作用,以及为什么账面数字和你自己统计的会有差异。
按 GB 计费的产品线(动态住宅)会关心这个。这一篇把口径写到字节级别,方便你对账。
一句话口径
算进流量的
- CONNECT 隧道建立之后隧道内的全部字节 —— 包括 TLS 握手记录、HTTP 头、请求体、响应体
- 普通 HTTP forward 模式下重建后的请求行和请求头
- chunked body 的线格式数据(分块长度标记也算)
- 上传和下载两个方向
不算进流量的
- 你发给网关的
CONNECT请求行和请求头 - 网关回你的
HTTP/1.1 200 Connection Established - SOCKS5 的问候、认证子协商、CONNECT 请求与响应
- 网关与出口之间的 CONNECT / SOCKS 握手
- TCP / IP / 以太网包头
HTTPS 一次请求的实际组成
访问一个 HTTPS 页面,计费的字节大致是:
| 部分 | 典型大小 | 计费 |
|---|---|---|
| 客户端到网关的 CONNECT 请求 | ~200 B | 不计费 |
| 网关的 200 响应 | ~40 B | 不计费 |
| TLS ClientHello / ServerHello / 证书 / Finished | 3–6 KB | 计费 |
| HTTP 请求头(加密后) | 0.5–2 KB | 计费 |
| HTTP 响应头 | 0.5–2 KB | 计费 |
| 响应体 | 视内容 | 计费 |
所以"一个只返回几十字节 JSON 的 API 调用"实际计费约 5–10 KB,绝大部分是 TLS 握手。这类场景应该复用连接。
计费倍率
原始字节会乘一个产品倍率再计入余额扣减。倍率以百万分之一(PPM)为单位,累计值向下取整。
计费字节 = floor(累计原始字节 × 倍率 ÷ 1,000,000)
倍率为 1,000,000 时就是 1:1。具体倍率看产品说明或控制台的产品详情。
结算与统计维度
日汇总按北京时间自然日结算。 跨时区对账时要注意这一点——你按 UTC 统计的日消耗和平台账面会差几小时的量。
用量统计能查到的维度见 用量统计。
小时级和域名小时级的明细保留 60 天,超过之后只剩日汇总。需要长期留存自己定期导出。
为什么你的统计和账面不一致
自己在代码里统计的字节数和平台账面对不上,几乎总是下面某个原因:
| 你的统计 | 平台统计 | 差异 |
|---|---|---|
| 只算响应体 | 算 TLS 握手 + 请求头 + 响应头 + 响应体 | 每连接多 5–10 KB |
| 算解压后的大小 | 算网络上的实际字节(压缩后) | 平台的数字更小 |
| 只算成功的请求 | 算所有成功写入 socket 的字节,包括失败请求的部分响应 | 平台的数字更大 |
| 按 UTC 分日 | 按北京时间分日 | 日边界差 8 小时 |
| 不算重试 | 算每次重试 | 平台的数字更大 |
怎么省流量
按效果排序:
确保开了压缩
curl -H 'Accept-Encoding: gzip, deflate, br' ...
HTML / JSON / CSS / JS 的压缩率通常在 60–80%。这是最省的一条。
浏览器自动化时拦掉图片和字体
# Playwright
def block_heavy(route):
if route.request.resource_type in {"image", "media", "font"}:
route.abort()
else:
route.continue_()
context.route("**/*", block_heavy)
现代网页的图片和字体常占首屏流量的 60–80%。
复用连接
每个新 HTTPS 连接有 3–6 KB 的 TLS 握手开销。请求密集时复用连接能省下可观的量。
注意这跟"轮换 IP"是矛盾的——需要换 IP 时握手开销就是代价。权衡的办法是用粘性会话在同一 IP 下复用连接,只在必要时换。
用 HEAD 探测
只需要判断资源是否存在、看响应头时用 HEAD 而不是 GET:
curl -I -x 'http://USER-country-US:PASS@GATEWAY_HOST:58971' https://example.com/large-file
不要抓不需要的页面
听起来废话,但实践中最大的浪费往往是抓了整站却只用其中一小部分。先想清楚需要哪些页面。
按 IP 计费的产品线不消耗流量
不限量住宅有两种计费模式:端口版按端口数 × 有效期计费,每个端点合计限速 6 Mbps;带宽版按账号总带宽 × 有效期计费。两种模式都不按 GB 扣量。
余额的有效期
动态住宅的流量余额在购买后累加进流量池。当前实现中没有代码层面的自动过期或余量作废规则——余额不会因为时间到了被清零。
报价的有效期
动态住宅下单前的报价单默认 5 分钟有效。促销活动结束时间或产品下架时间更早的话会进一步缩短。
所以"询价 → 展示给用户 → 用户犹豫十分钟 → 下单"这个流程会失败。要么缩短决策窗口,要么在下单前重新询价。
未付款订单
默认 30 分钟过期,过期后库存自动加回。Stripe 渠道的结账链接保留 30 天。