利用node.js搭建SPDY协议的翻墙服务
我之前一直是使用ssh –D的方式翻墙,但是这么做有个缺点,需要在用户的机器上安装一个软件,并且ssh会经常断(即使加了keep alive)。后来我一直在想,为什么不直接走http或者socks协议呢?我觉得主要原因是:通信没有加密。
Chrome开了一个名为Secure Web Proxy的 项目,旨在让浏览器支持HTTPS协议的proxy server。目前不光chrome,firefox也支持了。此外,Chrome还引入了一个名为SPDY的协议,通过对HTTPS做略微的修改,使得 在单个SSL连接上可以同时传输多个HTTP请求。因为减少了HTTPS握手次数,可以大大提高proxy的相应次数。
综上所述,用SPDY协议来翻墙,比ssh -D好多了!
最近我从网上找了一段代码,发现可以很快速的利用node.js搭建一个SPDY协议的proxy server,下面分享给大家:
首先,安装node.js,从这里下载http://nodejs.org/download/ 对应的包。如果是Linux,直接解压缩即可,不需要root权限。
然后下载proxy程序文件
[app@www proxy]$ wget http://www.sunchangming.com/d/12641
[app@www proxy]$ unzip 12641
然后准备一对SSL key,我是从http://www.startssl.com/ 申请的。你也可以用openssl自己随便生一个自签名证书,但是必须让每个使用你的proxy的人安装这个CA证书到信任列表里。所以我建议还是找startssl申请吧。
启动参数很简单
/home/app/node/bin/spdyproxy -k /home/app/startssl/private.key -c /home/app/startssl/mycert.pem -p 4433 -U xxx -P xxxxx
-k: ssl证书的私钥
-c: ssl 证书
-p: 端口号
-U: 用户名
-P: 密码
然后是client端。最简单的方式是启动chrome的时候直接加上
--proxy-server=https://www.myproxyserver.com:4433
。高级点的,可以自己写个脚本生PAC配置文件,从而根据域名来判断是否需要走代理服务器。
原文:https://www.sunchangming.com/blog/?p=4325
在不得不说的SPDY Proxy一文中对SPDY协议的翻墙服务有过简单叙述,本文是个很好的实现方法,有条件的试试吧。
先感谢作者免费提供了这么个开源的服务端。
用法国的垃圾vps搭建了一个,免费提供了,随便用吧,什么时候时候内存爆了或者被停了就没了。
地址 spdyfr.ownssh.com
端口 443
用户名 ownssh.com
密码 ownssh.com
证书
http://pastebin.com/81p9W0xV
自测了IE8 Firefox14 Chrome
只有Chrome可以用…
证书不导入chrome会提示未知错误。
用node main.js 参数
就可以跑了(下编译过的就是/root/node-v0.8.7-linux-x86/bin/node main.js 参数)
spdyproxy可能是作者自己写的脚本
感谢支持
hi.
/home/app/node/bin/spdyproxy里的spdyproxy是个执行文件吗?怎么我下载spdyproxy.zip,打开后,没发现里面有spdyproxy这个文件?
博主有成功的利用他这个方法翻墙吗
这个我没有测试过,你可以问问原文作者。
此人翻译了英文全文,却不引用原文。算不算偷?
我当时也没见着原文啊。
“翻墙人的事儿,能算偷么?”——设计台词
活着真不容易呀,上个网还这么复杂。
这个看上去很不错,转到我博客去 嘻嘻