Thursday, January 1, 1970

互联网广告过滤的小历史

<![CDATA[

  摘要: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

No comments:

Post a Comment

Tomb sweeping day

It's Tomb-Sweeping Day Today. It's a very important traditional Chinese festival. It's a day for tomb-sweeping. People visit the...