写在前面:本文介绍主要是为了学习科研以及开发工作。请遵守中华人民共和国法律法规,切勿在任何地方发布分裂国家,激化民族矛盾的言论。本博客不欢迎不爱国及极端人士。

背景

Shadowsocks(R)是我们常用的一款科学上网工具,它是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包。当我们开启Shadowsocks(R)进行科学上网之后,虽然可以对国外的网页进行流畅的访问,但是在命令行中使用git或者npm时,速度却并没有提升,这是因为它们并没有走Socks5的代理路线。要让git和npm走代理的路线,可以通过命令进行设置。

Shadowsocks(R)默认在1080端口开启了Socks5代理,但是它为了兼容HTTP代理模式,在8123端口使用ss_privoxy.exe开启了一个HTTP代理。不仅如此,Shadowsocks(R)在1080端口也支持http代理。

npm设置代理

一般来说,Shadowsocks-windows 会分别提供一个 http 代理和一个 socks5 代理,默认都是 1080 的端口。我们可以把npm的代理设置成http或者sock5这两种协议的代理,一般来说,只需要设置Socks5代理

设置http代理

1
2
3
4
5
6
7
# 假设本地代理端口为1080
npm config set proxy http://127.0.0.1:1080
npm config set https-proxy http://127.0.0.1:1080

# 有用户密码的代理
npm config set proxy http://username:password@127.0.0.1:1080
npm confit set https-proxy http://username:password@127.0.0.1:1080

设置Socks5代理

npm 不支持 socks 代理,但是我们可以用一个工具将 http 代理转成 socks 代理,然后将 npm 代理地址设置到这个工具的地址。

1
2
3
4
5
6
7
8
# 假设本地socks5代理端口为8081,默认的话一般是1080
# 首先安装转换工具
npm install -g http-proxy-to-socks
# 然后使用这个工具监听1080端口,支持http代理,然后所有1080的http代理数据都将转换成socks的代理数据发送到8081上
hpts -s localhost:8081 -p 1080
# 最后设置npm代理为1080
npm config set proxy "http://localhost:1080"
npm config set https-proxy "http://localhost:1080"

相当于又加了一个中间层,将 http 转成 Socks。

查看代理

1
2
3
npm config get
# or
npm config list

清除代理

1
2
3
npm config delete proxy
# and
npm config delete https-proxy

git设置代理

同npm一样,我们可以设置Socks5和http两种协议的代理,但是一般只要管Socks5一种就可以了

设置http代理

1
2
3
# 假设端口为1080
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

设置sock5代理

1
2
3
# 假设端口为1080
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

取消代理

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

后记

除了npm和git,像yarn,gradle这样的软件也可以设置代理,从而加快访问的速度

参考资料

Shadowsocks代理方式

npm设置socks5代理

Git设置代理