一直以来主要的翻墙工具都是GAppProxy,但是GAppProxy无法解决SSL问题,HTTPS会弹出证书无效的警告,让我一直很头疼。在学校的IPV6上网时有IPV6环境还可以使用IPV6的一些代理,在家里就不得不使用基于GAE的代理了,因此我找到了GAppProxy的替代解决方案——WallProxy。

获得WallProxy源码

下载WallProxyV0.3.9b2的源码

http://wallproxy.googlecode.com/files/wallproxyv0.3.9b2.7z

解压缩之后得到gae_serverphp_serverlocallocal_videomodule等几个目录。

其中gae_server是GAE版服务器端源代码,php_server是PHP版服务器端源代码,local是本地客户端,local_server是本地视频客户端,可用来下载/观看视频,module是windows下python库文件的兼容包。

将服务器端源码上传至服务器

http://appengine.google.com中新建一个GAE应用。

进入gae_server目录,修改app.yaml文件中的application:为自己新建的GAE应用的ID。

然后执行命令python appcfg.py update gae_server将源码上传至GAE。

服务器端的配置

将源码上传至服务器之后,用浏览器访问http://you-app-id.appspot.com/fetch.php(将you-app-id更换为应用的ID)

然后登录http://appengine.google.com,在GAE的控制面板上找到Data>>Datastore Viewer

选中WPConfig(如果找不到WPConfig再用浏览器访问一遍http://you-app-id.appspot.com/fetch.php

打开id=*的项目,设置cryptomode(加密模式)和siteKey(服务器端密码)

加密模式可以从下面选择一个: * AES-CBC * ARC2-OFB * ARC4--32 * Blowfish-CFB * CAST-CBC * DES-OFB * DES3-ECB

客户端的配置(Linux)

进入local目录,修改配置文件proxy.conf

#设置监听地址和端口
LISTEN_ADDR = ('127.0.0.1', 8086)

#设置GAE服务端,可设置多个
GAE_PROXY = [{
'url': '<a href="http://gae-twitter.appspot.com/fetch.php'">http://gae-twitter.appspot.com/fetch.php'</a>,  (设置为自己WallProxy应用的地址)
'key': '',  (与服务器端的siteKey保持一致)
'proxy': {},  (代理的代理,当WallProxy无法连接时可以试着设置为‘proxy’: {‘http’: ‘www.google.cn:80′})
'crypto': 'XOR—0'  (与服务器端的加密模式保持一致)
}]

客户端的使用(Linux)

local目录中执行命令python proxy.py即可

Ubuntu中若要将WallProxy添加至开机启动项中,只需打开“系统>首选项>启动应用程序”,将上述命令添加进去即可。

注意:Linux上需要移除local目录中的Crypto以及OpenSSL目录,否则会报错ImportError,如果无法运行则需要手动安装这两个模块(一般情况下系统已经自带)

客户端的配置(Windows)

Windows用户可以下载Windows专用的GUI客户端

http://wallproxy.googlecode.com/files/wallproxy-win-local.7z

运行WallProxy.exe,点击设置修改配置文件,修改方法同上。

客户端的运行(Windows)

打开WallProxy.exe后,点击“启动”即可运行代理,如果需要开机后自动运行/运行后自动启动/运行后自动最小化则可以点击设置进行配置。

浏览器的设置

将浏览器的代理地址和端口设置为在WallProxy配置文件里设置的监听地址和端口,默认为127.0.0.1:8086,推荐使用Chrome的插件Proxy Switchy

试试看,如果打开http://www.google.com不会自动跳转到谷歌(http://www.google.com.hk)的话,说明代理已经生效。

证书的导入

此时虽然已经可以成功使用代理,但是访问HTTPS时仍然会弹出证书无效的提示,而WallProxy则能够轻松搞定证书问题!

首次运行WallProxy之后会在WallProxy的目录下生成一个cert目录,其中含有一个ca.crt文件。

Firefox依次操作:“首选项->高级->加密->查看证书->证书机构->导入->选择ca.crt文件->选中第一项->确定”,即可导入成功。

IE等Windows下浏览器用户双击ca.crt选择导入证书按提示操作即可导入成功。

Linux下的Chrome/Chromium导入证书则稍微复杂一点,以Ubuntu为例,先要安装libnss3-tools

sudo apt-get install libnss3-tools

然后导入证书(假设ca.crt所在路径为~/wallproxy/local/cert/):

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n WallProxy -i '/wallproxy/local/cert/ca.crt'

这样证书就被成功导入了。

再打开HTTPS的网站时不会再弹出证书无效的提示了~~

UPDATE:亲,Wallproxy已经停止开发了,试试Wallproxy-Plugins吧,更简单更强大哦~