架设SPDY Proxy服务翻墙教程

2012年11月19日 | 分类: 翻墙相关 | 标签: , ,

SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,通过对HTTPS做略微的修改,使得 在单个SSL连接上可以同时传输多个HTTP请求,提高了其效能,此外,谷歌Chrome还开了一个名为Secure Web Proxy的 项目,旨在让浏览器支持HTTPS协议的proxy server。本文讲述的就是基于这两点而来的SPDY Proxy服务。

其实这个SPDY Proxy架设方法在以前的文章中已经讲述过,还有网友搭建了测试服务。这次是一个补充。以下是教程详情:

首先,安装Node.js

以Debian 6系统VPS编译安装为例(其他系统安装参考),以root身份登录VPS后依次执行如下命令编译安装

apt-get install python g++ make
mkdir ~/nodejs && cd $_
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz && cd `ls -rd node-v*`
./configure
make install

其次,搭建SPDY Proxy

安装好Node.js环境后,执行如下命令安装SPDY Proxy

npm install -g spdyproxy

安装完成后执行如下命令运行代理服务

spdyproxy -k keys/mykey.pem -c keys/mycert.pem -p 44300 -U user -P pass

其中keys/mykey.pem为私钥位置,keys/mycert.pem为证书位置,44300为你设置的代理服务端口,user为代理认证用户名,pass为代理认证密码,执行spdyproxy –help命令可查看其支持的全部参数,此命令在关闭命令窗口时会停止运行而使代理无法使用,可以参考此文让此命令后台运行,并可参考此文设置开机启动。

私钥和证书建议参考此教程申请使用StartSSL的免费ssl证书,也可以使用如下命令自签证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem

由于自签证书不会被浏览器信任,所以要客户电脑导入mycert.pem证书到“受信任的根证书颁发机构”(StartSSL的免费ssl证书由于被浏览器信任所以无需此客户导入证书步骤)。

44300端口你可以设置为任意未被占用端口,客户端设置也需要相应变更端口,如果设置为443端口,客户端设置可不加端口号(因为https默认使用tcp 443端口)。

代理认证环节可以不用设置,直接去掉命令中的 -U user -P pass即可,当然为防止别人盗用你的代理建议设置,用户名和密码可以设置复杂些,设置后为避免重复输入可以让chrome浏览器记住代理密码。

最后,使用代理翻墙

设置chrome浏览器代理,可以用两种方法:

一、直接设置。

右键查看chrome浏览器桌面快捷方式,在“目标”末尾处加上代理参数(需留一个空格)

--proxy-server=https://代理地址:代理端口

然后点击确定保存设置,保存设置后关闭chrome浏览器,然后使用修改后的快捷方式运行chrome浏览器即可代理翻墙(使用详情可参考此文)。

二、使用.pac脚本

新建文本文件,粘贴以下内容

function FindProxyForURL(url, host) { return “HTTPS 代理地址:代理端口″; }

保存为spdy.pac文件后放置到E盘根目录(其他位置做相关修改即可),设置浏览器“使用自动配置脚本”地址为 file:///E:/spdy.pac 即可(此法结合flora.pac或AutoProxy2PAC或可实现智能代理)。

SPDY Proxy项目地址:https://github.com/igrigorik/node-spdyproxy

测试可用,不过目前还不太完善,比如在观看在线视频或下载时,有兴趣的可以帮助其改进,也可以参考以下可能类似项目:

https://github.com/xkxx/node-spdy-proxy

https://github.com/phidelta/spdy-proxy

https://github.com/indutny/node-spdy

另外Apache和nginx也有都提供了SPDY支持,不知道结合其自身代理功能能否搭建类似SPDY Proxy,有兴趣的研究:

https://developers.google.com/speed/spdy/mod_spdy/

http://nginx.org/patches/spdy/README.txt

本文原始地址http://igfw.net/archives/11607

  1. lihaixin
    2013年2月24日23:18

    我刚刚在centos vps测试成功,需要使用npm install spdy@1.3.9才能成功,但是我发现不能看视频,请教一下视频不能看是啥情况?

    • iGFW
      2013年2月27日12:16

      我测试的可以看视频,不过其看视频时打开其他网页会很卡或者打不开,总之还不太成熟。

      • lihaixin
        2013年3月2日05:37

        好像这里可以解决,https://github.com/igrigorik/node-spdyproxy/issues/14 ,但是我参考这个办法还是不行

  2. fish
    2012年11月20日18:22

    hi.
    上次说道,把openvpn的连接协议改为tcp,即可连接。今天我却连接不了,显示:
    Tue Nov 20 18:10:43 2012 TCP connection established with my-vps-ip:1196
    Tue Nov 20 18:10:43 2012 Connection reset

    难道tpc连接也被gfw重置(reset)了吗?博主的openvpn是否还可连上?

    • iGFW
      2012年11月20日23:17

      换端口,不停地换端口,都一样。

      • fish
        2012年11月21日00:12

        “都一样”指什么?指你也连不上openvpn?

        • fish
          2012年11月21日00:25

          哦,明白了,我换了端口,这次能连接上了,不过访问被封网站,显示connection reset,这是为什么?

          • iGFW
            2012年11月21日09:47

            不知道,你是访问说有网站都这样还是哪个网站?

          • fish
            2012年11月21日13:17

            哦,我忘了运行iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source ur-vps-ip,现在ok了

        • iGFW
          2012年11月21日09:46

          是指tcp、udp模式都一样受到了干扰,你可以多试几个端口,或者试试其pptp vpn连接。

          • 摸着小鸡鸡
            2012年11月21日18:18

            博主您一直没回我的疑问呀,特征除了port,openvpn都有的那啥certificate有没关系啊,如果ov连接的细节上还有可用来封锁的统一特征,那岂不就彻底判ov死刑了。还有已挂许久的tor的特征又是神马,有没有给非专业的人一窥的详解呀,这倒霉cpc特色不邪路,台面下的破事玩没够。
            另外,刚查了下维基上的tcp和udp端口表,按照只是简单封port的做法,那被针对ip的ov常用的 tcp 443 udp 123,openvpn默认1194一定xx了。。。。。。

          • iGFW
            2012年11月21日19:20

            这个特征只是我根据具体出现的情况的猜测,并没有实据更别说具体是什么啦。
            tor网桥的情况其官方应该有说明,我没研究过这些太过高深的东西,呵呵。
            关于此次openvpn抗干扰的方法,晚些时候我会发一篇文章,其中有三种方法:
            tls-auth+TPKT协议重叠的端口
            Use static keys
            Use obfsproxy

  3. AS
    2012年11月19日22:42

    https://tiandixing.org/viewtopic.php?f=54&t=99882&sid=e082255676c42ef237da31c7d02a9977
    “无界浏览测试版12.07a, 请帮助测试并反馈。

    如果偶尔连接不上, 请关闭所有翻墙软件, 等几分钟后再运行。如能更换IP, 则无须等待, 便可重新运行。

    执行版:
    http://wujieliulan.com/download/u1207a.exe
    SHA1: 935a8d60458aca281d55ba2966b820eb8bc8338f
    MD5: a6838005f7b82709ba7702ada7a6ac14

    压缩版:
    http://wujieliulan.com/download/u1207a.zip
    SH1: 0d02372e9254092dc3111070e4232cff2e0d78a9
    MD5: 73ca004b229b78a4ffd23c03637af290″

  4. 福音乐章
    2012年11月19日21:04

    博主,我在PC上装了UBUNTU,那应该怎么登陆vps啊?
    ssh name@ip 不管用啊

    • @twfcc
      2012年11月19日21:23

      正常就是這樣,安裝了OpenSSH嗎?如果有的話,連接網絡沒有?錯誤信息是什麼?最壞是你的VPS的IP是墻了的

      • 福音乐章
        2012年11月20日10:20

        IP没有被墙,能PING通。
        原来要装OPENSSH啊,谢谢提示。
        我前面下载了一个Linux的Putty玩。。。