Shadowsocks代理方式

ShadowsocksR(以下简称SSR) 一直是科学上网的神器,即使在现在VPN封杀无数、Shadowsocks被嗅探出特征而被封锁的艰难时刻,SSR凭借其混淆功能仍能屹立不倒。那么它能代理哪些软件呢?

它有个很方便的地方是可以根据访问的网址是否为外网决定是否进行代理连接。但是它有两个地方可以进行代理判断,一个是“系统代理模式”,一个是“代理规则”,那么它们有什么区别,又分别实现什么功能呢?而Shadowsocks(R)整个的代理流程是怎样的呢?

本文将对其一一解答。

Shadowsocks(R)运行原理

详见:Shadowsocks(R)基本原理 - vimcaw的个人博客

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代理,而且一般需要进行手动配置才可以进行代理。

系统代理模式

详见:Shadowsocks(R)设置:系统代理模式、PAC、代理规则 - vimcaw的个人博客

系统代理设置顾名思义就是Shadowssocks(R)在系统设置里面设置一个代理服务器,让软件可以直接调用系统代理设置直接连接代理服务器,而不需要单独的配置。

这样所有的软件都可以知道现在有一个代理服务器可以连接,而且只要跟随系统代理设置即可连接,无需额外配置。

一般而言,只有浏览器(包括内嵌在各种软件中的浏览器,比如 WeGame、优酷、迅雷9等软件中的内嵌浏览器)会自动调用系统代理进行连接。

而其它大部分应用一般是不会自动启用系统代理进行连接的,要在支持使用代理的软件里面手动设置, 所以这个选项的设置不会影响到这些软件

代理规则

Shadowsocks(R)会在用户的电脑上构建一个本地Socks5代理代理规则选项是对所有连接了这个代理的网路请求进行判断,根据不同的判断依据选择是否进行代理。所以,代理规则选项是控制是否进行代理的最终开关。

代理规则选项通过域名的IP地址来判断是否某个域名是否来自大陆,也可以通过自定义规则来判断。

如何用Shadowsocks(R)代理非浏览器软件、游戏

有两种方法:

  1. 在支持代理的软件中手动设置
  2. 将Shadowsocks(R)转为类VPN的全局代理

详见:如何用Shadowsocks(R)代理非浏览器软件、游戏 - vimcaw的个人博客

代理流程图

参考网络上的资料,我画了一张Shadowsocks(R)代理流程图:

upload successful

通过流程图可以看出,如果系统代理模式设置了PAC模式,浏览器等通过系统代理设置进行连接的软件要通过PAC代理规则两层判断,而剩余情况只需通过代理规则这一层判断。

参考资料:

  1. Shadowsocks - 维基百科,自由的百科全书
  2. 关于科学上网的一些软件的原理和使用技巧 - FanZheng’s blog
  3. 关于Shadowsocks的小白常见问题 总结篇 | 逗比根据地
The End