news 2026/9/4 10:11:36

GitHub520:在 hosts 里写 40 行映射,解决 GitHub 图裂和加载慢

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GitHub520:在 hosts 里写 40 行映射,解决 GitHub 图裂和加载慢

GitHub520:在 hosts 里写 40 行映射,解决 GitHub 图裂和加载慢

【免费下载链接】GitHub520:kissing_heart: 让你“爱”上 GitHub,解决访问时图裂、加载慢的问题。(无需安装)项目地址: https://gitcode.com/GitHub_Trending/gi/GitHub520

GitHub520 解决的就是 GitHub 图裂、加载慢的问题:打开项目页面时 README 里的 logo 变成小碎图标、头像全灰、clone 仓库转几分钟超时。它的做法是把 40 条“域名 → 最快 IP”的映射写进你电脑的 hosts 文件(一个系统自带的、手动指定域名指向哪个 IP 的文件),全程不安装任何软件。读完本文,你 5 分钟就能配置生效,还能说清楚它背后干了什么。

它是如何干活的:先收候选 IP,再挑最快 🏃

从两个渠道拿候选 IP

同一个域名,DNS 返回的 IP 不固定,而且不同 IP 从国内访问的速度差很多。所以 GitHub520 不直接用 DNS 返回的第一个 IP,而是从两个渠道查:

  • DoH(DNS over HTTPS,走 HTTPS 的加密 DNS 查询):按顺序问阿里 DNS、DNSPod、Google,谁先成功用谁
  • 普通 DNS 查询:问 114DNS、阿里、腾讯 DNS,外加 Cloudflare、Google 兜底

两个渠道的结果合并去重,再剔除1.0.1.1127.0.0.1这类无效值。40 个 GitHub 相关域名(定义在 common.py 的列表里,覆盖 github.com、头像、静态资源等)就这样逐个得到候选 IP:

用三次 TCP 连接测速,取中位数

测速的关键技巧:它不发真正的 ICMP ping(那需要管理员权限,还容易被网络屏蔽),而是直接向 IP 的 443 端口(HTTPS 用的端口)建 3 次 TCP 连接,看各花几毫秒——这比 ping 更接近“打开 GitHub 页面”的真实体感。fetch_ips.py 里的挑选逻辑就 3 行:

ping_results = [(ip, ping_cached(ip)) for ip in ip_list] ping_results.sort(key=lambda x: x[1]) return ping_results[0][0]

每个 IP 的中位数延迟只测一次(同 IP 结果会缓存,不重复测),排序后返回最快的那个。最终每个域名配出一行IP + 域名,40 行拼成仓库里现成的 hosts 文件。

五分钟上手 🛠️

你不需要碰任何源码。测速已经在服务端替你做完了,你只需要把结果放进本地 hosts 文件。三种方式任选,推荐 A 或 B。

方式 A:手动粘进 hosts 文件

第一步,复制内容。浏览器打开https://raw.hellogithub.com/hosts(不用访问 GitHub),全选复制;也可以直接复制 README.md 里 bash 代码块中的 hosts 内容。

第二步,粘贴到 hosts 文件末尾:

系统hosts 文件位置修改方式
WindowsC:\Windows\System32\drivers\etc\hosts记事本打开,粘贴到末尾后保存(需管理员权限)
macOS/etc/hostssudo vi /etc/hosts
Linux/etc/hostssudo vi /etc/hosts
Android/system/etc/hosts需要 root
iPhone/etc/hosts需要越狱

第三步,刷新 DNS 缓存让它生效:Windows 在 CMD 输入ipconfig /flushdns;macOS 执行sudo killall -HUP mDNSResponder;Linux 执行sudo nscd restart(报错了就先sudo apt install nscd)。多数情况立即生效,实在不行重启一次电脑。

这里有个小技巧——不想手动复制的话,GNU/Linux 和 macOS 各有一条命令搞定(命令会先删掉旧的 GitHub520 段落再追加新的,可以重复执行):

# GNU/Linux(Ubuntu/CentOS/Fedora) sudo sh -c 'sed -i "/# GitHub520 Host Start/Q" /etc/hosts && curl https://raw.hellogithub.com/hosts >> /etc/hosts' # BSD/macOS sudo sed -i "" "/# GitHub520 Host Start/,/# Github520 Host End/d" /etc/hosts && curl https://raw.hellogithub.com/hosts | sudo tee -a /etc/hosts'

执行后 hosts 文件末尾就是最新的 40 行映射,之后可加进定时任务每天自动跑一遍。

方式 B:用 SwitchHosts 自动刷新(推荐)

SwitchHosts 是一个管理 hosts 文件的小工具,图形界面、跨平台。新建一个 host 组,按下面填:类型选Remote,URL 填https://raw.hellogithub.com/hosts,自动刷新选1 小时

配好后 hosts 有更新会自动拉取,你彻底不用管更新这件事。

方式 C:AdGuard 用户直接加规则

如果你在用 AdGuard(设备级的广告拦截和过滤工具),走过滤器 > DNS 封锁清单添加自定义列表,名称随意,URL 同样填https://raw.hellogithub.com/hosts

再去设置 > 常规设置,勾选“使用过滤器和 Hosts 文件以拦截指定域名”,过滤器更新间隔选 1 小时即可。注意这条规则只能加在“封锁清单”里,加进允许清单是不生效的。

验收:图回来了吗

刷新一个以前图裂的 GitHub 项目页,效果和下面两张截图的差异一致——上图图片位置是碎图标、星星数徽标缺失;下图全部正常加载:

再深一层 🔍

为什么取中位数而不是平均值

假设某个 IP 测出 12ms、450ms、470ms 三次延迟,平均下来 310ms 反而失真——一次偶发的抖动就能把整体带偏。取中位数 450ms 才是你真实的体感。fetch_ips.py 里对应这段(端口和超时写了实际值,原代码用常量名):

for _ in range(3): try: with socket.create_connection((ip, 443), timeout=1): latencies.append((time.time() - start) * 1000) except Exception: latencies.append(1000) latencies.sort()

注意except那两行:连不上的 IP 直接按 1 秒超时记录。也就是说“连不通的 IP”会在排序里天然垫底被刷掉,不用额外写错误处理。

IP 没变,就不重写文件

项目定期跑 fetch_ips.py 测速、更新 hosts.json;update_ips.py 负责把结果同步回仓库里的文件。但它不无脑写,common.py 里先做对比:

if old_hosts == hosts_content_hosts: print("host not change") return False

拿 README 里的旧 hosts 和新测出的 hosts 逐行比,真变了才重写 README、hosts 和 hosts.json 三个文件。所以大部分时间仓库里的更新时间是不动的——因为 IP 压根没变。

这套流程由 CI(持续集成,指平台按定时任务自动跑代码的机制)驱动:服务端定期测速出结果,你这边只管拉最新文件,两边完全解耦。

收束与延伸

GitHub520 的核心思路其实很朴素:把“找最快 IP”这件脏活累活交给服务端每天做,用户侧只粘一个文件,零安装;配上“测速取中位数防抖动”“内容没变就不重写文件”这两个细节,让它能长期稳定地用。

如果你还想自己测速、换一套本地视角的 IP,可以git clone https://gitcode.com/GitHub_Trending/gi/GitHub520,按requirements.txt装好依赖(Windows 上额外装pycares),跑一次python fetch_ips.py就会在本地生成一份新的 hosts。用着有问题,直接去项目的 issue 区提,作者都在那儿。

【免费下载链接】GitHub520:kissing_heart: 让你“爱”上 GitHub,解决访问时图裂、加载慢的问题。(无需安装)项目地址: https://gitcode.com/GitHub_Trending/gi/GitHub520

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 10:10:35

AI配音工程化实践:从角色声线选择到批量干音合成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 10:10:10

边缘AI计算芯片实战:从NPU原理到量化部署全解析

一直有人问我,边缘 AI 计算芯片到底是个什么东西,和手机里的芯片、云端的 GPU 到底差在哪。今天不聊那些晦涩的架构白皮书,就从一个完整的落地项目讲起:把一路视频流从云端搬到一台不起眼的边缘小盒子上做实时分析,看看…

作者头像 李华
网站建设 2026/9/4 10:10:03

热轧带钢缺陷检测实战:YOLOv8工业定制与产线部署

简介:本资源是一套面向计算机相关专业本科生的毕业设计级工业视觉检测项目,基于YOLOv8实现热轧带钢表面缺陷(如划痕、凹坑、氧化斑等)的端到端检测方案,适用于毕业设计、课程设计及深度学习实战训练。资源包共2000个文…

作者头像 李华
网站建设 2026/9/4 10:09:18

LazyVim 安装教程:用懒人配置快速搭出 Neovim 高效编码环境

LazyVim 安装教程:用懒人配置快速搭出 Neovim 高效编码环境 【免费下载链接】LazyVim Neovim config for the lazy 项目地址: https://gitcode.com/GitHub_Trending/la/LazyVim LazyVim 是一套面向 Neovim 的懒人配置方案,开箱即用地预置了 Neovi…

作者头像 李华
网站建设 2026/9/4 10:07:25

连字等宽字体能压到多小?Maple Mono WOFF2 压缩实战指南

连字等宽字体能压到多小?Maple Mono WOFF2 压缩实战指南 【免费下载链接】maple-font Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font icons for IDE and terminal, fine-grained customization options. 带连字和控制台图标的…

作者头像 李华
网站建设 2026/9/4 10:05:38

.NET跨平台图像处理基础设施:C#、VB.NET与UWP统一图像API

简介:本资源是一套面向C#与VB.NET开发者的跨平台计算机视觉实践代码库,聚焦OpenCvSharp在.NET Core、.NET Framework及UWP三大运行时环境下的图像处理落地,专为需快速集成摄像头采集、实时滤波、二值化、目标识别等基础视觉能力的中高级开发者…

作者头像 李华