开源

GitHub520:使用更新 Hosts 快速访问 GitHub 的开源解决方案

GitHub520 是一个受欢迎的开源工具,通过提供持续更新的 hosts 文件条目,解决 GitHub 访问缓慢和图片无法显示的问题。

GitHub520:使用更新 Hosts 快速访问 GitHub 的开源解决方案

对于全球数百万开发者来说,GitHub 是现代软件开发的中枢神经系统。但在许多地区——特别是亚洲部分地区、中东和南美洲——访问 GitHub 可能是一种令人沮丧的体验:页面需要几十秒才能加载、个人资料图片和仓库头像无法渲染、git clone 操作超时,而且发行版无法下载。GitHub520 的存在就是为了解决这类特定问题,采用优雅而简单的方法。

由 HelloGitHub 团队(一个策划热门项目的中文开源社区)创建,GitHub520 已成为该平台上星数最多的网络工具项目之一。它的前提很直接:GitHub 访问缓慢很少是故意封锁造成的,而是次优的 DNS 解析和 CDN 路由所致。通过维护一个持续更新的 hosts 文件,将 GitHub 的关键域名映射到最快的可用 CDN IP 地址,GitHub520 有效地绕过了故障的 DNS 管道,恢复了正常的访问速度。

该项目基于一个简单的观察:GitHub 使用由 Fastly 和 Akamai 提供的全球内容分发网络。从特定地区对 github.com 进行 DNS 查询,可能会返回位于世界另一端的服务器,即使有更近的边缘节点可用。通过将最优 IP 地址硬编码到系统 hosts 文件中,流量会直接路由到最近、最快的服务器。


GitHub520 在底层是如何工作的?

该项目的工程设计极简。一个 GitHub Actions 工作流按计划触发器(目前每天两次)执行,并对 GitHub 的主要域名进行 DNS 解析:github.comapi.github.comassets-cdn.github.comraw.githubusercontent.comuser-images.githubusercontent.com 以及若干其他域名。

该工作流对每个域名进行多次解析,以找到响应最快的 IP 地址,然后将结果格式化为标准的 hosts 文件格式。输出从 raw.githubusercontent.com 提供服务,也作为 GitHub Pages 网站发布在 raw.hellogithub.com/hosts

GitHub 域名用途典型改善
github.com主要网站、仓库页面加载速度提升 5-20 倍
api.github.comREST API 端点更快的 CLI 操作
assets-cdn.github.comCSS、JavaScript、字体完整页面渲染
raw.githubusercontent.com原始文件服务快速原始文件访问
user-images.githubusercontent.com个人资料图片、截图图片加载而非中断
codeload.github.comZIP/tarball 下载成功的发行版下载

如何安装与使用 GitHub520

安装过程因平台而略有不同,但遵循相同的一般模式:下载最新的 hosts 文件并用它替换系统 hosts 文件。

平台Hosts 文件位置安装方法
WindowsC:\Windows\System32\drivers\etc\hostsPowerShell 脚本(管理员)
macOS/etc/hosts终端脚本 (sudo)
Linux/etc/hosts终端脚本 (sudo)
Android/system/etc/hosts需 root,或使用应用

对于 Windows,以管理员身份打开 PowerShell 并执行仓库中提供的单行代码。对于 macOSLinux,该项目提供了一个 shell 脚本,可备份现有的 hosts 文件、下载新条目并追加它们:

# macOS/Linux 示例
curl -s https://raw.hellogithub.com/hosts >> /etc/hosts

该项目还提供一个"dev"hosts 文件,其中包含对开发者有用的其他域名,例如 gist.github.comgithub.iogithubstatus.com


GitHub520 解决了哪些问题?

问题根本原因GitHub520 解决方案
页面加载非常缓慢DNS 解析到远端 CDN 节点导向最近的 CDN 边缘
头像和图标中断图片 CDN 解析失败硬编码最优图片服务器 IP
git clone 失败或超时次优路由上的数据包丢失有效路由 clone 流量
发行版下载永远无法完成下载的 CDN 路由问题优化下载服务器路由
GitHub Actions 运行器缓慢API 端点延迟更快的 API 响应时间

GitHub520 与替代方案相比如何?

解决方案方法更新频率需要安装技术复杂度
GitHub520Hosts 文件条目每天两次非常低
VPN加密隧道持续中等
DNS over HTTPS加密 DNS 查询实时取决于 OS低至中等
Cloudflare WARP优化路由实时
代理 (HTTP/SOCKS)通过代理中继持续中到高

GitHub520 以其简单性脱颖而出。与 VPN 或代理不同,它不需要任何后台进程、订阅或配置。与基于 DNS 的解决方案不同,它不依赖于正常工作的 DNS 解析器。它是一个任何计算机都能读取的纯文本文件。


关于 GitHub520 的常见问题


GitHub520 适用于 GitHub Enterprise 和 GitHub Actions 吗?

GitHub520 主要处理主要的公共 GitHub 域名。对于 GitHub Enterprise Server(自托管)实例,hosts 条目需要针对特定安装的域名进行自定义。依赖 api.github.com 的 GitHub Actions 运行器受益于 API 路由的改善,但运行器到 Actions 工件存储的连接取决于其他可能涵盖或可能未涵盖的域名。

该项目维护了一个"dev"hosts 变体,其中包含用于开发者工作流程使用案例的更广泛域名集合,从而改善了对 GitHub Actions 和 Codespaces 交互的覆盖范围。


GitHub520 使用安全吗?

GitHub520 分发的 hosts 文件条目仅指向由 Fastly 和 Akamai 提供的官方 GitHub IP 地址——这些正是 GitHub 默认使用的相同 CDN。该项目不会通过任何第三方服务器或代理路由流量。源代码和工作流完全透明,并在 GitHub 上公开可见。社区的定期审计报告确认这些 IP 地址与官方 GitHub CDN 范围相符。

话虽如此,用户应始终在应用更新后验证其 hosts 文件的完整性,并保留安装脚本自动创建的备份副本。


延伸阅读

TAG
CATEGORIES