GoAgent小结�技术篇和统计篇

来源:http://igfw.net/archives/8374

GoAgent小结�技术篇

2011/12/8 Update
具体实现细节,请访问goagent-dev之goagent做了哪些改进?

GoAgent 一直号称简单快速,不是没有道理的。proxy.py不到800行的代码实现了:跨平台运行、多appid负载均衡、RangeFetch、支持NTLM、支持内网代理、支持ipv6、支持php fetch等诸多feature,其考虑到的一个重要原则是依赖尽可能小,这体现在了:

0.代码即程序,Windows下绿色运行,连GAE的sdk都不用装,这得益于先进的打包技术。
1.实现基本上都是标准库,openssl库也很常见,移植容易。
2.fetch.php对服务器端的要求较低。需要preg/zlib/curl模块支持,前两个属于标准模块,curl也是常见模块。
3.合理的默认值,只需要配置appid就可以用了。
4.不支持gfwlist

GoAgent 另一个原则就是追求速度,不断在优化,看看ChangeLog就知道了:

0.压缩传输,不支持强加密,因为连GMail都被天朝黑客入侵过,保证local到AppEngine的绝对完全并没有太多的意义。。
1.再如之前整合了gevent或者线程池,为了速度后来又拿掉了;
2.为了加快启动速度,将读取proxy.ini 放入了全局变量中,代码因此丑陋了;
3.修正了socket关闭速度慢的问题;
4.多次重新打包python解释器(proxy.exe);
5.简单到极致的GUI,在启动时完成大部分初始化设置并减少if的使用;
6.为了优化php fetch的规则匹配,干脆将其和GAE的监听端口分开;

GoAgent的优势在于在客户端做了大量工作,由本身维护session的状态, 因为GoAgent 既是Client又是Server,本地相当于一个http server(采用了BaseHTTPServer),同时又是Client端,与部署在AppEngine的fetch.py进行通信。所以当我得知有些代理软件使用mysql来维护代理服务器的session状态时,觉得有点惊讶,明显不合理了嘛。另外基于GAE的代理最快的就是直连北京google了,因为Google的很多服务都是云服务,所以一个IP能够提供多种服务,其中就包括AppEngine,因此访问google自家的服务速度很快,而GoAgent 从一开始就是这么做的。

关于Porting的问题,比如支持iOS,我认为移植平台本身更为容易,所以才有很多人打Android应用的主意,比如最开始的Alien Dalvik,号称让MeeGo支持Andorid 25W应用的ACL for MeeGo,裁剪VirtualBox的BlueStack,一直不温不火的Mobile Virtualization,尽管这些目前看来还不太实用,比如BlueStack,我就挺好奇它如何解决ABI不同的问题,但是都是移植平台的例子~

咳,有点扯远了,所以支持iOS最关键的无非就是:1.交叉编译python2.6 for iOS 2.编译pyOpenSSL for iOS。其他的都是如何让设置变得简单,操作简便而已。顺带提一句,pyOpenSSL和SBSetting GoAgent toggle都是在我的ipod上编译的,越狱开发其实门槛也不高,只要搞定了toolchain就ok。

最后再八卦几句,GoAgent 最开始是托管在github上(其实现在也是),后来为了不"牵连"github,迁移到了Google Code上,在首页上用了一个空的bit.ly 链接指向了真实的地址,原因也是如此;GoAgent 的名字是因为不想再用已经泛滥的proxy。。

原文http://kernelpanic.im/blog/2011/10/08/goagent-summaries-technical/

========

GoAgent小结�统计篇

GoAgent 发布快半年了,打算写两篇小结一下,另一篇会讲技术相关的内容~

如果没有最开始的随意发布,GoAgent 或许还只是个内部使用的小玩意,这是当时的新闻:

而现在,GoAgent 在Google Code上star数超过了850,issue数超过了1000,

这实在是有点意外,不信可以看看上千的都是什么project,CyanogenMod也不过860而已:

在Google Trends搜索流行度已经超过了老前辈gappproxy。

和最流行的目田门相比,差距也有变小的趋势。

根据Google Analytics 最近三个月的统计,GoAgent 首页PV有23W,独立访问才3.8W,可以推测除了作者之外,有人也每天刷GoAgent的首页。。中间的peak貌似是宣布支持iOS的时候,九月底的另一个peak貌似是支持php的延后效应。

GoAgent 的下载数和用户数很难估计,因为github并没有下载的统计,很多人更新GoAgent也是git remote update这种方式,而且下载了并不代表就会使用。几万用户估计应该有,分布在"全球"。。

很显然,Windows和Chrome用户是主流。

GoAgent iOS好一点,提供了Google Code和cydia源的下载,结合Google code和这个简单的脚本进行统计,GoAgent iOS大概下载了1500次,而python2.6下载2200次左右,用户数应该不到1千。。

GoAgent 的搜索流行度得到了Google Analytics数据的支持,一半以上流量都是通过搜索而来,说明在首页放置下载链接和Google +1是相当正确的。

顺带提下,还有个ezproxy的事情,具体可以看v2ex的帖子和这个链接,我根据淘宝显示的最近成交记录估算了一下,那个哥们利用GoAgent赚了大概1000块,不过这也从侧面证明了GoAgent的速度和可用性,都可以拿来卖钱了~

原文http://kernelpanic.im/blog/2011/10/06/goagent-summary-statistics/

发表评论