随着 GFW 的不断升级, 很多原来可行的爬墙方法都出了问题: pptpvpn , openvpn
被彻底的干掉了(static key 仍然还可以), ssh 隧道会出现间歇性的断开, shadowsocks 最近也爆出问题. goagent
背靠 google 这颗大树, 暂时还可用,但是因为其用的 gae 公共云, 国外很多网站都已经将其 ip 放入了黑名单了.
2. 基于 Shrpx 和 squid3 实现的 spdy-proxy.
3. 基于 Shrpx 和 apache traffic server 实现 spdy-proxy.
4. 基于 nginx 和 squid3 实现的 spdy-proxy
除了以上几种方法,还可以使用 haproxy 等其他软件, 前提是需要支持 spdy 协议就可以了. 后端代理可以不支持 spdy ,但是必须支持 ssl 加密才可以.
(from http://blog.chaiyalin.com/2013/07/spdy-ssl-proxy-1.html)
这里我主要介绍一下我的尝试, Shrpx + Squid3 实现的 Spdy SSL Proxy 代理.
先介绍一下 Shrpx , 它是 spdylay项目中的一个组件. spdylay 是一个用 C 语言实现 SPDY 协议的库. 点击这里查看spdylay github 地址 .
在 spdylay 库之上有 spdycat:一个支持 spdy 协议的命令行客户端, 类似于 wget. spdyd: 一个spdy
协议完全实现的 web server. Shrpx: 一个支持 spdy 协议的 reverse proxy server.
Shrpx 是 Spdy/Https reverse proxy 的简称.
(编译完成spdylay后,会生成可执行文件shrpx。
root@localhost:~# which shrpx
/usr/local/bin/shrpx
root@localhost:~# )
为 chrome 设置 ssl 代理地址和端口后, 其通过 spdy/https 加密的方式连接到 Shrpx 服务器, 并将访问请求发给 Shrpx , Shrpx 将收到的请求再转发给后端的proxy(在这里使用的是squid3), 然后由后端的proxy获取请求的内容后再由 Shrpx 通过加密通道返回给 chrome客户端.
我进行测试的环境: 256m ubuntu 12.04 美国 vps 一枚. 首先编译安装 Shrpx, 安装和配置过程很简单.可以参考spdylay github 的说明.
cd ~
下面给出我的 Shrpx 配置文件 shrpx.conf:
(自己创建shrpx.conf文件,比如在/root/下)
配置文件很简单, frontend 就是你要设置的代理的地址和端口, backend 是后端代理工作的ip 和端口. 另外因为 spyd 需要 ssl 加密, 所以必须要设置证书和私匙, 这里你可以自己签发证书, 当然在使用的时候, 浏览器会发出警告,你必须忽略警告,并必须把你所自签发的证书文件(public.crt)下载到本地的WINDOWS机器,然后导入该证书文件到CHROME浏览器的
"受信任的根证书颁发机构",才可以正常使用.( 其实根本不需要导入证书到CHROME浏览器)。 关于如何自签发ssl加密证书,点这里. 另外配置文件里 spdy-proxy=yes 这个一定要有,否则你的 spdy proxy 只是个反向代理. 无法将请求转发给后端的squid.
配置完成后, 运行shrpx --conf /root/shrpx.conf 就可以启动 shrpx. 或者运行shrpx --conf=/root/shrpx.conf -s --daemon
记得修改/etc/rc.local文件,加入shrpx --conf=/root/shrpx.conf -s --daemon
(如何验是否成功的运行了呢. 这里需要安装一个 chrome 的扩展程序. spdy-indicator 它可以显示所浏览的网站是否支持 spdy 协议. 在浏览器里打开你说配置的 shrpx 的frontend 的ip 和端口, 如果在浏览器你的地址栏的最右侧看到一个绿色的小闪电标志,那就表明你的shrpx 配置成功了.)
关于后端代理squid 的安装配置就更简单,直接 apt-get install squid3 就安装好了. 对于配置文件的修改, 主要是端口(当然也可不改)和监听 ip 的修改. 在 /etc/squid3/squid.conf 里面修改 http_port 这项为127.0.0.1:3128 就可以了. 然后重启 squid.
下面就是要测试我们的spdy ssl proxy 是否成功了: 新建一个 chrome 的快捷方式, 然后右键属性, 在"目标" 这行里添加上你的代理的地址和端口:
注意:一定要加上--ignore-certificate-errors这段参数,否则无法成功翻墙。
改完后保存, 然后双击打开 chrome, 然后在地址栏里面输入 twiter.com 试一下, 保证翻墙成功.
from http://blog.chaiyalin.com/2013/07/spdy-ssl-proxy-2.html
related post:
http://briteming.blogspot.jp/2015/08/nghttpx-http2.html (本文的内容几乎就是这个帖子内容的翻版)
http://briteming.blogspot.jp/2012/08/nodejsspdyproxy.html
http://briteming.blogspot.com/2015/08/spdylay.html
---------------------------
关于SPDY Proxy
最近在特推上看到了一篇介绍 spdy 协议的文章,其中比较吸引我的是其基于 ssl 加密的特性; 而且目前 chrome 已经实现了对 ssl 加密代理的支持. 这样通过自己搭建 spdy proxy 代理服务器就可以用 chrome 实现安全的爬墙.
对于 spdy proxy 介绍的一篇文章: SPDY & Secure Proxy Support in Google Chrome
如上图所示,我们需要在墙的外面搭建一个 spdy proxy 服务, 通过为 chrome 设置 ssl 代理实现安全加密访问. 在 spdy proxy 的实现细节上,我们有几种办法:
3. 基于 Shrpx 和 apache traffic server 实现 spdy-proxy.
4. 基于 nginx 和 squid3 实现的 spdy-proxy
除了以上几种方法,还可以使用 haproxy 等其他软件, 前提是需要支持 spdy 协议就可以了. 后端代理可以不支持 spdy ,但是必须支持 ssl 加密才可以.
(from http://blog.chaiyalin.com/2013/07/spdy-ssl-proxy-1.html)
这里我主要介绍一下我的尝试, Shrpx + Squid3 实现的 Spdy SSL Proxy 代理.
(编译完成spdylay后,会生成可执行文件shrpx。
root@localhost:~# which shrpx
/usr/local/bin/shrpx
root@localhost:~# )
为 chrome 设置 ssl 代理地址和端口后, 其通过 spdy/https 加密的方式连接到 Shrpx 服务器, 并将访问请求发给 Shrpx , Shrpx 将收到的请求再转发给后端的proxy(在这里使用的是squid3), 然后由后端的proxy获取请求的内容后再由 Shrpx 通过加密通道返回给 chrome客户端.
我进行测试的环境: 256m ubuntu 12.04 美国 vps 一枚. 首先编译安装 Shrpx, 安装和配置过程很简单.可以参考spdylay github 的说明.
cd ~
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout private.key -out public.crt
(所有步骤的问题可以一律回车。
/root/下就会生成private.key和public.crt这2个文件.)
下面给出我的 Shrpx 配置文件 shrpx.conf:
(自己创建shrpx.conf文件,比如在/root/下)
frontend=0.0.0.0,456 backend=127.0.0.1,3128 private-key-file=/root/private.key certificate-file=/root/public.crt spdy-proxy=yes workers=2
配置文件很简单, frontend 就是你要设置的代理的地址和端口, backend 是后端代理工作的ip 和端口. 另外因为 spyd 需要 ssl 加密, 所以必须要设置证书和私匙, 这里你可以自己签发证书, 当然在使用的时候, 浏览器会发出警告,你必须忽略警告,并必须把你所自签发的证书文件(public.crt)下载到本地的WINDOWS机器,然后导入该证书文件到CHROME浏览器的
"受信任的根证书颁发机构",才可以正常使用.( 其实根本不需要导入证书到CHROME浏览器)。 关于如何自签发ssl加密证书,点这里. 另外配置文件里 spdy-proxy=yes 这个一定要有,否则你的 spdy proxy 只是个反向代理. 无法将请求转发给后端的squid.
配置完成后, 运行shrpx --conf /root/shrpx.conf 就可以启动 shrpx. 或者运行shrpx --conf=/root/shrpx.conf -s --daemon
记得修改/etc/rc.local文件,加入shrpx --conf=/root/shrpx.conf -s --daemon
(如何验是否成功的运行了呢. 这里需要安装一个 chrome 的扩展程序. spdy-indicator 它可以显示所浏览的网站是否支持 spdy 协议. 在浏览器里打开你说配置的 shrpx 的frontend 的ip 和端口, 如果在浏览器你的地址栏的最右侧看到一个绿色的小闪电标志,那就表明你的shrpx 配置成功了.)
关于后端代理squid 的安装配置就更简单,直接 apt-get install squid3 就安装好了. 对于配置文件的修改, 主要是端口(当然也可不改)和监听 ip 的修改. 在 /etc/squid3/squid.conf 里面修改 http_port 这项为127.0.0.1:3128 就可以了. 然后重启 squid.
下面就是要测试我们的spdy ssl proxy 是否成功了: 新建一个 chrome 的快捷方式, 然后右键属性, 在"目标" 这行里添加上你的代理的地址和端口:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=https://your-vps-ip:456 --ignore-certificate-errors"
注意:一定要加上--ignore-certificate-errors这段参数,否则无法成功翻墙。
改完后保存, 然后双击打开 chrome, 然后在地址栏里面输入 twiter.com 试一下, 保证翻墙成功.
from http://blog.chaiyalin.com/2013/07/spdy-ssl-proxy-2.html
related post:
http://briteming.blogspot.jp/2015/08/nghttpx-http2.html (本文的内容几乎就是这个帖子内容的翻版)
http://briteming.blogspot.jp/2012/08/nodejsspdyproxy.html
http://briteming.blogspot.com/2015/08/spdylay.html
---------------------------
关于SPDY Proxy
SPDY是HTTP接替者,能减少网站加载的时间,SPDY协议能通过SSL加密通信的所有内容,令浏览器更加安全。
作为网站来说要想支持SPDY协议可以使用mod-spdy项目(Apache SPDY module)或者Strangeloop Site Optimizer服务(一个反向代理),作为用户要想知道访问的网站是否在使用SPDY协议可以通过SPDY indicator扩展查看(Chrome下载、Firefox下载)。
SPDY协议可以直接使用ssl加密代理而无需额外的软件。众所周知,我们在浏览器中设置使用普通http/https代理是没有加密的,GFW很早就可以检测其连接,当使用此http/https代理访问域名含有关键词的网站时就会被断开连接,也就是说其本身已经无法用来完成翻墙了(特殊端口除外)。而SPDY Proxy能通过SSL加密通信的所有内容,能轻易绕过GFW检测,达到翻墙的目的。
现在Chrome和Firefox两大浏览器都已经支持了SPDY协议,据我博客统计在众多翻墙用户中Chrome+Firefox的份额已经超过72%的比例,所以研究和部署SPDY Proxy有着很大的现实意义,这也促使我不得不说说SPDY Proxy。
SPDY Proxy的实现需要有支持SPDY协议的浏览器和支持SPDY协议的代理配合完成(详情):
代理服务器端可以使用stunnel加密普通代理,比如使用命令
stunnel -f -d 443 -r localhost:8080 -p cert.pem
也可以使用最新的Squid软件(其已经支持了代理的加密功能),需要在配置文件中设置:
https_port [ip:]port cert=certificate.pem [key=key.pem] [mode] [options…]
还可以使用其他软件,比如SPDY daemon.
Chrome浏览器的代理设置可以使用.pac脚本,脚本内容
function FindProxyForURL(url, host) { return “HTTPS vps-ip:443”; }
或直接使用如下命令启动
chrome--
proxy-server=https://vps-ip:443
本文仅是一个自己认知简单的介绍并不是教程也可能存在谬误,具体SPDY Proxy的实现还需有心者研究。不过其加密代理可以直接设置或制作成扩展使用,比较方便易用,相信会有较大发展前途,也许有人正在使用或研究。
-------------------------