>

Shadowsocks 简介

经常有翻墙需求的人应该对 Shadowsocks 这个工具不陌生,简单来说,它是一款通过 sock5 协议进行代理的工具,Windows 下使用比较简单,只需要下载好 ss 客户端,配置好服务器地址及 pac 列表,然后在浏览器中使用代理插件(比如 Chrome 中使用 SwitchyOmega),配置好代理规则即可正常翻墙了。 这种使用浏览器配置代理规则的方式有一个局限就是,只能在浏览器中翻墙,如果需要在命令行中,或者在程序中调用需要访问外网的服务,那么就变得不太可行。

本文就是介绍如何在命令行中也可以使用 shadowsocks 进行代理。

一、安装 Shadowsocks

命令行中的 shadowsocks 客户端是一个 python 脚本,可以直接通过下列命令来安装

$ pip install shadowsocks

或者,在 Ubuntu/Arch Linux 也可以使用如下命令安装

$ apt-get install shadowsocks -y

$ pacman -Sy shadowsocks

安装完成之后,会得到一个 /usr/bin/sslocal 的可执行文件,实际上是一个 python 脚本(python 2)。

安装完成后编辑配置文件,填写对应服务器地址

vim ~/.etc/shadowsocks.json

下面是一个服务器配置样例:

1
2
3
4
5
6
7
8
9
10
11
{
"server":"1.1.1.1",
"server_port":8383,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"passwd",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": true,
"workers": 1
}

最后启动代理

$ nohup sslocal -c /etc/shadowsocks.json &

二、将 Socks5 代理转化为 http 代理

由于 shadowsocks 使用的是 socks5 协议代理,因此我们还需要把其转换成 http 代理以便访问外网的 http 服务。在 Linux 下我们需要借助第三方软件完成,这里我们使用 privoxy 这个工具。

Ubuntu 下使用如下命令安装 privoxy

apt-get install privoxy -y

编辑配置文件

先备份原配置文件

$ mv /etc/privoxy/config /etc/privoxy/config.bak
在新建一个配置文件
$ vim /etc/privoxy/config

privoxy 配置样例如下

1
2
3
4
5
6
7
8
# 转发地址
forward-socks5 / 127.0.0.1:1080 .
# 监听地址
listen-address localhost:8118
# local network do not use proxy
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .

最后启动 privoxy 并查看状态:

$ systemctl start privoxy
$ systemctl status privoxy

三、创建快捷代理命令

完成上两步配置后,即可将需要代理的请求指向 127.0.0.1:8118 端口即可。
建议,不要设置全局的访问都使用这个代理,可以写一个代理脚本,只为需要代理的请求触发代理。
如下:

$ vim /usr/local/bin/proxy

脚本内容如下

1
2
#!/bin/bash
http_proxy=http://127.0.0.1:8118 https_proxy=http://127.0.0.1:8118 $*

赋予可执行权限

$ chmod +x /usr/local/bin/proxy

最后,对任何想要走代理的命令,只需要在前面加上 proxy 即可,样例如下

$ proxy gvm install go1.8.3
$ proxy go get -t -u -v ./...

简化流程

熟悉了上述过程之后,可以把流程简化如下:

1、先启动 sslocal
$ nohup ssolcao -c /etc/shadowsocks.json 2&>1 &
2、启动 http proxy 转换器 privoxy
$ systemctl start privoxy
3、设置环境变量http_proxy 和 https_proxy
$ source ~/.etc/proxy1  // 设置
$ source ~/.etc/proxy2  // 还原

如果你对我的文章感兴趣,欢迎留言或者关注我的专栏。

微信公众号:“知辉”

搜索“deliverit”或

扫描二维码