目录

通用翻墙脚本

比如我们在 go get 的时候,会遇到有些包要翻墙才能下载。在 npm install 的时候,node-sass 有些文件要翻墙下载。这些工具都会依赖于环境变量里面的http_proxy或者https_proxy,需要翻墙的时候,只要设置好这些环境变量,工具就能翻墙了。但是针对每个工具写一个脚本并不是一种可以接受的方案,我们需要更通用的方案。

参考ZeppLu的方案。

Windows 下的方案

PATH目录下新建一个proxy.bat的批处理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
@echo off

set http_proxy=socks5://127.0.0.1:1080
set https_proxy=127.0.0.1:1081

%*

echo ...

pause

Linux 下的方案

.bashrc或者.profile(取决于你使用的 tty)中增加以下设置

1
2
3
4
5
alias socks='ALL_PROXY=socks5://127.0.0.1:1080/ \
        http_proxy=http://127.0.0.1:1081/ \
        https_proxy=http://127.0.0.1:1081/ \
        HTTP_PROXY=http://127.0.0.1:1081/ \
        HTTPS_PROXY=http://127.0.0.1:1081/'

使用效果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
>proxy go get -u -v golang.org/x/net
Fetching https://golang.org/x/net?go-get=1
Parsing meta tags from https://golang.org/x/net?go-get=1 (status code 200)
get "golang.org/x/net": found meta tag get.metaImport{Prefix:"golang.org/x/net", VCS:"git", RepoRoot:"https://go.googlesource.com/net"} at https://golang.org/x/net?go-get=1
go: finding golang.org/x/net latest
Fetching https://golang.org/x?go-get=1
Parsing meta tags from https://golang.org/x?go-get=1 (status code 200)
Fetching https://golang.org?go-get=1
Parsing meta tags from https://golang.org?go-get=1 (status code 200)
...
请按任意键继续. . .
1
2
3
4
5
6
 ~ socks go get -u -v golang.org/x/crypto
Fetching https://golang.org/x/crypto?go-get=1
Parsing meta tags from https://golang.org/x/crypto?go-get=1 (status code 200)
get "golang.org/x/crypto": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at https://golang.org/x/crypto?go-get=1
golang.org/x/crypto (download)
package golang.org/x/crypto: no Go files in /e/project/go/src/golang.org/x/crypto