基于ShadowSocks的各种翻墙姿势
墙的概念
翻墙中的墙的概念,即Great Firewall,简称GFW,维基百科中的表述相当详细。
什么是SS/SSR
ss:ss作者是clowwindy,大约两年前,他自己为了翻墙写了shadowsocks,简称ss或者叫影梭,后来他觉得这个东西非常好用,速度快,而且不会被封锁,他就把源码共享在了github上,然后就火了,但是后来作者被请去喝茶,删了代码,并且保证不再参与维护更新。现在这个好像是一个国外的大兄弟在维护。
ssr:在ss作者被喝茶之后,github上出现了一个叫breakwa11(破娃)的帐号,声称ss容易被防火墙检测到,所以在混淆和协议方面做了改进,更加不容易被检测到,而且兼容ss,改进后的项目叫shadowsocks-R,简称ssr,然后ss用户和ssr用户自然分成了两个派别,互相撕逼,直到前阵子,破娃被人肉出来,无奈之下删除了ssr的代码,并且解散了所有相关群组。
ss和ssr它的原理都是一样的,就是socks5代理,。socks代理只是简单的传递数据包,而不必关心是何种协议,所以socks代理比其他应用层代理要快的多。socks5代理是把你的网络数据请求通过一条连接你和代理服务器之间的通道,由服务器转发到目的地,这个过程中你是没有通过一条专用通道的,只是数据包的发出,然后被代理服务器收到,整个过程并没有额外的处理。通俗的说,现在你有一个代理服务器在香港,比如你现在想要访问google,你的电脑发出请求,流量通过socks5连接发到你在香港的服务器上,然后再由你在香港的服务器去访问google,再把访问结果传回你的电脑,这样就实现了翻墙。
直连模式就是流量不走代理 ,PAC模式简单说就是国内地址不走代理,国外走代理,全局模式就是不管国内国外,所有流量通过代理服务器访问
下载ss或者ssr客户端推荐去github或者https://shadowsocks.org/en/index.html这里去下载,或者在你购买ss/ssr服务商的网站下载
与VPN的区别
VPN的本质是在公用网络上建立专用网络,进行加密通讯,在企业网络和高校的网络中应用很广泛。VPN仅仅是可以用来翻墙,因此很容易被GFW识别。
而SS/SSR则是为翻墙而生的,针对翻墙做了内容加密和混淆,不容易被GFW识别。
打个比方,普通流量访问是公路上的合法私家车,GFW是公路上的拦截警察,发现非法车辆则进行拦截。
VPN是窗户被遮挡(加密)的大巴车,虽然GFW不知道VPN里的内容,但能很容易被特征识别然后对其进行拦截;而SS/SSR则是把自己涂装得像私家车的出租车,不容易被GFW特征识别。
另外SS/SSR相对VPN更通用。购买VPN翻墙,基本上一个服务商一个定制APP客户端,且客户端支持的平台数量完全看该服务商的能力。而SS/SSR服务商仅仅提供服务器节点,代理协议都是通用的,且客户端开源各个平台都有,例如windows、mac、linux、android、ios甚至路由器。有些服务商的SS/SSR节点特地提供了用于游戏加速的低延迟服务器节点,因此也可以用来给游戏加速甚至给PS4、switch等游戏机加速等。
使用SS还是SSR
笔者推荐使用SSR,因为SSR支持的协议更多更难被GFW特征识别,且SSR向下兼容SS。另外有不少提供SS/SSR的服务商已经不兼容SS了。
SS/SSR服务商
笔者强烈不建议一次性购买长时间的SS/SSR的服务,仅仅推荐一个月一个月地买。
SS/SSR服务商毕竟不是国内的合法产业,做小了挣不到钱跑路,做大了被GFW打压被其他SS/SSR服务商打压被人DOSS勒索,然后顶不住压力然后跑路。
笔者多年翻墙用过的SS/SSR服务商,十有八九最后都因为各种原因关门跑路,所以仅仅建议一个月一个月地买。
价位的话,市场的普遍价位为10元至20元每月。
另外Google+里有大量的SS/SSR推销,也有大量的免费服务节点使用。如果想白嫖的话去Google+的社区例如Shadowsocks、免费账号SS SSR V2Ray公益翻墙,可以看到别人分享的免费节点。当然由于是免费的,所以时效性和稳定性不能保证。
ShadowsocksR客户端(C#版)
1、下载
由于SSR(C#)版客户端的GitHub源码已经被原作者删除了,所以只能在GitHub上搜索到其他人备份的代码。
程序不需要安装,解压后直接运行即可。压缩包解压后有两个可执行程序,ShadowsocksR-dotnet2.0.exe
和ShadowsocksR-dotnet4.0.exe
,两者为依赖不同功能相同的两个版本,前者依赖.net2.0,后者依赖.net4.x。第一次使用可能会提醒下载安装.net依赖,点击同意安装即可。
2、导入节点
添加节点的方式有四种:
- 订阅模式自动添加(推荐使用)
- 二维码扫描添加
- ssr链接导入
- 配置文件覆盖
2.1、订阅模式(推荐使用)
订阅地址为在SS/SSR服务商购买服务后,由服务商提供的一个HTTP地址。在客户端添加上订阅地址后,每次启动SSR客户端时通过订阅地址自动更新所有的服务器节点列表,也可以通过点击更新SSR服务器订阅(不通过代理)
手动更新节点列表。
2.2、二维码扫描
当电脑屏幕中有二维码展示时,点击二维码扫描
后SSR客户端会扫描二维码并将对应的服务器节点添加入节点列表中。
2.3、链接导入
将以ssr://
开头的SSR链接地址复制到剪切板后,点击剪切板批量导入ssr://链接
后,客户端会将对应的服务器节点添加入节点列表中。
2.4、配置文件覆盖
SSR客户端同级目录下的文件gui-config.json
包含所有服务器节点列表,配置文件覆盖后重新启动SSR客户端即更新服务器节点列表。
3、代理模式
代理模式有三种:
- 直连模式
- PAC模式
- 全局模式
3.1、直连模式
直连模式为不自动翻墙。
3.2、PAC模式
PAC模式为在PAC文件中的域名或IP翻墙,其余不翻墙。在SSR客户端同级目录下有个pac.txt
文件,打开编辑后可查看到rules
数组中有数千行的域名或者IP。在PAC模式下,凡是通过浏览器访问rules
数组中的域名或者IP则自动翻墙,不在数组中的则不翻墙。
由于SSR的原作者已经弃坑不再维护,原先会自动更新下载PAC文件的功能也失效了,所以只能自行搜索下载最新的PAC文件复制到SSR客户端同级目录下。
3.3、全局模式
全局模式则浏览器访问的所有域名或IP翻墙。
3.4、注意事项
PAC模式和全局模式是通过修改windows的系统代理实现的浏览器翻墙。
在IE浏览器-设置-Internet选项-连接-局域网设置界面,开启PAC模式后可见局域网设置-自动配置下的自动配置脚本被SSR客户端修改;开启全局模式后可见局域网设置-代理服务器被SSR客户端修改。
因此PAC模式和全局模式能够作用的仅仅是走系统代理的请求。绝大多数浏览器都是默认走系统代理,但是少数浏览器例如360浏览器之类的可以设置成不走系统代理,而导致不被SSR客户端作用。
另外,如果使用的PAC模式或全局模式,在正常关闭SSR客户端时会自动将上述的系统代理设置修改为默认参数。但若SSR客户端异常关闭例如杀进程或者突然关机,则系统代理设置参数不能恢复成默认参数,从而导致浏览器不能上网的情况。此时需要手动将上述参数修改为默认值。
4、本地代理
在SSR客户端选项设置中有个本地代理设置,其中的本地端口默认为1080。该功能提供对外端口,由本地其他程序甚至局域网其他机器的程序调用该端口号,实现代理功能。
此功能使用非常广泛,下面大多数的使用方式都是基于该功能实现的。
SwitchyOmega
1、安装
SwitchyOmega为Chrome的扩展程序,依赖SSR客户端。
2、代理服务器
Chrome安装SwitchyOmega后,需要在设置中修改情景模式中代理服务器(默认名为proxy,可自行修改)设置,如下图所示。
3、自动切换模式
修改情景模式中代理服务器(默认名为auto switch,可自行修改)设置,推荐配置如下图。
切换规则设置中,可以通过通配符、正则匹配的方式,添加自定义匹配域名/网址并设置该域名/网址的代理方式。proxy即通过SSR客户端走代理,直连模式则是不走代理。
规则列表设置中,添加规则列表网址https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
,保存设置后点击立即更新情景模式
后会自动下载推荐走代理的地址列表,类似于SSR客户端的PAC文件。
然后在切换规则-规则列表规则设置中设置为proxy代理模式,默认情景模式为直连。
4、使用
点击Chrome右上角的SwitchyOmega图标可以选择当前的代理模式:
- 直接连接:不走windows系统代理的上网模式
- 系统代理:走windows系统代理的上网模式
- proxy:强制chrome所有请求走SSR客户端代理的上网模式
- auto switch:[3、自动切换模式]操作中被设置为proxy的域名/网站走SSR客户端代理的上网模式
Git代理
添加Git全局代理
1 | git config --global http.proxy 'socks5://127.0.0.1:1080' |
取消Git全局代理
1 | git config --global --unset http.proxy |
只对github.com设置Git代理
1 | git config --global http.https://github.com.proxy 'socks5://127.0.0.1:1080' |
取消对github.com代理
1 | git config --global --unset http.https://github.com.proxy |
代理当前Git请求
1 | git clone https://xxx.git --config 'http.proxy=socks5://127.0.0.1:1080' |
SSTap
SS/SSR客户端有一个限制,即不能实现全局流量代理。例如nodejs的请求或者git下载的请求,SS/SSR客户端都不能代理。因此需要一些额外的软件来实现windows全局流量代理。
1、下载
SSTap推荐使用1.0.9.7版本,该版本自带全局代理规则,而后续的版本移除了该规则。
由于官方网站只提供下载最新版本的SSTap,因此旧版本只能从别人备份仓库下载。下载地址
2、添加节点
SSTap添加节点的方式有四种:
- 订阅模式自动添加(推荐使用)
- 端口号调用SSR客户端
- ssr链接导入
- 手动添加
除了第二种方法需要依赖SSR客户端,其余方式均为SSTap独立运行不需要SSR客户端。
3、使用
SSTap使用非常简单,选择一个服务器节点,选择全局模式,点击连接按钮即实现了全局SS/SSR代理。
Proxifier
Proxifier与SSTap一样可以实现全局流量代理,相对于SSTap,Proxifier能精确到指定程序、指定域名、指定端口号流量代理。且Proxifier有windows和mac两个平台的,mac如果想实现全局流量代理推荐使用该程序。
1、代理设置
配置文件-代理服务器设置中,设置代理服务器如图所示,需配合SSR客户端使用。
2、代理规则
配置文件-代理规则设置中,可以添加自定义代理规则,规则由上而下优先级逐渐下降。
ProxyChains
ProxyChains是Linux下的代理工具,可以使任何程序通过代理上网。
SSR-android
由于SSR(安卓)版客户端的GitHub源码已经被原作者删除了,所以只能在GitHub上搜索到其他人备份的代码。
SSR-mac
教程略,穷,没用过。
SSR-ios
IOS国区账号的app store中,SS/SSR各种版本的客户端已经基本被下架干净了,需要注册一个美区账号下载。
客户端shadowrocket收费但功能完善,客户端wingy有免费版本但相对功能较少。
教程略,穷,没用过。