花式使用 proxy 访问 Github - Github No.1, Proxy No.2, XXX No.7

更新日期: 2021-03-29 阅读次数: 15241 字数: 597 分类: Git

转投 Sage 开发 wordpress 模板,初始化 Sage 代码目录折腾了我半天时间。

遇到的第一个问题是, composer 无法拉取 dev-master 的代码

$ composer create-project roots/sage your-theme-name dev-master

由于我使用的是 composer 国内镜像,开始怀疑是国内镜像有问题,然后清空了 ~/.composer 切换为官方镜像,依然没有响应。

但是拉取 release 版本,却一切正常

$ composer create-project roots/sage your-theme-name

我猜测,composer 的逻辑大概是,缓存了 release 版的代码,而 dev-master 的代码并没有及时缓存,需要从 github 服务器拉取。 而国内近期访问 github 又有问题(要么超时,要么无法访问),所以导致无法通过 composer 初始化 Sage 的代码。

于是,我妥协了,从 Github Web 上下载了最新的 Sage Zip 代码包,置于 themes 目录下解压,然后 rename 成 your-theme-name, 再手动运行

composer install

果然可以了。

然而,这只是噩梦的开始!

使用 Yarn 安装依赖的时候,报错

error An unexpected error occurred: "https://github.com/rmarscher/monkey-hot-loader.git: connect ETIMEDOUT 192.30.253.112:443".

ping 192.30.253.112
ping 192.30.253.113

均没有响应,说明 github 又被限速了。

Fuck! 好在我电脑上永远开启着 proxy,为 git 配置一下 proxy

git config --global http.proxy 'socks5://127.0.0.1:1080' 
git config --global https.proxy 'socks5://127.0.0.1:1080'

对应的 ~/.gitconfig 文件中,自动增加了这两个配置

[http]
	proxy = socks5://127.0.0.1:1080
[https]
	proxy = socks5://127.0.0.1:1080

然而,yarn 运行超时依旧,但是我已经可以正常的 git pull/push github 上的代码了。

这说明 yarn 实际上还有对 github 的访问逻辑,但是这些请求不是通过 git 进行的。

那么解决的办法就是需要让终端命令也能够通过 proxy 访问 github

Ubuntu 上让 proxy 支持终端命令

sudo apt-get install polipo
sudo vim /etc/polipo/config

增加配置

socksParentProxy = "localhost:1080"
socksProxyType = socks5

重启 polipo 服务,使配置生效

sudo service polipo stop
sudo service polipo start

确认生效的方法

$ curl ip.gs
当前 IP:x.x.x.x 来自:中国山东烟台 联通
$ http_proxy=http://localhost:8123 curl ip.gs
当前 IP:x.x.x.x 来自:美国纽约州纽约 digitalocean.com

然后再通过 proxy 执行 yarn

http_proxy=http://localhost:8123 yarn

终于,可以继续敲代码了。。。

国内的程序员真是苦啊!

tags: git: connect ETIMEDOUT git 无法 clone git clone 超时

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式