访问 GitHub 慢,很多时候不是带宽不够,而是域名被解析到了一个并不适合当前网络的 IP。网上现成的 hosts 文件更新频率有限,而且同一组 IP 在不同地区、不同运营商下的效果可能完全相反。
hosts-opt 是我写的一个 Windows 小工具:把多个公开 hosts 源和 Cloudflare、Vercel 的候选 IP 汇总起来,在本机逐个做真实的 TCP + TLS 握手测速,再把当前网络下真正能连通的 IP 写进系统 hosts。
它解决什么问题
- 多源合并:同时拉取 GitHub520、ineo6/hosts、maxiaof/github-hosts 三个公开源,某个源失效时自动回退到本地缓存。
- 本地真实测速:不是 ping,而是对每个「域名 + IP」完成带 SNI 和证书校验的 TLS 握手,默认采样 3 次取中位数,优先选择全部采样成功的 IP。
- Cloudflare / Vercel 优选:从 IPDB 的
bestcf榜单和内置的 Vercel Anycast 地址里取候选,再按本机延迟挑选。 - 可视化确认:图形界面能看到每个域名最终选中的 IP、延迟、采样成功率和来源,应用后还会自动检测连通性。
- 安全可回退:只修改 hosts 里带标记的托管块,首次写入前永久保留原始备份,每次写入前自动备份,随时可以回退。
- 定时刷新:通过 Windows 计划任务按 1–24 小时的间隔自动重新测速和更新,CDN 波动时不用手动折腾。
工作流程
- 拉取 GitHub hosts 源:并发请求配置里的三个源,成功结果写入
cache/。 - 拉取 IP 池:读取 IPDB 的 Cloudflare
bestcf列表和内置的 Vercel Anycast IP。 - DoH 补候选:对候选不足的域名,用腾讯
doh.pub和阿里dns.alidns.com补充解析结果。 - 本地测速:对每个候选 IP 建立 TCP 连接并完成 TLS 握手,记录延迟和成功次数。
- 选优:优先选全部采样成功的 IP;延迟接近时保持上一轮结果,避免频繁切换。
- 写入:生成托管块、备份原文件、替换块内容、刷新 DNS;IP 映射没变化时直接跳过。
快速开始
- 从 Releases 下载
hosts-opt-1.0.0-windows-x64.zip。 - 解压到一个固定目录,双击
hosts-opt.exe,无需安装 Python。 - 点击「拉取并测速」先预览结果,这一步不需要管理员权限,也不会修改系统 hosts。
- 在「选中结果」「连通性」「候选明细」里确认 IP 和延迟。
- 点击「应用 hosts」,按提示以管理员身份重启并写入。
- 需要自动更新时,设置间隔小时数后点击「安装任务」。
EXE 没有代码签名,Windows SmartScreen 可能提示「未知发布者」。可以核对 Release 页面提供的 SHA256,或者从源码运行、自行构建。
命令行用法
发布版在 hosts-opt.exe 后加 --cli 即可使用命令行模式:
1 | # 只预览,不写系统 hosts |
源码模式把 .\hosts-opt.exe --cli 换成 python hosts_opt.py 即可。离线环境下可以加 --offline,只使用缓存的源和 IP 池,仍然会做本地测速。
安全与回退
工具只会修改下面这对标记之间的内容:
1 | # >>> hosts-opt managed block begin >>> |
hosts 里的其他内容原样保留。几个关键保护:
- 首次写入前创建
backups/hosts.original.bak,永久保留,不会被自动清理。 - 每次写入前创建带时间戳的自动备份,默认保留最近 10 份。
- 回退前会再备份一次当前 hosts,所以回退本身也可以撤销。
- 开始标记存在但结束标记缺失时直接中止,不修改文件。
- 运行期间使用文件锁,避免 GUI 和计划任务同时写入。
注意 restore 和 rollback 的区别:restore 只删除本工具写入的托管块,hosts 其他内容不动;rollback 是用备份文件完整覆盖当前 hosts。
使用限制
- 代理和 VPN:如果浏览器走 HTTP/HTTPS 代理,DNS 通常在代理端解析,hosts 基本无效;TUN 模式或全局 VPN 也可能绕过 hosts。
- Cloudflare 模式:只对 Cloudflare 代理的域名有效,且应使用
bestcf这类官方边缘 IP,不要用第三方反代 IP,否则容易出现证书不匹配。 - Vercel 模式:Anycast IP 数量少,收益通常小于 Cloudflare;
*.vercel.app无法用 hosts 通配。 - Notion 加速:可选的 NotionFaster 是第三方 TCP 反代,默认关闭;启用后连接会经过第三方服务器,请自行评估信任和隐私风险。
- 不是万能加速:hosts 只能解决「解析到较优 IP」,无法绕过带宽限制、丢包或链路拥塞;TLS 握手快也不等于下载速度快。
数据来源
项目能工作,主要依赖这些公开项目的持续维护:
- 521xueweihan/GitHub520:GitHub hosts 源
- ineo6/hosts:GitHub hosts 源,MIT
- maxiaof/github-hosts:GitHub hosts 源
- ymyuuu/IPDB:Cloudflare
bestcf优选 IP,MIT - NotionFaster:可选的第三方 Notion 反代,默认关闭
- PyInstaller:构建 Windows EXE
项目代码采用 MIT 许可证,完整的第三方声明见仓库里的 THIRD_PARTY_NOTICES.md。如果这个工具帮到了你,欢迎在 GitHub 上提 issue 或点个 star。
评论