Cloudflare Pages 虽然可以反代 Github 私有仓库,但是存在着以下的限制:
- 同一时间只支持构建一个项目
- 每月最多构建 500 次
- 最大支持 10 个自定义域名
- 网站最多包含 20000 个文件
- 最大文件大小 25M
如果你的仓库变动比较频繁,并且对实时性有要求,那么 Workers 更符合你的需求,Workers 每日有 10 万次调用额度,远远超出 Pages 的每月 500 次。
具体步骤:
- 在 github 创建好私有仓库
- 新建 Personal access tokens
必须选择 classic,Expiration 为 No expiration,在下面的 Select scopes 选择 repo, 注意保存生成的 token - Cloudflare 账户主页选择 workers-and-pages,新建一个 workers 函数,模板和名称任意,编辑代码,输入以下内容:
export default {async fetch(request, env, ctx) {let path = request.url.split("/").pop()
let token = "刚才生成的 token"
let owner = "github 用户名"
let repo = "github 仓库名"
let url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}`
if (path == "") {return new Response("Not found")
}
let download_url = await fetch(url, {
method: 'GET',
headers: {
"Accept": "application/vnd.github+json",
"Authorization": `Bearer ${token}`,
"X-GitHub-Api-Version": "2022-11-28",
"User-Agent": request.headers["User-Agent"]
}
})
let origin_url = await download_url.json()
if (origin_url["name"] != path) {return new Response("Not found")
}
let origin = await fetch(origin_url["download_url"], {
method: 'GET',
headers: {"User-Agent": request.headers["User-Agent"]
}
})
return origin
},
};
将以上代码中的 token、owner、repo 替换成自己的,保存部署即可
访问:https://workers 域名 / 仓库文件相对路径,即可获取私有仓库的文件
正文完
发表至: 开源脚本
2023-07-21