自建 GitHub 代理服务

我的浏览器有装一个油猴脚本

这样我在访问 GitHub 的时候,有一些代理选项。

image-20230420172817331

因为大多数时候,我如果不用梯子,直接点击原链接,是没法下载成功的。

但是后面的代理链接,有时候也不是很好用,像这种套 cloudflare 的,一天 10 万次居然都能被用完。看来苦逼的国内用户需求还是挺大的。

它的原理其实也不难。

原链接:https://github.com/usefathom/fathom/releases/download/v1.3.1/fathom_1.3.1_linux_arm64.tar.gz

代理链接:https://github.rc1844.workers.dev/usefathom/fathom/releases/download/v1.3.1/fathom_1.3.1_linux_amd64.tar.gz

也就是把 https://github.com 换成 https://github.rc1844.workers.dev

workers.dev 是 cloudflare 的域名,我们也可以自建自己的 worker 来代理 GitHub。需要使用开源项目:https://github.com/hunshcn/gh-proxy

项目的 readme 里面也有写怎么自建 worker 代理。网上也有挺多人写教程的,我自己搭建了一个,结果发现,我的网络好像连访问 cf 都不流畅……

后来了解到,原来是 workers.dev 已经被墙了……

解决方法是绑定自己的域名,不过它要求域名的 DNS 解析,得是托管在 cloudflare 才行。

接着我想研究看看搭建在自己的服务器上,反正服务器的流量一般也用不完。

使用 docker 的话,很快,一行命令就行,没什么难度。

docker run -d --name="gh-proxy-py" \
-p 0.0.0.0:80:80 \
--restart=always \
hunsh/gh-proxy-py:latest

不过这镜像有点大,居然要 910MB ……

hunsh/gh-proxy-py        latest    745d6b4639c3   23 months ago   910MB

体验一下看到有效果,赶紧把它删了,我这小小的服务器空间宝贵,舍不得。

我打算部署 python 版本,因为相比之下占用空间就小很多了。

先把项目克隆到服务器上,然后修改 main.py

git clone https://github.com/hunshcn/gh-proxy

需要安装依赖

pip install flask requests

运行起来

python3 app/main.py

也是很简单就可以运行起来,看到可以正常访问之后,我再次把 ip 改为 127.0.0.1 端口就随便设置一个,之后再使用反向代理。

目前我就使用 screen 让它在后台运行着,比较好的处理方式应该是用 systemd。

观察了下,感觉还行,占用的系统资源并不多。

我在自己的服务器上搭建了一个,在 cloudflare 的 workers 也搭建一个。之后可以将自己的链接添加到油猴脚本里面。

my-github-proxy-shadow

就是替换掉脚本中原来的,这样我可以在 GitHub 上面点击那个属于自己的按钮。