Steam 代理脚本能用了,做成 EXE 还差些什么
封装 Steam 代理时处理过的退出顺序、配置恢复、同名进程和端口占用问题。
脚本跑通时,操作者知道刚才启动了哪个进程,也知道哪个配置是临时改的。做成一个“启用并启动 Steam”按钮以后,这些事都得由程序自己记住。
窗口用 C# 和 WinForms 做,构建直接调用系统自带的 .NET Framework 编译器,不需要另装 SDK。填代理地址、选协议、改端口这些控件不难。比较费心的是点下启用以后,以及点下关闭以前的事情。
退出时先别杀转发进程
连接由 ProxiFyre 服务送到本机 Mihomo。如果先结束 Mihomo,服务还在转发,Steam 网页就会被送到一个没人监听的端口。
正常关闭因此按这个顺序走:
检查当前配置 → 停止服务 → 恢复旧配置 → 结束自己的转发进程
如果恢复配置失败,就先保留转发进程,方便重试。点窗口叉号会收进托盘,仍继续代理;要结束使用,选择“退出并关闭代理”。
这是正常关闭的处理。断电、程序崩溃、写文件中断等情况,还没有做完整的故障注入测试。
恢复配置前,先看有没有被改过
程序启用后,用户可能又改了 ProxiFyre 配置。如果关闭时直接用旧备份覆盖,新加的规则就没了。
所以写入配置时,同时记下写完后的 SHA-256。恢复前再算一次:相同才恢复;不同就停止操作,报告配置已经变化。
状态里保存了原配置是否存在、原文本、应用后的哈希,以及当前是否启用。这些恢复信息放在受保护的共享目录,普通界面不直接写。需要安装依赖、改服务配置或启停服务时,才调用管理员入口。
用户取消 UAC 时,程序会报告启用失败。依赖安装器要求重启时,也会停下来提示重启。
电脑里可能已经有一个 Mihomo
用户自己的 Clash 可能已经在运行 Mihomo,这个工具又带了一份。如果按进程名批量结束,用户原来的代理也会被关掉。
程序用 PID、启动时间和执行路径确认归属。PID 可能被复用,单独记它不够;执行路径则可以区分本工具释放的内核和其他软件的内核。
1.1.0 测试时还发现,旧版转发程序仍在运行,新版却可能覆盖它的进程记录。修复后,程序会先提示关闭旧窗口,再继续启用。
迁移时,旧原型占着 18899,新实例改用了 18898。界面因此保留了内部端口设置,启动前也会检查端口是否被占用。
一个 EXE 里装了什么
便携 EXE 内置压缩后的 Mihomo 和官方 ProxiFyre 安装器,运行时释放并校验哈希。Mihomo 随工具提供,使用者不用另外装 Clash;界面里填写自己的 SOCKS5 或 HTTP 代理即可。安装版再把同一个主程序放进当前用户目录,创建快捷方式和卸载入口。
用户只需下载一个 EXE。首次运行时,它会释放组件,把设置和缓存存到用户目录。缺少驱动或 VC++ 运行库时,安装器会联网下载。本机已经装过这些依赖,全新 Windows 上的安装还需要补测。
网站提供安装版和便携版,开发代码、构建脚本、测试下载副本和机器日志留在本地。Mihomo 和 ProxiFyre 的许可证及版权说明随组件保留。
用起来只有几个按钮,出问题时仍需要具体信息。可以先按使用说明检查代理地址和端口,再记录界面提示、是否开启会话代理,以及 Steam 卡在哪一步,方便继续排查。