题图:38人爬上柏林墙。希望GFW最终的命运,与柏林墙一样。
本文由EarlGrey@编程派独家整理,同步首发于 微信公众号“编程派” 。微信搜索“编程派”,跟我一起学Python。
编程派的网站部署在 DigitalOcean 的纽约节点,与国内有些地区的网络相性较差,因此不时有朋友反映网站打不开的问题。当初选择节点时,并没有仔细测试各个节点对国内的访问速度,现在考虑是不是要切换到新加坡节点。
在切换节点之前,和大家分享一个曲线救国的方案,即自己手动一步一步搭建Shadowsocks代理服务。这也是我认为极客翻墙的正确方式,因为这种方法赋予了作为极客的你极大的自由,不用看代理商的脸色,还可以在此基础上捣鼓其他有意思的事情。
本文除了推荐购买付费VPS搭建服务之外,还会分享如何在Koding、Heroku等免费平台搭建服务,让大家可以不用花一分钱就轻松飞跃长城。当然,免费的蛋糕都是有期限的。
有了这个梯子之后,你不仅可以毫无障碍地浏览编程派网站,还可以惬意地在Twitter上勾搭知名Python开发者。
我们首先介绍一下Shadowsocks是什么,以及其背后的工作原理。
Shadowsocks是一个轻量级的代理服务,可以说就是一把瑞士军刀,轻巧方便,功能却非常强大。
这么多年的翻墙经历中,先后使用过免费VPN、GoAgent、付费VPN红杏等工具,但是哪一个都没有Shadowsocks用的爽。目前,我自己就是在网站服务器上搭建了一个Shadowsocks代理服务。
它在广大翻墙群众中非常流行,有许多基于shadowsocks搭建的付费VPN服务,用它在自己服务器上搭建代理的朋友则是更多。其影响力之大,以至于官方都坐不住了,向原作者clowwindy施加压力,使得作者删除了在Github上的代码库。
不过这丝毫没有影响shadowsocks的继续传播,目前已经衍生出了无数版本的代理服务。
Shadowsocks实质上也是一种socks5代理服务,类似于ssh代理。这部分介绍其背后实现的原理,引用了 一位网友对此的解释 ,适合帮助非专业人士理解。(不感兴趣的朋友,可以直接跳过此节)
简单来说,Shadowsocks是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似。
具体通信步骤如下:
了解背后的原理后,说不定你也可以自己实现Shadowsocks哦!O(∩_∩)O~
接下来,我们开始配置服务端和客户端。
首先,这个服务端所在的服务器必须在墙外。要是在墙内,你还翻个什么墙啊!
这里推荐几个选择:
可以说,你至少可以两个月免费使用代理服务,快乐地翻墙。
DO、Vultr、AWS、Koding等服务器上shadowsocks服务端的安装方法类似,Heroku平台则有较大区别,这里推荐 mrluanma 开源的专用工具。
首先用 apt-get 命令安装 pip 和 m2crypto
apt-get install python-pip python-m2crypto
然后用 pip 安装 shadowsocks
pip install shadowsocks
$ vi /etc/shadowsocks.json
写入如下配置:
{ "server":"0.0.0.0", "server_port":443, "local_address": "127.0.0.1", "local_port":1080, "password":"mypassword", "timeout":300, "method":"aes-256-cfb", "fast_open": false, "workers": 1 }
各字段的含义:
server: 服务器 IP (IPv4/IPv6),注意这也将是服务端监听的 IP 地址 server_port: 服务器端口 local_port: 本地端端口 password: 用来加密的密码 timeout: 超时时间(秒) method: 加密方法,可选择 “bf-cfb”, “aes-256-cfb”, “des-cfb”, “rc4″, 等等。默认是一种不安全的加密,推荐用 “aes-256-cfb”
{ "server":"0.0.0.0", "local_address":"127.0.0.1", "local_port":1080, "port_password":{ "8989":"password0", "9001":"password1", "9002":"password2", "9003":"password3", "9004":"password4" }, "timeout":300, "method":"aes-256-cfb", "fast_open": false }
在Koding上,服务器IP地址只能是 0.0.0.0,否则会遇到 socket.error: [Errno 99] Cannot assign requested address 错误。
安装配置完成之后,就是在服务器上运行 Shadowsocks,命令如下:
ssserver -c /etc/shadowsocks.json
以下是在Heroku上安装shadowsocks的详细过程,之前你需要注册Heroku平台账号,并在本地安装Heroku Toolbelt、NodeJS。
输入账号密码登陆:
heroku login
创建应用,如:
heroku create appname
下载Shadowsocks的Heroku专版,准备应用程序:
git clone https://github.com/mrluanma/shadowsocks-heroku.git cd shadowsocks-heroku git init git commit -m "init"
添加remote:
heroku git:remote -a appname
推送至Heroku:
git push heroku master
设置加密方法和密码,如:
heroku config:set METHOD=rc4 KEY=PASSWORD
加密方法推荐rc4和aes-256-cfb:
heroku config:set METHOD=加密方法 KEY=密码
运行代理服务,如:
node local.js -s appname.herokuapp.com -l 1080 -m rc4 -k PASSWORD
这样就可以通过设置Firefox或Chrome浏览器的插件翻墙了。将浏览器的代理设置为 SOCKS v5,地址为127.0.0.1,端口为1080。Chrome 浏览器建议使用 SwitchySharp 插件
1.下载一个Shadowsocks的客户端程序。下载地址: http://pan.baidu.com/s/1dDTmj65 。不需要安装,解压后即可使用。 2.运行解压后文件夹中的“shadowsocks.exe” 3.右下角找到程序图标,右键图标,“服务器”--“编辑服务器”,如下图,设置好shadowsocks的账号信息,点确定;
4.再次右键程序图标,勾选“启用系统代理“。
5.接下来,可以在Chrome中直接打开Youtube测试下效果。
Mac下的客户端推荐 ShadowsocksX ,这是Shadowsocks的作者自己开发的。下载完Mac客户端后,具体设置与Windows平台下的操作类似。
直接在Appstore搜索下载Shadowsocks,app打开后就是一个浏览器,内置了公共服务器,但是一般情况下,公共服务器不稳定,基本没啥用的。这时你就可以设置自己的服务器了。设置方法和Windows版一样。相比Android版,iOS版只支持浏览器。
当然,你也可以搭建 Strongswan,实现在 iOS 上连接 VPN。具体流程请参考: http://www.jianshu.com/p/2f51144c35c9 。
安卓下的Shadowsocks软件名称为“影梭”( 百度网盘 ),下载后无需root,设置好服务器和帐号信息后即可直接使用。与iOS版本不同,android版是以VPN的方式运行的,也就是说不仅支持浏览器,而且支持其他App,简直好用到没人性。
有了海外VPS之后,仅仅用于翻墙可能有点太浪费了。你还可以用它做下载站,中转YouTube的视频;或是直接在上面搭建自己的网站,就像我一样。O(∩_∩)O~