Home > GAE, GAppProxy, SAE/GAE > GAppPorxy基本原理以及代理失效解决方案

GAppPorxy基本原理以及代理失效解决方案

本文不介绍具体的部署方法. 以前没用过GAE的同学想试一试的, 参考此文: 用Google App Engine做个人代理服务器 第二版 .

众所周知, GFW 阻断内陆到国外网络连接的方式之一, 是关键词过滤. 所以, 一般稳定的翻墙方法都会做数据加密, 使得关键词过滤失效. VPN/SSH Tunnel 是做信道加密, HTTPS 则是在网络协议上加密. GAppProxy, 相当于是在用户客户端和GAE服务器之间建立一个内容加密处理 – 实际上不算加密了, 因为用的是再正常不过的压缩和编码算法.

先说 HTTP吧. GAppProxy的客户端是作为一个本地代理服务器工作的. 浏览器设置本地代理, 然后客户端把HTTP请求的地址提取出来, 把请求的目标地址做个base64编码, 与同其它信息一起以post方式, 发给部署在GAE的服务器. GAppProxy的服务端取到post数据后, 再构造请求, 发给目标服务器; 服务端收到目标服务器返回结果后, 检查content-type. 如果是文本类型(content-type里面包含text字符串), 做gzip压缩, 发回给客户端. 客户端收到数据不做处理, 交给浏览器.

HTTPS 方式的原理基本不变, 但存在的问题是GAppProxy的客户端, 服务端通信没有用上HTTPS, 还是HTTP方式, 所以不能保证数据安全性. 而且, HTTPS证书是得花钱买的, 客户端程序自带的HTTPS证书往往不被浏览器信任, 所以经常出现登录补上的问题. 总之, 设置GAppProxy 未HTTPS 代理的方式是不推荐的.

然后说下我自己改过的地方. GAppProxy的实现中, 有个使用google.cn:80 作为HTTP代理的逻辑. 客户端启动时, 会去尝试读取GAppProxy服务端的负载均衡服务器. 负载均衡服务器地址是写死的, 是http://gappproxy-center.appspot.com/available_fetchserver.py 在 /localproxy/common.py. 如果客户端读不到服务器, 客户端则设置google.cn:80为默认的http 代理. gappproxy早就是敏感词, 所以负载均衡的服务器很可能连不上; google也已经离开中国, google.cn:80 的代理大概也已经失效. 所以客户端很容易出问题. 前段时间我就遇到过. 其实很简单, 从代码里把google.cn 的代理去掉就行.

同时, GAppProxy是可以设置为公共的HTTP 代理服务器的. GAppProxy在/localproxy/proxy.py 里写死了是监听本地地址127.0.0.1. 而把这个地址改成0.0.0.0, 则变成了一个公共的HTTP代理服务器 – 这取决于你所在的网络. 如果是局域网, 那是局域网代理; 如果是有独立IP的虚拟主机, 那么全国人民都可以把它当翻墙代理用. 上次在twitter上还看到说, 有的公司业务需要教全体员工用GAppProxy翻墙… 我的第一反应是, 那公司的技术人员不靠谱…….. 局域网随便找台机器做翻墙代理就OK了…….

另外, 我这里有一份基于GAppProxy google code svn 的head version修改的客户端代码, 就一个proxy.py 文件. 去掉了google 代理, 并可以作为公共HTTP代理服务器用. 需要的同学点击这里下载源代码. 还有, 不要说我发此文加速GAE被墙之类的话. 我不爱听.

Advertisements
Categories: GAE, GAppProxy, SAE/GAE
  1. June 30, 2010 at 6:54 am

    大概理解了原理了,看来还是花了不少时间
    这个主题字体小,应该是为英文设计的

  2. June 30, 2010 at 7:08 am

    改了样式,不过还是不太好看..先这样吧.
    google.cn:80 的代理很诡异, 可以代理app engine, 上其它网站就转到google.com. 我本地是好用的…
    所以至今也不理解上次失效是咋回事…

  3. yanxinyouhzdqb
    October 24, 2011 at 10:56 am

    我想问 既然 直接访问www.myapp.appspot.com 不行 ,客户端proxy 又是如何连接 这个服务器呢 ?

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: