比如只要检测到访问 github 地址就自动在 url 前面加上 mirror.ghproxy.com/

别说什么梯子了,你会在服务器上搭建梯子吗

因为是一台阿里云服务器,并不想在服务器里面挂梯子,访问 github 的需求是有一些定时运行的脚本,会访问到 github ,对其他的没有需求

在路由器上做个劫持吧,其他没啥好的方案

考虑到 https ,劫持都不好做,还是弄个梯子吧

github.com/jiacai2050/gooreplacer

~/.gitconfig

[url " ghproxy.com/ github.com/"]
insteadOf = github.com/

装个 Windows 用 proxifier

一种可行的方案就是自己弄个根证书签个私有的 github 证书,然后设置 github.com 解析都 127.0.0.1 ,然后在本机配置 nginx 转发到 mirror.ghproxy.com/估计行

不过似乎太麻烦了吧,简单一点为 github.com 在 hosts 中设置一个固定地址,然后配置 iptables 配置地址端口重写把该地址的流量转到你的加速代理就好了吧,为了把普通流量解析成代理协议,之前写过一个脚本
python3 -m sevent.helpers.arproxy -h
先 pip install sevent 包,这个脚本会解析 http 和 tls 头提取访问域名,然后使用你指定的代理协议转发到你配置的代理服务器来代理访问,你可以试试看能不能满足你的需求

用浏览器插件最方便,你可以看看这个插件行不行 chrome.google.com/webstore/detail/requestly-modify-headers/mdnleldcmiljblolnjhpnblkcekpdkpa

不行就按 google 跳转到 cn 站点的插件改写一下 github.com/chenzhuo914/google-cn-devsites-extension

不好意思,好像没考虑到命令行

fake-ip ,劫持本机 dns 然后把 github 解析到 198 之类的非公网地址上,然后在本机注册一个 tun 设备处理这些流量给它加代理(没错我说的就是 clash 的 tun 模式)

如果是脚本里,可以来个判断.

PROXY_URL=" ghproxy.com"
GOOGLE_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" " www.google.com")
PROXY_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" "${PROXY_URL}")

if [ $GOOGLE_HTTP_CODE == "200" ]; then
 curl -L -O  raw.githubusercontent.com/.../.../...
else
 if [ $PROXY_HTTP_CODE == "200" ]; then
 curl -L -O ${PROXY_URL} raw.githubusercontent.com/.../.../...
 else
 curl -L -O  raw.githubusercontent.com/.../.../...
 fi
fi

接上文,变量少个 /

PROXY_URL=" ghproxy.com/"

我刚刚闲得蛋疼想了下还有另外一个办法,稍微有点复杂,需要几个服务:
1.dns 服务器,或者 hosts……不管哪种,把 URL 解析到要么本机或者专门的内网虚拟机。建议后者,前者容易抽风。
2.apache 或者 nginx (反正某种 web 服务器)开启 URL Rewrite 模块,配置重写 URL 规则( rewrite 到你要的域名)。http 和 https 都要配置。注意:这台机器的 DNS 不可访问或请求上面 1 的 DNS 。
3.用于给 2 的服务使用的、自己添加信任的 SSL 证书,用于支持 2 的 https 访问。
这样搞一下应该可以实现无痕转发(就是你访问 github.com 实际上被 dns 先劫持到本地的服务器,然后本地的服务器反代到加速网址)。我以前用 Windows server 搞过内网部分劫持 ubuntu 源加速就用的这个类似的手法,只是我的 HTTP 服务器就在本地,所以没有做反向代理。

直接用 clash 翻墙不就行了吗?

没必要 全程梯子就行了

都上 V2EX 了 还用教怎么魔法上 github 吗?

github.com/dotnetcore/FastGithub

git 源
GIT_SSL_NO_VERIFY=1 git clone gh-cf.mirr.one/bot-h/kodbox.git
GIT_SSL_NO_VERIFY=1 git clone gh.gcdn.mirr.one/bot-h/kodbox.git

githubusercontent 全域
.githubusercontent.com -> -gh.mirr.one

raw-gh.mirr.one/initdc/vvtt/master/gen.sh

github 到 ghuser 自动跳转
gh-rep.mirr.one/initdc/vvtt/raw/master/gen.sh

githubusercontent 全域
.githubusercontent.com -> -ghuser.mirr.one

raw-ghuser.mirr.one/initdc/vvtt/master/gen.sh

这种另类需求只有挂代理最简单,做劫持只会更麻烦。命令行下装个图形界面,再上个代理程序其实很快就能解决问题

为啥不能挂代理呢?根本不需要装图形界面,直接一个 clash-core 就能解决问题,而且也不用服务器全局走代理工作,你只需要在下载脚本之前,export 环境变量就行了。

直接油猴脚本判断跳转不就完事了

http 代理挺好的