下了一份祖玛,检查 Steam 下载到底有没有走代理
两次祖玛独立下载的记录:第一轮看 steam.exe,开启会话模式后改查转发进程与 CDN 日志。
网页代理接通之后,还差一件事:确认游戏下载没有跟着走代理。
最初选了已经安装的祖玛做文件完整性验证,想找一个小任务观察连接。结果文件都是完整的,没产生足够的下载流量。没有下载流量可看,后来额外下了一份独立 depot。
第一轮:看 steam.exe 的下载连接
原型仅代理 WebHelper,steam.exe 在排除列表里。测试时保持工具启用,下载了一份独立的祖玛内容副本,没有替换已经安装的游戏文件。
这一轮完成了 7,688,896 字节,约 7.33 MiB。下载过程中,steam.exe 出现了到外部 CDN 的 IPv4、IPv6 连接,目标端口为 80。当时系统代理和 TUN 都关闭,连接也没有进入工具的本地转发端口。
采样可以用下面的命令。下载时多执行几次,把时间记下来:
$steamProcessIds = @(Get-Process steam -ErrorAction Stop).Id
Get-NetTCPConnection -State Established |
Where-Object { $_.OwningProcess -in $steamProcessIds } |
Select-Object OwningProcess, LocalAddress, LocalPort, RemoteAddress, RemotePort
Steam 重启后 PID 会变化,所以先现取进程 ID。同时记录连接地址,才能查到文件从哪台服务器下载。
网页这边也做了检查。商店和社区主文档都返回 200,磁盘缓存标记为 false,标题分别是“欢迎来到 Steam”和“Steam 社区”,页面加载完成。这些记录和下载时的连接采样一起保存了下来。
第二轮:会话模式接管了 steam.exe,还能直连吗
到了 1.1.0,steam.exe 也接入了本地转发,需要再下一次看看。
开启会话模式后,steam.exe 的 TCP 先进入独立的本地转发入口。CM 连接交给上游代理,下载连接则由这层转发直接连接 CDN。此时只看 Steam 自己的连接不够,还要看专用 Mihomo 进程的出站连接。
14:11:31 开始重新下载祖玛的 depot 3331,Steam 记录了 449 个内容块、约 7 MB,14:11:39 完成。原来的测试目录保留,已安装游戏目录没动。
采样中,专用 Mihomo 直接连接了下面三个地址;Steam 的内容日志能把它们对应到具体下载服务器:
| 内容服务器 | 实际连接 |
|---|---|
| cache9-tyo3.steamcontent.com | 45.121.184.46:443 |
| cache11-tyo3.steamcontent.com | 45.121.184.48:443 |
| cache12-tyo3.steamcontent.com | 45.121.184.49:443 |
日志里选到的下载服务器都在日本。连接表显示,本机 Mihomo 直接连上了这些 CDN;另查本次测试使用的 Clash 的记录,Steam 的 CM 登录连接走的是日本代理节点。
下载后磁盘上有 448 个文件,共 10,729,604 字节。这是解压后占用的空间,下载量仍以前面的传输记录为准。
下次改规则时怎么复查
下载时记下开始和完成时间,再用这段时间筛选连接采样和 Steam 内容日志,就能找到对应的 CDN。
默认网页模式查 steam.exe,开启会话模式后查专用 Mihomo。以后再调整规则,可以照这两个位置复查。这次只采样了连接表,没有做逐包统计。