用 Cloudflare Worker 做 GitHub 加速

2026-09-30 · Cloudflare Workers · 约 6 分钟阅读

GitHub 本身能连,但 clone 只有几十 KB/s、raw 文件经常转圈、release 下载龟速。 网上现成的加速站不少,但要么随时跑路,要么不知道中间动了什么。 干脆自己写一个 —— 就是导航里的「GitHub 加速」,灵感来自开源项目 afoim/GithubSiteProxyForCloudflareWorker。

思路:域名映射,而不是路径代理

最常见的一类加速站是 proxy.com/https://github.com/... 这种路径式代理, 缺点很明显:任何页面里的相对链接、重定向、脚本资源都会错乱。

更彻底的做法是给每个 GitHub 域名配一个短前缀子域:

github.com                  →  gh.susua.kdns.fr
raw.githubusercontent.com   →  raw.susua.kdns.fr
api.github.com              →  api.susua.kdns.fr
avatars.githubusercontent.com → avatars.susua.kdns.fr

Worker 按 prefix.domain 反查真实域名,替换 Host 后转发,路径原样保留。 这样 git clone https://gh.susua.kdns.fr/user/repo.git 和原始命令只差一个域名。

关键的三处细节

1. 响应文本里的链接要改写

直接把 GitHub 页面透传回去,页面里的 https://github.com/... 链接还是指向原站。 所以对 text/*、application/json 这类响应体做一次域名替换, 把 github.com 换成本站的 gh. 前缀,页面内的跳转才继续走代理。 (同时要删掉 content-encoding / content-length,因为内容长度变了。)

2. 大文件不要经 Worker 中转

Workers 有请求/响应大小与 CPU 时间限制,release 包动辄几百 MB。 解法是:命中 /releases/download/ 或 /archive/ 时直接 302 跳到一个专用加速站,让大流量绕开 Worker。

3. 非大陆出口自动回源

代理只在网络受限时有意义。读一下请求头里的 CF-IPCountry, 非 CN 的访客直接 302 回原始 GitHub —— 既省了 Worker 的额度,也避免「明明能直连还要多绕一跳」。

效果与代价

小结

核心就三件事:域名映射保证链接可用、响应改写保证跳转正确、大文件跳转保证不爆额度。 一个几百行的 Worker 就能长期自用,比依赖随时可能消失的公共加速站踏实得多。

← 返回文章列表