Skip to content

GitPort GitHub v0.5.2

Choose a tag to compare

@zhidian-cmd zhidian-cmd released this 31 Oct 18:48
· 49 commits to main since this release

相对 v0.5.1,这次动的是大文件派发的内核:14 个文件 +982/−441(另有 4100 行只是把测试从生产文件挪进 src/tests/,运行期零影响)。

一、派发:先实测一遍,再按预计下完时间竞速

  • 探测轮:链上有没测过的镜像时,并发分片一片一家轮着发(原子游标),先把每家的真实速度测出来;全员有成绩之后才进入 ECT 竞速。此前没测过的候选只能按 2MB/s 猜,排在后面的、中途新增的镜像都在拿猜测当分母。
  • ECT 无容差:预计下完时间(在途字节 ÷ 实测速度)绝对最小者胜;只有完全相等才看谁的并发流少,仍相等才轮转。旧版 5% 并列带在实测速度差几十倍的环境里,等于把分片白送给慢腿。
  • 测速从响应头起算:拨号、建连、等待服务器开腔的耗时只算墙钟,不进速度样本。等待是常数,混进去会把快镜像稀释得更狠,候选差距被压平。
  • 清场:探测片交卷后,明显慢于链内最快者的镜像盖纪元号,在途流断流交客户端重发;判据用刚测出的实测分,不是猜的。

二、大小文件彻底分开

头像、raw、gist 这类小文件不再参与速度记账、不进 ECT、不写失败窗,只按校准后的链序从头试。大文件才跑探测轮和竞速。此前两类文件共用一本账,一次 40KB 头像的慢启动能决定 2GB 源码包以后走哪家。

三、镜像治理

  • 可信镜像白名单:带签名(约 1 小时有效的下载凭证)的下载地址默认只给直连;在工作台勾了「信任」的镜像才放行参与竞速。只对自建、明确不留日志的镜像开启。
  • 链序按速度重排:测出的速度直接决定大文件链的顺序并写回 plans.json,IDM 首片和非下载器场景直接命中快腿;重排本身限一秒一次,不占下载路径。
  • 镜像价值评估:每次探测的终值记一份到 .cache/mirror_stats.json,攒够样本后按中位速度找出长期垫底者,只在界面和日志里提示「建议停用」,绝不自动改配置。

四、安全与长期运行

  • 可信镜像判定由「前缀匹配」改为「同源全等」:https://gh-proxy.org.evil.tld 不再被当成 https://gh-proxy.org——签名 URL 等同提货凭证,前缀一松就等于送人。
  • 叶子证书缓存带签发时长,超过 358 天自动重签。此前只查域名不看有效期,常驻满一年后该域名的 MITM 握手会集体失败。
  • 清理:串发拨号里永远不会触发的取消分支、只做转发的 range_bytes_of。

升级方式:用新 exe 覆盖旧版即可,plans.json / settings.json / 根证书全部保留,无需重新配置。