项目经验

下了一份祖玛,检查 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。以后再调整规则,可以照这两个位置复查。这次只采样了连接表,没有做逐包统计。

← 全部文章相关项目 →

说两句

正在读取讨论…

游客可以留言,审核后公开显示。

最多 2000 字 · 可贴图片或 GIF