代理模式
它有个很方便的地方是可以根据访问的网址是否为外网决定是否进行代理连接。但是它有两个地方可以进行代理判断,
- 一个是“系统代理模式”
- 一个是“代理规则” 那么它们有什么区别,又分别实现什么功能呢?而Shadowsocks(R)整个的代理流程是怎样的呢?
Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。
在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。[1]
Shadowsocks(R)默认在1080端口开启了Socks5代理,但是它为了兼容HTTP代理模式,在8123端口使用ss_privoxy.exe开启了一个HTTP代理。不仅如此,Shadowsocks(R)在1080端口也支持http代理。
我们知道,IE的代理设置不论是PAC还是全局,都是只支持HTTP代理的。也正是因为Shadowsocks(R)支持HTTP代理方式,才能使IE以及一些其他不支持Socks5代理(但支持HTTP代理)的软件进行代理。[2]
浏览器一般会自动启用系统代理,而其它软件则需要自身支持HTTP代理或Socks5代理,而且一般需要进行手动配置才可以进行代理。
系统代理模式
系统代理设置顾名思义就是Shadowssocks(R)在系统设置里面设置一个代理服务器,让软件可以直接调用系统代理设置直接连接代理服务器,而不需要单独的配置。
这样所有的软件都可以知道现在有一个代理服务器可以连接,而且只要跟随系统代理设置即可连接,无需额外配置。
一般而言,只有浏览器(包括内嵌在各种软件中的浏览器,比如 WeGame、优酷、迅雷9等软件中的内嵌浏览器)会自动调用系统代理进行连接。
而其它大部分应用一般是不会自动启用系统代理进行连接的,要在支持使用代理的软件里面手动设置, 所以这个选项的设置不会影响到这些软件 。
直连模式
直接模式会在系统代理设置里关闭代理,使启用系统代理设置的软件(一般为浏览器)直接连接网络。
但是,它并没有关闭在本地构建的代理服务器,其它手动配置代理的软件仍然可以进行连接。
PAC模式
PAC模式会在系统代理设置设置一个PAC脚本文件,让系统通过这个文件自动选择每一个连接是否启用代理服务器,以及选择哪一个代理服务器。
PAC 代理自动配置(英语:Proxy auto-config,简称PAC)是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。
一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理器或者直接访问。当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自动发现协议(WPAD)自动配置的。
简单来说,PAC是一种自动选择每一个连接是否使用代理服务器,以及选用哪一个代理服务器的技术,而自动选择是通过一个JavaScript脚本文件实现的,这个脚本文件制定了一系列的规则进行判断。
我们选择在系统代理模式中选择PAC模式后,PAC才会生效。
全局模式
全局模式会在系统代理设置手动设置一个代理服务器,所有跟随系统代理设置的软件(一般是浏览器)都会使用这个代理服务器。
代理规则
Shadowsocks(R)会在用户的电脑上构建一个本地Socks5代理,代理规则选项是对所有连接了这个代理的网路请求进行判断,根据不同的判断依据选择是否进行代理。所以,代理规则选项是控制是否进行代理的最终开关。
代理规则选项通过域名的IP地址来判断是否某个域名是否来自大陆,也可以通过自定义规则来判断。
通过流程图可以看出,如果系统代理模式设置了PAC模式,浏览器等通过系统代理设置进行连接的软件要通过PAC、代理规则两层判断,而剩余情况只需通过代理规则这一层判断。