最近在折腾 Go 语言的时候,经常需要使用 go get 来下载和安装第三方库或软件。 经常会碰到 go get 无法访问,之前在编译 Filecoin 和 EOS 项目的时候也常常因为无法 clone Github 上的一些开源项目(如 MongoDB) 而导致编译失败, 因为这些第三方库或软件或项目对应的网站在国内无法访问,或者访问速度比较慢。所以设置一个终端代理就变得非常有必要了。

原理:很多人都代理软件是基于 socks5 协议的。而 go getgit clone 都是使用 http 协议。所以我们需要一个中间代理,把 socks5 协议转为 http 协议。

在 Github 上找到一个牛人开发的项目 cow, 安装之后简单配置就可以使用了。

COW 的设计目标是自动化,理想情况下用户无需关心哪些网站无法访问,可直连网站也不会因为使用二级代理而降低访问速度。

  • 作为 HTTP 代理,可提供给移动设备使用;若部署在国内服务器上,可作为 APN 代理,可使用多个二级代理,支持简单的负载均衡
  • 支持 HTTP, SOCKS5 和 cow 自身作为二级代理
  • 自动检测访问速度,仅对访问不流畅的网站使用二级代理
  • 自动生成包含直连网站的 PAC,访问这些网站时可绕过 COW

安装方式非常简单, Linux 和 OSX 系统直接执行下面的命令:

curl -L git.io/cow | bash

修改配置文档 vim ~/.cow/rc

#开头的行是注释,会被忽略
# 本地 HTTP 代理地址
# 配置 HTTP 和 HTTPS 代理时请填入该地址
# 若配置代理时有对所有协议使用该代理的选项,且你不清楚此选项的含义,请勾选
# 或者在自动代理配置中填入 http://127.0.0.1:7777/pac

listen = http://127.0.0.1:7777
# SOCKS5 二级代理
proxy = socks5://127.0.0.1:1080

# HTTP 二级代理
#proxy = http://127.0.0.1:8080
#proxy = http://user:password@127.0.0.1:8080
# cow 二级代理
#proxy = cow://aes-128-cfb:password@1.2.3.4:8388

修改 vim ~/.bashrc,在文件末尾加上下面代码,导出环境变量

export http_proxy=http://127.0.0.1:7777
export https_proxy=http://127.0.0.1:7777

然后启动你本机的代理软件。

至此,恭喜你,你的终端可以很流畅的访问 Github 了。