返回列表 发帖
单纯从这个页面来说,先过滤属性为“border="0"”的table,再过滤属性为“google”或(属性为“http”)的script,就可以得到很好的过滤效果。代码如下:
  1. <rule>
  2.   <name>demo</name>
  3.   <domains>
  4.     <domain>
  5.       <include>
  6.         <![CDATA[*paoshu8.com*]]>
  7.       </include>
  8.     </domain>
  9.   </domains>
  10.   <pattern type="1">
  11.     <targets>
  12.       <enable><![CDATA[1]]></enable>
  13.       <param>
  14.         <![CDATA[table]]>
  15.       </param>
  16.       <paramex>
  17.         <![CDATA[border="0"]]>
  18.       </paramex>
  19.       <replace>
  20.         <![CDATA[<!--  blocked by 33  -->]]>
  21.       </replace>
  22.     </targets>
  23.   </pattern>
  24.   <pattern type="1">
  25.     <targets>
  26.       <enable><![CDATA[1]]></enable>
  27.       <param>
  28.         <![CDATA[SCRIPT]]>
  29.       </param>
  30.       <paramex>
  31.         <![CDATA[google]]>
  32.       </paramex>
  33.       <replace>
  34.         <![CDATA[<!--  blocked by 33  -->]]>
  35.       </replace>
  36.     </targets>
  37.   </pattern>
  38. </rule>
复制代码

TOP

其实这个页面的广告主要由三类脚本产生,1、google广告,特征词为“google”或“_ads”;2、百度广告脚本,特征词为“baidu”或“crop”;3、本站广告脚本,特征词为“gg”。其中百度和本站的广告脚本包含在table框里面,所以将整个table过滤掉后就不需要再查找这两个脚本了。

楼主的所用规则的含义是:从“<script”开始到“</script>”结束,只要中间含有“http”字符串的一律过滤掉。杀伤范围太大了,而且效率也不是很高。
paramex是后来加上的参数,含义是:在指定元素属性中查找特征词。
若楼主将你过滤script元素的规则改成使用paramex辅助,则是仅仅在<script .......>中查找“http”,在该页面中就不会产生误过滤了。

TOP

http://bbs.ioage.com/cn/thread-122642-1-1.html
这是e版写的教程,比较详细。如果您有兴趣研究广告过滤,可以加入这个过滤讨论QQ群:2518335

TOP

返回列表