My favorites | Sign in
Logo
             
Search
for
Updated Jun 12, 2009 by lovelywcm
Labels: Featured, Phase-Design, Phase-Implementation, Phase-QA
Striving_for_Perfection  
过滤规则优化参考。对于完美的不懈追求……。

提示: 该文用来总结一些经验,并非过滤规则的入门教程。

    如果您想了解过滤规则的基本写法,请参考 这篇 wiki。

0、 误杀是必须被迅速更正的

1、不能以看不见了事,在后台干坏事的也应该过滤掉

2、慎用隐藏功能

不应简单地写着:
###span_3
span_3 并不必然用来显示广告,如果网站做出调整,它很可能用来显示别的内容,以致被错误地隐藏。
类似下面的方法可在一定程度上避免错误的发生:
example.com##body>.content:last-child>.news_body+span#span_3
如果网站修改了代码,这条规则很可能变为无效(而不是错误地隐藏有用的内容),从而我们能够知晓并随之修正。

   Update: 最后一条不推荐,应该慎之又慎。不恰当的隐藏规则可能会导致 严重的 性能问题。参见:讨论, wiki

3、寻找广告规律,精简规则数量

4、崇尚简单规则,优化解析速度

  • 匹配简单规则的时间复杂度是常数级的,几乎与规则数量无关。
  • 即:慎用 正则表达式。在我们这里,大部分正则式是可以用很有限的几个简单式替代的。
  • 8字符法则:简单规则,应具有至少 8个连续的 普通字符,否则效果等同正则式。如:
  • abcdefgh*/adv/ /* 简单规则,可以高效匹配 */
    abcdefg*/adv/  /* 等同正则式,影响效率 */
    abcdefg/adv/   /* 简单规则,可以高效匹配 */
    
    /advs.js|$script /* 简单规则,可以高效匹配 */
    /adv.js|$script   /* 等同正则式,影响效率; */
    
    
    首尾限定符|、通配符*、元素选择符$等,均为 非 普通字符。
    
    对于不足8个字符的规则,应尽可能补足8个(如添加 http:// 等)。
  • 精简多余字符。如:
  • http://www.abc.com/ad/ --> www.abc.com/ad/
    
    www.example.com/abc/efg/def/ad.swf --> example.com/abc/efg/def/ad.swf
    
    理想的结果是正好8个字符,但超过8个对效率也没多大影响。所以精简的前提是无误判,且不会造成今后核查的困难。
    
    imgserver43.abc.com/a/b/u/f/g/aaa.swf --> abc.com/a/b/u/f/g/aaa.swf
    
    imgserver43.abc.com/a/b/u/f/g/aaa.swf --> imgserver43.abc.com/*/aaa.swf
    
    以上简化是不应该的,我们今后将很难核查该文件是否仍然存在。

---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----

只是初步的想法,欢迎分享、讨论、指正、建议……


Comment by goodayoo, Jun 19, 2008

希望楼主去www.pconline.com.cn那里看看,ABP在这里很难完美过滤广告,要么误杀,要么过滤不干净,很麻烦的。

Comment by goodayoo, Jun 29, 2008

太平洋网站问题解决了,Thank you!

Comment by lynn.non, Jul 12, 2008

chinaren校友录的访问有问题,进入班级列表后就出问题,麻烦了。

Comment by lovelywcm, Jul 12, 2008

搞定了~,非常感谢!:)

Comment by taoyulong, Jul 17, 2008

http://www.appinn.com/facemaker/ 小众的评论区的Gravatar被杀的一个都不剩了哦 ; )

我对比了下应该是这两个条目其中之一作怪 ?http&$image com,net,cn,hk,tw#(id^=ad)

希望能及时修正误杀,让chinalist更加完美

Comment by lovelywcm, Jul 18, 2008

Hi,

我对wiki进行了一点修改。在原来的描述中,关于通配符的例子举得不太恰当。只要不破坏8字符法则,通配符不会影响效率。详情请见wiki第四条。

原wiki第五条修改后显得多余,所以删除了。

如果以前的描述给您造成了误解,俺向您表示歉意。 o(><)o

Comment by lovelywcm, Jul 18, 2008

@taoyulong

已更新,谢谢:)。

Comment by pizza306, Jul 26, 2008

希望能将专对google的地方移除 (!---google)

因为在用blogger时会有导航列不能显示的问题 而且google本身也没什么广告 希望能将该部份移除

Comment by lovelywcm, Aug 04, 2008

Hi,

过滤 Blogger 导航条的规则已经删除了,感谢你的建议。 _

Comment by dragonjian, Aug 15, 2008

使用GOOGLE DOC会出现不停刷新的情况,禁用ADP进入GOOGLE DOC后再打开ADP则可以正常使用,请查一查。

Comment by lovelywcm, Aug 25, 2008

Hi dragonjian,

我这里无法重现这个问题,您可以再试一下吗?

Comment by dragonjian, Aug 27, 2008

已经查明,是其他插件导致的。麻烦你了。 ;-)

Comment by asymmetryconservation, Sep 23, 2008

进行再学习了,提出2个问题

    pan_3 

    example.com##body>.content:last-child>.news_body+span#span_3 

在官方说明中只看见简单说了 ## 这种是基于 RAW CSS 的,不明白的是:

1、###span_3 和 #*(span_3) 有什么区别,三个#是什么意思

2、 example.com##body>.content:last-child>.news_body+span#span_3 这句话是依据CSS的吧,
其中的 body>.content:last-child>.news_body+ 这部分是语法?整个语句做何解释

盼回复Email.

Comment by lovelywcm, Sep 23, 2008

Hi,

###span_3 
<=>
#*(id=span_3)

前面的两个##表示 "RAW CSS",第三个#表示id。

这样写,一是简单些、字符少些;二是个人习惯。没什么特别意思~。

 

至于

. : + > last-child

等等,都属CSS3 selector。W3C有详细的介绍:http://www.w3.org/TR/css3-selectors/

不过,其中个别的尚未实现。

Comment by zhanghuaijie, Nov 21, 2008

我是新手,订阅了新的规则以后 打开163的主页被过滤掉广告,中间就剩下大片的空白 这样还不如不去广告的来得美观,

像这类的,难道只能逐一添加白名单吗?

Comment by lovelywcm, Nov 23, 2008

163 还行吧,不觉得丑啊 ==!

右键点击ABP的图标,其中有一个选项 “在本页禁用Adblock Plus“,也许你会喜欢它的

Comment by sunruinetwork, Mar 22, 2009

大侠,百度竞价排名的广告怎么去掉?

Comment by zeiss84, Aug 29, 2009

discuz论坛的广告怎么去掉

Comment by junlong.zhai, Sep 29, 2009

请问其它浏览器使用您的列表过滤是否有法律问题?


Sign in to add a comment
Hosted by Google Code