2012年1月5日星期四

互联网广告过滤的小历史

  摘要:Adblock Plus的历史几乎就是从网景公司将Netscape的大部分源代码以Firefox之名开源后,互联网的广告过滤史。目前,Adblock plus不仅是Firefox上用户最多的扩展(活跃用户1000~1500万,是排名第二的的两倍)。

  Adblock系列扩展程序的最重大的贡献:

  1,通过浏览器扩展实现广告过滤

  2,同时提供了黑白名单

  3,提供了订阅系统

  Adblock Plus的后续影响:

  1,别人纷纷模仿,推出了类似产品。国内各种简单易用的XXXX卫士,附带了可以订阅的广告过滤,就更不用说了

  2,向世人展示了浏览器内核的内容策略有多么重要:Google Chrome 从17开始,专门提供一个叫WebRequest的扩展API,使扩展程序可以清楚地控制网页上的元素

  3,在国内,优酷甚至打出了"黑屏"这种惩罚屏蔽广告的用户的手段

  4,这一行为的最终目的可能是让互联网广告进化,达到一种新的,大多数人都能接受的平衡。最近发布的Adblock Plus 2宣布会放行非骚扰性广告,就是一个例子。

  正文:

  本文主要是在说一个叫Adblock Plus的Firefox扩展,实在没办法,在地球上所有的浏览器扩展程序中,唯有它的活跃用户能超出一千万,爱好者谓之神器也不为过。Google Chrome倒是有几个被称作"Apps"的快捷方式(Gmail,Youtube,Angry Bird)的数量能接近它。

  是不是发现这两年恼人的弹出式广告少了很多?早期,浏览器纷纷加入“阻止弹出广告”的功能,还记不记得那时候的3721导航条,google/MSN工具栏,都标榜自己能阻止弹出窗口式的广告?但,不够~~~~有人打算把浏览器中所有的广告除掉。

  一个叫Wladimir Palant的德国人,他的贡献直接让至少2000万互联网用户轻松地将自己不喜欢的广告排除于视线之外。而在他的作品Adblock Plus所体现的想法(显然不是原创的),则让远远多于2000万的人,成功的表达了自己反对广告的意愿:

Adblock Plus

------This is Adblock

  现在,随地捡起一个"****卫士",也能轻易地除去网页上的大多广告,当然愿意用专业的浏览器扩展效果更好;甚至靠广告吃饭的优酷为此举起了“反--反广告”的大旗:(小样,不肯看广告是吧?小黑屋禁闭30秒!)

ADBlock

------优酷的小黑屋

  这张照片里是2010年CeBIT(德国信息及通信技术博览会)的Linux New Media Award奖获得者(目测左边仨哥们是1.9M级的)

  Wladimir Palant是右边数过来第二个:

Adblock

  到目前为止至少没有adblock plus的中文传记,英文的,也只有Adblock plus作者的自叙,以及维基百科,所以笔者想给它做一个中文的小传:

  1,最初,有一个叫Henrik Aasted Sorensen的人,在2002年发布了第一个Adblock 0.1。这个版本无非是提供了一个Firefox自带的图片过滤功能的外部接口而已,它只能按网址屏蔽图片。

Adblock

------Adblock 0.1(Doubleclick居然那时就已经有了!)

  2,Henrik Aasted Sorensen发布的最后一个Adblock是0.3版,就像早期的Chrome上的广告过滤扩展一样,Adblock 0.3是在网页加载完成后,才将广告隐藏的

  3,2003年初,Adblock的版本号进入0.4,项目改由一个叫"rue"的账户负责维护,但这个"rue"的真名谁也不知道。Adblock 0.4使用了一种叫"XBL"的技术,虽然不能阻止广告的下载,能更好地隐藏,广告在加载网页过程中不会显示出来。此时的Adblock开始支持过滤Flash、Java广告(注:不是视频网站flash播放器内的广告),似乎烙下了不稳定的坏名声

  4,2004年,Wladimir Palant发现可以用Firefox的Content Policy(注:内容策略系统)来达到真正阻止广告被下载(这就是为什么目前Chrome上两个广告过滤扩展如此渴求WebRequest API的原因,有了它,扩展才能在广告下载前便阻止它)。这时的Adblock还可以阻止背景图片,javascript脚本以及样式表(注:估计是指css样式表隐藏?) 。Adblock也进入了0.5版。

  5,2005年初,一个叫Michael McDonald的人向Firefox的扩展库提交了"Adblock Plus 0.5"(注:就是现在的Adblock Plus)。它提供了两个历史性的创意:白名单(Exception Rules)与订阅系统。同时,用户界面和本地化(提供了16种语言的翻译)也得到了改善。

  6,与此同时,Adblock的开发趋于停止,甚至当Firefox 1.5刚发布的时候根本找不到一个兼容的Adblock。结果是Michael McDonald给Adblock写了个补丁,让它能运行在Firefox 1.5上。

  7,于是,Wladimir Palant重写了Adblock0.5的代码(注:我估计也加入了当时Adblock plus提供的新功能),并希望将其提交给Adblock的代码库,但与其它的Adblock代码贡献者发生了矛盾。Adblock的作者不愿意全盘接受Wladimir Palant的代码,并把精力放在了令人迷惑(注:作者原话'mysterious Adblock 0.6')的Adblock 0.6中

  8,接下来Wladimir Palant联系了Michael McDonald以讨论合作事宜,而Michael McDonald表示他无意继续开发Adblock Plus,于是Michael McDonald便把Adblock Plus项目转交给了Wladimir Palant。到了2006年初,Wladimir Palant重写的Adblock 0.5成为了"Adblock Plus 0.6",而真正的Adblock项目却已完全停滞,Mozilla甚至不得不专门为Michael McDonald开放了上传权限,以便他修补一个出现在Adblock上的漏洞。

Adblock

------Adblock Plus 0.6.1,白名单的语法是"@@"

  9,从此,Firefox上的广告过滤扩展几乎完全被Wladimir Palant维护的Adblock Plus垄断。期间他改进了Adblock Plus的比较算法(从trivial算法更换为Boyer-Moore算法),意味着可以给Adblock Plus添加上万个(快速)条目,却几乎不会减慢运行速度。

  注:

  a,在目前的算法中,快速条目大致上指"3个不包括星号的连续字符"的条目。

  b,2006年Wladimir Palant在一篇博文中表示,规则条目数量的增加几乎不会对速度产生影响,在当时的电脑与当时的Firefox上,3000条规则需要30毫秒。

Adblock

  ------Adblock Plus 0.7.2(蓝色)比0.7(绿色)快了一倍以上

  c,Adblock Plus使用JavaScript(JS)写的,而JS的执行效率和浏览器的JS引擎有很大关系。和2006年不同的是,现在的JS引擎都能把JS预先动态编译(JIT)机器码,极大提高了执行效率。

Adblock

------Firefox 9(2011年12月)的JS性能几乎是与Firefox 3.6(2010年1月)的5倍

Adblock

------而Firefox 3.5(2009年6月,JS引擎与Firefox 3.6相同)的JS性能是Firefox 3(2008年6月)的两倍

  10,2010年,蓬勃发展的Google Chrome浏览器迎来了它的两大广告过滤扩展---Adblock for Chrome(由美国人Michael Gundlach开发)和Adthwart(作者不详)。Adblock for Chrome是一个专门为Google Chrome开发的广告过滤扩展,后来Michael Gundlach又把它移植到了Apple Safari上。Adthwart则是移植了Adblock Plus的比较算法,后来其作者把项目移交给了Wladimir Palant,同时Adthwart归属于Adblock Plus的大旗下。

  (注:广大Chrome用户纷纷用脚投票表示他们更喜欢Adblock for Chrome,其用户数量接近三倍于Adblock Plus的Chrome版)

Adblock

------Adblock for Chrome  on  Chrome Web Store

  11,Google Chrome的用户量(注:我倾向于认为这个'用户量'是活跃用户)上,Adblock(300万+)比Adblock Plus(100万+)多一倍以上。而Firefox的Adblock Plus日均活跃用户最高有1500万。光是这些活跃用户加起来就有1500~1900万(考虑可能的重复)人。因为"活跃用户"总是远远少于实际用户数量,所以实际受益于Adblock Plus系列及相似产品的用户保守估计至少2000万。

Adblock

------Adblock Plus(Firefox版)的用户情况:总共1.45亿下载次数,近一年来平均1280万活跃用户

  12,而国内的特殊情况(不到5%的用户使用了新式的浏览器:Google Chrome(及衍生产品,或使用webkit引擎的浏览器),Firefox),使用Adblock Plus等扩展的大约只有50万的级别(注:由AMO和CNZZ的数据推测)。然而,国内有大量的软件、其它浏览器扩展使用了Adblock Plus的创意:高效的比较算法,黑白名单,订阅系统,使得国人能更轻易地对付广告(效果差一点没问题)

ADblock

------国内常见的某"XXXX卫士"提供的广告过滤功能

  13,今年(2011)年底,Wladimir Palant将Adblock Plus作为一个公司运营,同时Adblock Plus进入2.0分支,默认放行了被定义为"非侵犯性的"广告。12月底,Adblock Plus有了第一位雇员Andrey Novikov,他目前主要负责Adblock Plus的Google Chrome版本

Adblock

------Adblock Plus 2,默认允许"非骚扰性型广告"

  • 最出名的配置文件是由adblock plus团队负责维护的Easylist,至少12个非常流行的地方性列表(包括Chinalist)是在Easylist的基础上添加的。一个典型的适合大中华地区的过滤列表(Chinalist-Lazy,包含了Chinalist,部分Easylist和EasyPrivacy)有将近13000个条目,正是Adblock Plus高效的比较算法,用户才能不影响使用地过滤广告
  • 几乎每个允许附加组件的浏览器都有了自己的广告过滤扩展。Adblock for Chrome与Adblock Plus的Chrome版可以很容易移植,甚至直接运行于到那些使用Chromium内核的第三方浏览器(注,文中有误,傲游是直接基于Webkit)。
  • 国内盛行的各种"XXXX卫士"软件,以及某些杀毒软件也提供了不依靠浏览器的广告过滤功能,它们通常不兼容Adblock语法,且过滤功能也有限,但胜在使用极其方便
  • 少数广告过滤软件能在提供不依靠浏览器的过滤同时,也能保证各种高级过滤功能

  在这之后反对的是什么呢?

  用户追踪:

  我们在上网的时候,总是(通常)不知情地把我们的各项信息提交给第三方,打一个不恰当的比喻:"它"知道你何时,何地,和谁,在哪里开房,当然,"它"通常不知道你的真实姓名,也绝不会偷看你们在房间里具体做什么。被你访问的所有网站都使用了同一个“第三方信息公司”服务,这是怎么一个情况?对于外国人,这个“第三方信息公司”就可以说是Google了,全球来说,大部分的网站都使用了Google Analytics。

  来源:fcerebel投稿。