開源

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 查詢即時取決於作業系統低至中等
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