本文不介绍具体的部署方法. 以前没用过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被墙之类的话. 我不爱听.

好吧, 我还是承认了, 本人不是专业搞翻墙的, 最好的Android 浏览器翻墙方式是用修改版的opera mini(有APK下载). 图片看这里.

如果希望你手机其它的基于HTTP/HTTPS的应用翻墙, 或者是单纯想知道我都捣腾了写什么, 继续往后看.

首先说明一下使用条件. 你需要有一个Android手机. 此apk目前只在G2, G3上测试过. 其它机型理论可行. 但是目前有如下限制:

1. 大前提: 需要有手机的root权限. 如果还没有拿到root权限, 可以先搜索相关教程, 如G3取root权限.

2. Wifi网络无法使用HTTP方式连接到国外含有敏感内容的网站. 所以一般Wifi网络时, 需要关闭mobile view 并强制使用HTTPS连接, 以保证不会跳转到HTTP的WAP页面.

3. HTTPS方式, 仅在手机ROM版本为安智网时可用(如果开机第一屏有xda-china或者安智网, 说明没问题). 如果是其它ROM来源, 需要上安智网(bbs.goapk.com)刷一个论坛里的ROM才可以使用. HTTPS在某些固件版本下不可用. 不行可以尝试刷一个bbs.goapk.com论坛的固件. 本人没有在多个机型仔细测试, 如果有测试结果欢迎以评论方式反馈.

4. 本程序修改了移动网络接入点设置. 卸载之前需要保证翻墙工具处于关闭状态. 或者在卸载之后, 在“移动网络设置” => "接入点名称"中按menu键, 重置为默认设置.

网络助手apk文件下载地址: http://medusa.sinaapp.com/NetHelper.apk

翻墙原理在前一篇博文介绍两种基于Google App Engine的翻墙方法  中有提到. 这里就不赘述.

没有APK安装器的同学,可以尝试下安智网的APK安装器.

注意: 本文中的应用程序由安智网网友开发, 如果法律或者政治风险, 安智网不负相关责任.

Jun 26 2:20pm 补充: HTTP因服务器负载无法承受, 暂停服务. HTTPS方式不依赖于服务器, 不受影响.

Jun 28 10:27am 补充2: 因缺少服务器资源, 担心负载不能承受, 此翻墙方法尚未对外宣传. 有可以的国内服务器的同学, 请在twitter DM @liruqi

Jun 29 2:00 pm 补充3: 今天apk文件版本有更新, 比以前更好用了(下载地址不变, 在上文). 本来还打算今天发截图的, 后来测试发现有台服务器不能处理302重定向(python 2.4.3的), 以及昨天刷新版ROM之后, https也走服务器代理了. https本来是不让走代理的, 不安全. 我今天尝试修复这个问题. 不过也有好消息. G2(HTC Magic) 上, 用北京动感地带的2G网络, 部分地址没有被dns污染. 比如mobile.twitter.com. 估计北京动感地带的2G用户, 可以直接下载上面的apk文件翻墙了.

July 1 10:47 pm 补充4: 今天测试了下最新翻墙工具, 基本没问题. 而且现在也没啥https不https的问题, 全走的代理. 不过还不确定是否跟上次刷了rom有关. apk文件下载地址不变, 文件已更新. 服务端源代码放放在这里, 各位有自己的国内服务器也可以自行搭建代理.

(本文最后修改时间: July 12, 3:27 pm)

前言:
1. 由于本人有后期的研究计划,本文以后可能会有更新。
2. 本文主要介绍Linux环境下的操作方式。Windows用户也可以套用类似的方法,本文下面会介绍下Windows环境的简单配置方法。

最近打算做一个Android平台上的翻墙工具,所以研究了下代理方式的翻墙方法。Windows下已经有不少现成的免费工具,但是Linux下 不多。西厢计划虽然牛逼,但是安装配置过程复杂,效果也不稳定。所以最近主要研究了墙外代理的方式。动手实践了两种:HTTPS在线代理,以及本地加密代 理。都是代理,但是绕墙原理不同。

HTTPS在线代理,是基于HTTPS协议的安全性。比较典型的,如mirror项目。体验地 址:https://opliruqi.appspot.com/。
优点:方便
缺点:不稳定,mirror项目在处理https登录可能有问题,所以只能浏览不需要https登录验证的网页。而且因为服务端有HTML文件处 理操作(如URL转换),可能会导致页面效果欠佳。

本地加密代理,是在本地把目标地址加密,GAE上解密并获取页面内容,处理之后发回客户端。典型的,如GAppProxy项目。
Windows系统下配置方案:
1. 安装python环境。一般是下载 http://python.org/ftp/python/2.6.5/python-2.6.5.msi 用64位系统的,下这个 http://python.org/ftp/python/2.6.5/python-2.6.5.amd64.msi
不过上面两个地址被墙,大家用迅雷试一试。(我怀疑python.org就是因为GAppProxy被墙的...因为GFW最怕这种应用层加密的 翻墙方法,这种方式不要求你有vsp,只需要有GAE帐号或者网络空间即可)
2. 下载客户端:liruqi.sinaapp.com/localproxy.zip。已经配置好了的。不过有GAE帐号的同学,还是用自己的吧,为了你们 的数据安全,也为减少我的压力。
3. 设置浏览器代理。把http代理设置为 127.0.0.1:8765

优点:稳定,快速,Youtube视频也可以看
缺点:还是SSL的问题,如果用其作为SSL代理,那么证书不被浏览器信任而频繁报错;如果不用,上了GFW黑名单的网站(如 twitter,facebook),有域名劫持,https依旧没法连上。这篇博文(http://blog.solrex.cn/articles /fix-gappproxy-set-cookie-and-https-cert-bugs.html)似乎在说,它解决了这个问题。但是我下载了它 的代码,测试不通过。

总之,SSL登录验证问题没有解决。GAppProxy配合西厢计划的反DNS污染的模块同时工作,(即GAppProxy只作为HTTP代理) 是最完美的。我打算在android平台上也做一个,其中的SSL代理问题也没解决,技术方案目前想到两种:
1. 订阅一个人工维护的域名到ip的列表
2. 把西厢计划的反DNS污染的模块编译到ROM中(这个工作已经有人尝试过,可行。但是对于用户而言技术难度太大)
其实,一般看看国外新闻,维基百科什么的,也用不到HTTPS。Twitter第三方遍地都是。不处理,问题也不大。

大家有意见、建议,可以到twitter(@liruqi)或者新浪微博(@liruqi)上讨论。本博客尚未开通评论功能。

--The orignal post is published on May-16 17:56

关于新浪离职 June 26th, 2010

最近离职的事情弄得很揪心。离职对于我而言是个痛苦的决定,半年来在新浪微博项目的努力全部白费,而且我害怕这样会给别人留下心浮气躁的印象。我甚至怀疑 作为一名开发人员,社交圈小一点更有助于技术上的学习和造诣。刚进公司的时候是做PHP开发工程师,我给自己定的计划也是先做PHP熟悉业务,后面做底层 系统研发。后来去朋友在的一家小公司看了一圈,被他们的一名人力和渠道负责人看中,拉我过去做服务端。偏偏在此时,微博成立独立部门,我被安排做系统研 发。两条岔道在我面前铺开。在新浪半年,我最深刻的感触是,技术完全为需求服务。很大程度上,这个现实熄灭了我对技术的追求。因为做什么都一样,最重要的 是有钱赚,在北京能够更好地生存。刚进新浪的时候,我要的钱不多。那时候是因为要尽快摆脱我在的做微软测试项目的外包公司。但是当我得知这个工资会至少维 持半年,我不干了。工资不高,没法攒钱,哪有心思安心做技术呢。

薪水的问题,是我离开的首要原因。还是那句话,要求得自己提,最好是有把握,有后路。我觉得自己在项目中已经有了足够的分量。但是两次提薪的请求都被回 绝。后面一次是说公司有制度约束。我不喜欢这种约束,那就撤吧。

但是有其他的因素,让我不喜欢继续呆在新浪。新浪微博项目,在新浪内部非常受重视,产品需求自上而下,还有频繁的应对突发事件的运行需求。产品需求一般是 由微博项目总监@simon 和微博项目产品经理@mingsheng1 确定的。用户、底层开发人员基本没有发言权。这中间有个问题是,确定需求的人基本不关心技术架构,都是在需求确定之后,讨论实现方案。所以,项目以上级定 的时间表往前推进。底层开发人员忙于新需求开发、现有的BUG修正,基本是没时间做大的架构和流程的改进。以结果为导向的工作环境中,重构工作往往是因为 代码改不下去了才开工。以至于平时代码维护起来就有点困难。现在新浪微博功能繁杂,实现也混乱,很难想象以这种方式做到后面会是什么样子。

年前产品部的鹏总貌似还说过,微博上不会做偷菜,不会做游戏平台。不过现在已经在做了。新浪微博可能演变成SNS平台。

上面说的问题,是公司内部因素,是可以改进的。比如大家一起头脑风暴,讨论产品需求。尽量在项目前期明确一个大家都没有任何意见的方案。说是 FACEBOOK的产品人员都是技术出身。新浪还是应该加大一线技术人员在产品设计中的分量。

再说两点环境问题吧。首先,新浪原本就不是一个做技术的公司。前段时间才知道,新浪2年前还在用Windows服务器。新浪网是新闻起家的,新浪有个很神 秘的人物,微博上叫老沉,真名陈彤,看互动百科上他的介绍(http://sinaurl.cn/h3T82),就能明白新浪网是如何起家的,擅长做什 么,习惯怎么做。新浪的运营部门的权力相当大,改版之前,新浪微博的运营页面由运营部门开发维护,跟个人微博页面完全是两套样式。现在页面统一了,但是运 营需求还是放在第一位。虽然部门独立,新浪微博还是难以保证它在产品需求上的独立性。

其次,是互联网公司都得面对的审核问题。因为微博上信息传递性强,所以后台审核系统要求很高。我工作上还是带有有自己的感情的。我喜欢做自己觉得很好、有 必要的功能;而对于不喜欢做的功能,把时间往后排或者跟产品人员讨论。从职业道德上讲,这是不敬业的行为。但是,审核功能加大了开发的工作量,甚至在设计 系统架构时需要考虑审核需求。

目前就说这些。换工作,一部分的目的,也是希望为早些赚够钱,肉身翻墙。如果以上内容关系到公司机密信息,请尽快联系我本人。liruqi at gmail, t.sina.com.cn。

--The orignal post is published on May-2 5:55

Tags: 新浪 离职

Posted in | Comments(1)»

关于我 June 26th, 2010


北漂, PHP工程师, 在新浪微博项目组呆过半年, 随后步入移动互联网行业. 目前只打算在北京继续漂, 帮公司做点事情. 在安智网(goapk.com)做web前/后端开发.

经常逛的地方:
http://t.sina.com.cn/liruqi
http://twitter.com/liruqi
http://verycool.me/liruqi
http://www.douban.com/people/liruqi/

我的工作:

http://market.goapk.com 这是一个在线的Android软件市场. 我希望G友能把它能够用她查询, 管理Android应用. 欢迎加入.

http://bbs.goapk.com 这就是我们的论坛了. 偶尔会改改这个论坛了.


本域名(liruqi.cn)好像还是一个twitter的api地址. 不过这样不方便, 打算更新到api.liruqi.cn
另外分享一个自己的在线代理:opliruqi.appspot.com

今天把liruqi.appspot.com 上的内容迁移到liruqi001.appspot.com, 目的在于把博客有原来的project picky项目程序转移到xuming的micolog. 至少micolog看起来挺漂亮, 有些主题可以换, 评论也是好好的. 今天就直接复制粘贴导入数据了. 以后再改时间戳吧. 先前的liruqi.appspot.com 打算冷处理, 废弃之.

Tags: 关于我

Posted in AboutMe | Comments(0)»