终端翻墙

开发过程中有时候需要更新 repo 仓库和代码,但是 GitHub 上的仓库和代码的下载速度感人。

翻墙倒是可以解决这个问题,但是终端默认不走翻墙代理,这个时候就需要我们做一些配置了。

我们可以终端当中输入以下命令使终端的请求走相应的代理

1
2
3
4
5
6
7
8
9
10
11
//设置http和https请求代理
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

//sock5协议请使用
export http_proxy=socks5://127.0.0.1:1080
export https_proxy=socks5://127.0.0.1:1080

//移除配置
unset http_proxy
unset https_proxy

我们拉取的时候有的时候可能会用到 ssh,我们可以这样配置

1
2
3
4
5
//设置所有协议代理
export ALL_PROXY=socks5://127.0.0.1:1080

//移除配置
unset ALL_PROXY

当前这些配置只对当前终端有效

改进

以上方式虽然解决了我们的需求,但是每次输入这些命令不免有些麻烦,所以我们进行了以下改进。

改进方案大致有以下两种:

  1. 编写 shell 脚本,需要时运行脚本
  2. 自定义 shell 命令,简化输入

相比 1 需要保存脚本文件来说,2 是一个不错的选择

自定义 shell 命令需要你打开~/.bashrc 文件(如果使用的是 zsh,对应文件为.zshrc)

1
2
//终端打开文件
open ~/.zshrc

然后在文件末尾以以下形式添加命令

1
alias {自定义指令名}='{具体指令}'

以上所有协议代理的命令就可以写作

1
2
3
//末尾的echo是为了在命令执行完毕输出一个字符串作为提醒,可删除
alias openproxy="export ALL_PROXY=socks5://127.0.0.1:1080; echo 'HTTP Proxy on';"
alias closeproxy="unset ALL_PROXY; echo 'HTTP Proxy off';"

这样我们就可以使用 openproxy 和 closeproxy 方便的在终端打开和关闭代理了

其他解决方案

我们最初的目的是为了更快的从 GitHub 上拿到文件,同事给我提供了另外一个解决方案。

即对 git 进行相关配置,使其在请求时走代理。

配置需要你打开~/.gitconfig 文件,在文件末尾添加

1
2
[http "https://github.com"]
proxy = socks5://127.0.0.1:1080

这样在 Git 发起向 GitHub 上的请求时就会默认走代理了。