@yiranphp
2017-01-15T15:03:42.000000Z
字数 2379
阅读 3971
翻墙
第一次接触翻墙,是由于想看 youtube 上的视频,网上说要翻墙,也不明白咋回事,懵懵懂懂买了 VPN,结果可以了。随着时间的推移,也慢慢明白了一些,打一个最简单的比喻,就好像电视剧里出入城的群众都要被检查一番,没问题才予以放行,我们访问一个网站,其实是浏览器(客户端)向远方的某个服务器(服务端)发起了请求,从这个请求开始到服务器返回响应中间是经历了特别复杂的过程,你打开 youtube 的网站,在你的请求还没有被 youtube 的服务器接收之前,就已经被大名鼎鼎的 GFW 拦截了,所以就有了墙内的世界,墙外的世界。
简单说下防火墙,这玩意的历史比较悠久了,它是一种位于内部网络与外部网络之间的网络安全系统,如果说防火墙就像城门一样,那么进出防火墙的数据就好比每天进出城的群众一样要接受安检,我们个人电脑上可以安装这种软件,windows 系统就自带了 windows 防火墙,也有别的公司开发了防火墙的软件。 开启了个人电脑上的防火墙之后,需要设置相应的规则,当某个软件向远方未知的服务器发起了网络请求时,又或者是远方的机器向我们个人的电脑发起了连接,我们要决定是允许还是拦截。
GFW,也称中国防火墙或中国国家防火墙,指中华人民共和国政府在其管辖因特网内部建立的多套网络审查系统的总称。
墙外的世界很精彩,有 youtube,有 facebook,有instagram(妹子的最爱),有 goolge,有 stackOverFlow,总之太多太多,上有政策,下有对策,向往自由的人们就捣鼓出了『翻墙』这回事,又名『科学上网』,那就得找工具吧,这工具就美其名曰『梯子』, VPN 就是其中的一种
VPN 是啥?中文学名叫『虚拟专用网络』,不想解释复杂的细节,简单的理解就是一条虚拟通道,常常用来连组织的内网用的,比如企业或者大学某些信息不想让普通大众访问到,但是又希望所属的组织人员在外网中可以访问到,就可以搭建一台内网的 VPN 服务器,外网的人连接 VPN 后,就可以访问内网资源了。简单点说,VPN 是特殊的网络通道,可以用些手段来绕过GFW。
但是 VPN 有个缺点,它往往是全局的,开了 VPN,访问墙内的站点也是走的 VPN,就会造成速度很慢,这种体验就不太好
转行做了前端后,翻墙这事就变得更家常便饭了,使用 VPN,需要不停的来回切换,实在是过于麻烦,于是就诞生了『红杏』这种梯子,因为翻墙主要都是在浏览器上进行的,所以它是以浏览器插件的形式出现在大众面前,它有个很重要的突破就是按需翻墙,在需要翻墙的网站上标记一下,以后进入这个网站就会自动翻墙,没有标记的网站就不翻墙,当年用的实在是太爽,但是后来被政府盯上了,一代翻墙神器就此陨落。
再后来,在较长的时间内,陆续找各种各样的梯子,VPN、Lantern,等等啦,直到 Shadowsocks 的出现,才又让人感觉轻松翻墙的时代又回来了,主要是这个翻墙工具支持 PAC 模式的翻墙,和红杏的有点类似,简单的说,PAC 是一些网站的列表,当访问这个列表中的网站时,就会自动翻墙,否则正常请求。但是这个 PAC 列表一般都是根据 GFWList 生成的,其内容会非常的多,而且有些网站不翻墙也能访问,但是速度特别慢,如果翻墙,速度会快很多,我们也是希望加入翻墙列表的,虽然 Shadowsocks 软件本身是支持手动编辑 PAC 列表的,但是理解它的规则还是需要门槛的。另外需要说明的是,Shadowsocks 本身也是支持全局模式的,此时访问任何网站都会翻墙。
使用 SS 代理的 PAC 模式访问网站时,会根据 PAC 的规则自动判断是否需要翻墙,要是能将不在 PAC 列表中的网站自动加入 PAC 列表中就好了,就像红杏那样,用起来特别方便。后来找到一款 chrome浏览器的插件,SwitchyOmega,配合 Shadowsocks 代理终于实现了类似红杏的效果。
作为程序员,终端下 git 克隆项目仓库,或者使用 npm 安装包,在 mac 上使用 homebrew 安装软件,这些都是家常便饭,众所周知,这些仓库的网址都是国外的,终端下访问速度非常慢,甚至网络不好就根本下载不下来,这令人相当抓狂。
以前一直对 Shadowsocks 的全局模式有误解,认为切换全局模式,电脑上所有的网络活动(包括终端下)都是翻墙的,其实不是,ss 代理默认只对浏览器生效,所以全局模式也只是浏览器的全局翻墙而已。功夫不负苦心人,随着时间的推移,终于被我找到了Proxifier 这个软件,使用它,可以解决任何软件的代理问题。
Shadowsocks 是个什么东东呢?不想解释的特别复杂,当我们使用 ss 代理访问网站的时候,我们的请求首先会转发到服务器端的 Shadowsocks 服务上,再由服务器端的 Shadowsocks 帮我们请求目标网站,请求成功后再转发给我们。所以这玩意有免费的,也有收费的,其原理就是在国外的服务器上装了 Shadowsocks 的服务,再开出了一些端口和密码供客户端连接,那么这些端口和密码可能是别人免费提供的,或者收费提供的,我之前一直是买别人的 ss 帐号,后来看了一些网上的教程,觉得自己动手搭建一个也没那么难,成功了。
一路走来,作为程序员的我,现在的唯一的梯子就是自己搭的 Shadowsocks,在 chrome 下搭配 SwitchyOmega 实现按需翻墙,同时使用 proxifier 实现终端下的翻墙。
写文章真的是费时费力啊,不过在新的2017年,我要努力多写一点文章,来记录我的学习和成长。
首稿:2017.1.15