条条大路通罗马,GAppProxy

Posted by Leask on December 27, 2009

其实应该有不少人已经知道GAppProxy(http://code.google.com/p/gappproxy/)了,下面还是简单介绍一下GAppProxy。

  1. GAppProxy是一个开源项目,host在Google Code上面,源代码可以通过SVN获取:
    svn checkout http://gappproxy.googlecode.com/svn/trunk/ gappproxy-read-only
  2. GAppProxy提供一个HTTP代理,使用python编写;
  3. GAppProxy分成两部分,服务器为python程序,上传到Google App Engine执行,客户端是一个python代码包,可以编译为可执行文件运行,也可以在python环境中直接解释运行;
  4. GAppProxy运行后提供一个本地HTTP端口,当有HTTP访问请求这个端口,GAppProxy就分析请求所需要的文件,转发请求给Google App Engine上的服务器端,服务器端通过Google近乎无限的带宽抓取这个文件,然后转发到本地完成整个代理过程,由于Google部署在Google App Engine上的带宽相当充裕,所以整个过程十分快捷,程序的执行效率十分高。


使用的过程十分简单,大家Google一下就会得到好几篇写得很好的教程,这里我就不罗嗦前人写过的了,我这里说说几个大家比较关心的问题:

  1. 本地代理端口的修改:通过修改proxy.conf文件的listen_port就能修改本地端口,例如:listen_port = 8451(仅限SVN上最新的版本,旧版本不是这个参数哦);
  2. 多人共用的问题,旧版本中GAppProxy是支持“非本机访问”的,新版本做了限制(不知原因,可能是因为安全性),如何恢复这个功能,让其他人通过你的电脑上的GAppProxy上网呢?答案是编辑:proxy.py文件,把第481行(SVN r102版,其他版本可能有轻微差异)改为:
    httpd = ThreadingHTTPServer(('', listen_port), LocalProxyHandler)
  3. Mac上如何编译python客户端?Windows上有人编译出客户端,大大方便了使用,但是Mac上没有,可能有人会觉得不便利,其实大没有这个必要:首先,python执行的时候会被编译为中间文件,这个过程叫做冻结,冻结后的文件执行效率是相当高的,所以大家不需要担心客户端解释执行的效率;其次,Mac内置就有python执行环境,方便好用。
  4. 那么Mac上如何自动运行客户端呢?方法很简单,建立一个XML程序放到~/Library/LaunchAgents文件夹里。代码如下:

    http://www.apple.com/DTDs/PropertyList-1.0.dtd">


    Label
    com.leask.gappproxy.plist [此XML的文件名,随便写就可以]
    ProgramArguments

    /usr/bin/python [你的python环境路径,这个是OSX默认的,如果用macport或者darwin port等途径安装的python,路径会有所差异,请自行修正]
    /Users/Leask/Documents/flora/GAppProxy/localproxy/proxy.py [替换为你的客户端程序路径]

    RunAtLoad

    KeepAlive

    NetworkState





好了,就这几点经验了,大家凑合看看,目前有些地方GAppProxy已经被墙盯上了,我所在的城市就是如此,但是搭建IPv6 tunnel后就能访问了,速度也还是超级快。最后提醒大家注意,由于Google App Engine免费版的限制,大文件的下载是不允许的,而且每天的流量限制是1GB,不过就正常浏览来说,足够多了。

经过我如上描述的配置后,可以在Console里头看到GAppProxy的运行状态:

希望此文对大家有帮助,祝福大家早日自由。