Skip to content

v0.7.1 —— 一键更新跟随系统代理(Clash 系统代理模式可用)

Choose a tag to compare

@Lithivm Lithivm released this 15 Oct 09:04
· 27 commits to main since this release

修掉:一键更新在「只有 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,仍然会失败 —— 那是它的规则,不是这边能绕的。