使用cloudflare workers反代github

如果你懒

我做了一个镜像站,自取不谢。

如果你吃饱了撑着

就跟我一起做。

打开 cloudflare

pApPLZV.png
这一步不会有人不会吧

菜单下拉点击 Workers 和 Pages(如果你是简体中文的话),

pApPOaT.png

我这里已经创建过一个了,点击 创建

pApP7Mn.png

没创建过就是这样子,点击 创建 Worker

pApPHrq.png

这里不用管直接点击 部署。我懒得在建一个直接看建过的也一样。

pApPbq0.png

点击 编辑代码。进去等代码加载好。

pApPviF.png

把代码改成这个样子:

const upstream = 'github.com' const upstream_path = '/' const upstream_mobile = 'github.com' const blocked_region = ['KP', 'SY', 'PK', 'CU'] const blocked_ip_address = ['0.0.0.0', '127.0.0.1'] const https = true const replace_dict = {'$upstream': '$custom_domain', '//github.com': ''} addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request)) }) async function fetchAndApply(request) { const region = request.headers.get('cf-ipcountry').toUpperCase() const ip_address = request.headers.get('cf-connecting-ip') const user_agent = request.headers.get('user-agent') let response = null let url = new URL(request.url) let url_hostname = url.hostname if (https == true) { url.protocol = 'https:' } else { url.protocol = 'http:' } if (await device_status(user_agent)) { var upstream_domain = upstream } else { var upstream_domain = upstream_mobile } url.host = upstream_domain if (url.pathname == '/') { url.pathname = upstream_path } else { url.pathname = upstream_path + url.pathname } if (blocked_region.includes(region)) { response = new Response('Access denied: WorkersProxy is not available in your region yet.', { status: 403 }) } else if (blocked_ip_address.includes(ip_address)) { response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', { status: 403 }) } else { let method = request.method let request_headers = request.headers let new_request_headers = new Headers(request_headers) new_request_headers.set('Host', url.hostname) new_request_headers.set('Referer', url.hostname) let original_response = await fetch(url.href, { method: method, headers: new_request_headers }) let original_response_clone = original_response.clone() let original_text = null let response_headers = original_response.headers let new_response_headers = new Headers(response_headers) let status = original_response.status new_response_headers.set('access-control-allow-origin', '*') new_response_headers.set('access-control-allow-credentials', true) new_response_headers.delete('content-security-policy') new_response_headers.delete('content-security-policy-report-only') new_response_headers.delete('clear-site-data') const content_type = new_response_headers.get('content-type') if (content_type.includes('text/html') && content_type.includes('UTF-8')) { original_text = await replace_response_text(original_response_clone, upstream_domain, url_hostname) } else { original_text = original_response_clone.body } response = new Response(original_text, { status, headers: new_response_headers }) } return response } async function replace_response_text(response, upstream_domain, host_name) { let text = await response.text() var i, j for (i in replace_dict) { j = replace_dict[i] if (i == '$upstream') { i = upstream_domain } else if (i == '$custom_domain') { i = host_name } if (j == '$upstream') { j = upstream_domain } else if (j == '$custom_domain') { j = host_name } let re = new RegExp(i, 'g') text = text.replace(re, j) } return text } async function device_status(user_agent_info) { var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"] var flag = true for (var v = 0; v < agents.length; v++) { if (user_agent_info.indexOf(agents[v]) > 0) { flag = false break } } return flag }

点击 部署 即可。然后你就会发现这些链接都打不开。

你可以自定义一个域名,前提是你有域名,我推荐去 register.us.kg,免费注册域名。

域名注册

首先你得注册一个账号吧。

我这里排版有点乱不过没关系。这些个人信息你可以去这个网站生成一个。

像我就是这样

把这些信息像我这样填进去。邮箱用自己的,填完不要丢,这些名字、电话号码、街道什么的还要用。

这边邮箱填错了,后来我改回自己的邮箱了。

注意街道需要有两个英文逗号,电话号码去掉 - 加上前缀 +1-

这边人机验证后注册,去收邮件,登录。

这里点击选择框,选择最下面的。

点击 Proceed to Default Server (Click me to redirect KYC Page)

注册原因填 setup a website 做一个网站。下面一个空填 work ID

还记得我让你记住身份吗?随便去一个比如说洛谷云剪贴板,总之就是可以打字并且背景是白色的地方。

像我这样截图,上传,点击 submit

回到主站,你就会发现登录好了。

点击左侧菜单栏的 Domain Registration,输入你想要的域名,点击 check,如果没有被人注册,就是这个样子。

前往 dash.cloudflare.com。点击右上角的 添加站点。把域名输入进去。

计划选择免费,因为我没钱,DNS 记录先不用管,一路继续,到了这个地方。

把两个服务器复制下来,粘贴到刚刚的 register.us.kg。

点击 Register 就好了。这个域名可以给你用一年,你可以在离到期还有 180 天的时候免费续订。就是在 Dashboard -> Manage my domains 点击你要续订的域名,下拉点击 Renew (if there's less than 180 days left until expiry) 即可。

回到 cloudflare,点击 设置 -> 触发器,点击 添加自定义域,输入你的域名,最后点击 添加自定义域 就好了。

pApPXIU.png

可能你会发现你的证书还不是有效的,不要慌,过一会就好了。

打开我们的域,可以发现下载什么的也是完全可用……吧。

pApPxG4.png

只是偶尔有些慢而已。

参考:

  1. 2024两种永久免费域名,手快有手慢无,可托管CF,零失败率,解决所有问题

  2. 利用Cloudflare workers反代github


__EOF__

本文作者volatile
本文链接https://www.cnblogs.com/zjh114/p/18357694.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   volatiles  阅读(608)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示