Repository navigation
v0.7.1 —— 一键更新跟随系统代理(Clash 系统代理模式可用)
修掉:一键更新在「只有 Clash 系统代理」的机器上用不了
两个原因叠在一起,都是"看着像网络不稳,其实是代码":
- 不跟随 Windows 的「系统代理」。Go 标准库探测代理时只读环境变量,不读 Internet 选项 ——
而现场机器多半正是"只有 Clash 的系统代理能出公网"(没开 TUN、也没设环境变量)。
于是一键更新一直在直连github.com、10 秒超时,界面上只留一句"网络不通"。
现在会自动跟随系统代理(含它的绕过列表);环境变量优先于系统设置;PAC 模式如实说"只能直连",不猜。 - 匿名 GitHub API 的额度是 60 次/小时、按出口 IP 计。经 Clash 出公网的出口是共享节点,
实测那台机器的额度已经用光、api.github.com直接回403 rate limit exceeded——
也就是"光把代理接上"仍然会随机失败。
所以查版本改走releases/latest的跳转(不花配额)、包地址与 sha256 改走发布页(不花配额),
API 只作保底。摘要拿不到时仍然 fail-closed 拒绝自动更新(不拿"来源是 GitHub"当完整性)。
失败时也会把"这次走的是哪条路"直接说出来:
查不到最新版本(连不上 github.com)。更新请求走的是:直连(系统代理没开,也没有代理环境变量)
—— 需要代理才能上外网时,请在 Clash 里打开「系统代理」后重试;也可以直接打开下载页手动取包。
排查用的新东西
nethub.exe -status 多了一行,不用打开界面就能看更新会走哪条路:
"updateProxy": "系统代理 127.0.0.1:7897"安装 / 升级
- 包:
NetHub.zip(不含任何配置与日志;把config.yaml.example复制成config.yaml填自己的上游) - 已经在用 v0.6.x / v0.7.0 的:这一版请手动替换一次 —— 旧版的一键更新在"只有系统代理"的机器上
本来就是坏的,它下不动新版本。替换一次之后,「设置 → 关于 → 检查更新 / 下载并更新」就能一直用了。 - 回滚:
nethub.exe -rollback(旧程序保留为nethub.exe.old,一键更新出问题时用) - 一条 exe 两种形态,别混装:有人在用的机器用 GUI(界面里开「开机自启」→ 计划任务),
服务器 / 无人登录用服务形态(nethub.exe -service-install)
已知边界
- 系统代理若是 PAC(自动配置脚本) 模式:我们不跑脚本,更新请求只能直连(文案里会说清楚)。
- Clash 那边若把
github.com规则成 REJECT,仍然会失败 —— 那是它的规则,不是这边能绕的。