翻墙全家桶

这篇文章主要介绍的是如何使用shadowsocks全家桶。 shadowsocks使用简单,效果好。是翻墙越狱必备之工具,优点是安全便捷,没有特征值,不易被封杀。 但劣势是需要用户自行维护翻墙规则,也就是传说中的PAC文件。

什么是PAC文件?

PAC全称是Proxy auto-config,自动代理配置文件,是一个类javascript风格的文件。 当shadowsocks客户端收到网络请求时会根据此文件中配置的规则,来决定此请求是转发给shadowsocks服务器还是直接发给对方网址。

因此说白了,一个URL要不要翻墙是PAC说了算。

此时此刻,问题来了。 如何维护PAC文件。

PAC文件的维护

shadowsocks客户端支持通过GFW List来更新翻墙规则,也支持用户来自定义翻墙规则。总体而言,这些都是对用户透明的。 但因为GFW List是由众多用户共同维护的,所以难免出现众口难调的情况。

假设一个网站在请求过程中,又需要请求一些需要翻墙的网站。 而这些翻墙网站并未出现在pac文件之中。 即便我们将这个网站添加到翻墙规则之中, 但其背后的网络请求,又不好一个一个去排查。

这个时候,要么放弃访问,要么自己维护规则。 一个规则还好办,但如果规则多了,想想一个个都要手写,一个痛字怎能领悟。

所以说了这么多,我推荐使用下面的翻墙全家桶来解决以上的问题。

翻墙全家桶 shadowsocks + privoxy + SwitchyOmega

SwitchyOmega 是chrome插件,用来判断是否需要走代理。 prioxy是一个轻量级的代理工具。
这三个工具的流程图如下:

浏览器发出网络请求之后,SwitchyOmega会根据内置的规则来这个网站所有的请求是否需要走代理。 如果需要,则会将请求转发给Privoxy,然后Privoxy将请求转发给Shadowsocks Client,在走Shadowsocks Server来取回数据。 如果不需要走代理,则直接通过正常网络路由转发请求。

因此当我们在浏览器发出一个请求之后, 如果出现某些请求无法响应的情况。 SwitchyOmega会提示这些请求是否需要添加到翻墙规则中。 用户只需要决定是或者否,就完成了维护规则。 因此规则的维护就变得异常简单。

下面我们来看看SwitchyOmega和Privoxy如何使用。

Privoxy 安装

brew install privoxy  

privoxy默认安装在 /usr/local/Cellar/privoxy/3.0.26/sbin/privoxy
路径版本名称可能有偏差,用户需要自行确定正确路径。

然后执行

ln -s /usr/local/Cellar/privoxy/3.0.26/sbin/privoxy /usr/local/sbin/privoxy  

编辑/usr/local/etc/privoxy/config

listen-address 0.0.0.0:8118  
forward-socks5 / 127.0.0.1:1086 .  

最后一个'.'一定要注意。 8118是privoxy的监听端口。 1086是shadowsocks client的监听端口

最后启动 privoxy

/usr/local/sbin/privoxy /usr/local/etc/privoxy/config

可以写成脚本,来判断当前是否启动privoxy,如果没有启动则自动启动

function startPrivoxy(){  
    if [ $(ps -ef |grep -c "privoxy" ) -eq 2 ]
    then
        echo ""
    else
        /usr/local/sbin/privoxy /usr/local/etc/privoxy/config
    fi  
}

SwitchyOmega 安装

需要注意代理服务器IP为127.0.0.1, 端口为8118(privoxy的监听端口)

终端环境中如何翻墙

上面所有的场景都是基于浏览器环境的, 下面演示如何在终端环境中使用翻墙服务。 不需要安装多余的工具,因为Privoxy会将所有流量转发给Shadowsocks,只需要将终端请求转发给Privoxy即可。 而完成这一步,仅需要设定两个环境变量:

http_proxy  
https_proxy  

这两个是Linux默认的代理变量。

下面是设定环境变量后的翻墙效果 注意端口一定要匹配你当前的Privoxy监听端口

这个时候可以忘记pac文件了, 随便访问一个被墙的网站。 如果SwitchOmega出现数字,则说明有一些请求被墙了。 点击看看哪些资源被墙,然后将这些资源添加到代理服务器场景中。