ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

GitHub520:在 hosts 里写 40 行映射,解决 GitHub 图裂和加载慢 GitHub520在 hosts 里写 40 行映射解决 GitHub 图裂和加载慢【免费下载链接】GitHub520:kissing_heart: 让你“爱”上 GitHub解决访问时图裂、加载慢的问题。无需安装项目地址: https://gitcode.com/GitHub_Trending/gi/GitHub520GitHub520 解决的就是 GitHub 图裂、加载慢的问题打开项目页面时 README 里的 logo 变成小碎图标、头像全灰、clone 仓库转几分钟超时。它的做法是把 40 条“域名 → 最快 IP”的映射写进你电脑的 hosts 文件一个系统自带的、手动指定域名指向哪个 IP 的文件全程不安装任何软件。读完本文你 5 分钟就能配置生效还能说清楚它背后干了什么。它是如何干活的先收候选 IP再挑最快 从两个渠道拿候选 IP同一个域名DNS 返回的 IP 不固定而且不同 IP 从国内访问的速度差很多。所以 GitHub520 不直接用 DNS 返回的第一个 IP而是从两个渠道查DoHDNS over HTTPS走 HTTPS 的加密 DNS 查询按顺序问阿里 DNS、DNSPod、Google谁先成功用谁普通 DNS 查询问 114DNS、阿里、腾讯 DNS外加 Cloudflare、Google 兜底两个渠道的结果合并去重再剔除1.0.1.1、127.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(keylambda 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/hostsLinux/etc/hostssudo vi /etc/hostsAndroid/system/etc/hosts需要 rootiPhone/etc/hosts需要越狱第三步刷新 DNS 缓存让它生效Windows 在 CMD 输入ipconfig /flushdnsmacOS 执行sudo killall -HUP mDNSResponderLinux 执行sudo nscd restart报错了就先sudo apt install nscd。多数情况立即生效实在不行重启一次电脑。这里有个小技巧——不想手动复制的话GNU/Linux 和 macOS 各有一条命令搞定命令会先删掉旧的 GitHub520 段落再追加新的可以重复执行# GNU/LinuxUbuntu/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 组按下面填类型选RemoteURL 填https://raw.hellogithub.com/hosts自动刷新选1 小时。配好后 hosts 有更新会自动拉取你彻底不用管更新这件事。方式 CAdGuard 用户直接加规则如果你在用 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), timeout1): latencies.append((time.time() - start) * 1000) except Exception: latencies.append(1000) latencies.sort()注意except那两行连不上的 IP 直接按 1 秒超时记录。也就是说“连不通的 IP”会在排序里天然垫底被刷掉不用额外写错误处理。IP 没变就不重写文件项目定期跑 fetch_ips.py 测速、更新 hosts.jsonupdate_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),仅供参考
返回列表