⚠️ 本项目代码由 AI 重构。仅作技术参考与学习用途,生产使用前请务必自行审计与测试。
本项目基于 hunshcn/gh-proxy(MIT 协议)重构,感谢原作者。
一个运行在 Cloudflare Workers 上的文件代理。
可以代理所有网站的文件资源(只要目标网站不使用 Cloudflare CDN 作为文件分发),不限于 GitHub。你可以用它下载任意文件地址,并自动获得 CORS 支持。
- GitHub 文件下载加速 / CORS 代理(release、archive、blob、raw 等)
- 任意网站的文件资源代理(非 Cloudflare CDN 站点均可)
- 前端跨域获取远程文件
- 通过极简首页快速提交链接并跳转代理
pnpm install
pnpm dev # 本地开发(wrangler dev)
pnpm deploy # 部署到 Cloudflare
pnpm test # 运行单元测试将目标 URL 直接拼在 Worker 域名之后:
https://your-worker.dev/<目标 URL>
例如:
# GitHub 文件
https://your-worker.dev/https://github.com/user/repo/releases/download/v1/file.zip
# 任意网站文件
https://your-worker.dev/https://example.com/path/to/file.bin访问 Worker 根路径(/)会返回首页,内置输入框和按钮,粘贴链接后点击跳转即可命中代理。
以下情况无法代理:
- 目标网站使用了 Cloudflare CDN / Bot Management(请求会被拦截,返回 403 或 JS Challenge)
- 目标文件需要 Cookie / 登录态才能访问(Worker 无法携带上游会话)
- 目标返回
Content-Security-Policy阻止嵌入(已自动剥离,但部分站点仍可能拦截)
src/
├── index.ts # Worker 入口
├── routes/
│ └── handler.ts # fetch 入口:根→首页 / 其他→代理 / 预检
├── proxy/
│ ├── proxy.ts # 核心代理:fetch 并流式回传
│ └── normalize.ts # /blob/ → /raw/
├── middleware/
│ ├── headers.ts # 请求头处理、Referer 裁剪
│ └── response.ts # 响应改写、Location 重写、CORS、预检
└── lib/
└── config.ts # 全局常量(PREFIX 等)
| 特性 | 说明 |
|---|---|
| 流式透传 | new Response(response.body, ...) 直接转发上游流,不缓冲 |
| 重定向改写 | 上游 3xx 的 Location 被重写为仍走本代理,保证重定向链不中断 |
| 首页内联 | 根路径直接返回 text/html,输入框 + 按钮,支持回车提交 |
| CORS 注入 | 自动添加 Access-Control-Allow-Origin,反射来源域名 |
| 安全头剥离 | 移除 CSP / CORP / clear-site-data 等阻碍嵌入的响应头 |
| 无状态 | 不依赖 D1 / KV / R2,配置仅 src/lib/config.ts 中的 PREFIX |
pnpm test覆盖 normalizeTarget、rewriteLocation、CORS 头、预检、代理链路(含上游 3xx 改写),共 16 个用例,不依赖外网。
路由前缀在 src/lib/config.ts 中:
export const PREFIX = "/";
// 若自定义路由为 example.com/gh/*,改为 "/gh/"(注意结尾斜杠)archive/legacy_workerproxy.js 为早期经典 Service Worker 语法脚本,已弃用,仅供参考,请勿部署。
MIT · 基于 hunshcn/gh-proxy 重构