返回列表 发帖

[TheWorld 3] TheWorld 3 广告过滤规则教程 (2009.12.16 更新)

首先是TheWorld 3 广告过滤扩展简介,推荐大家稍微花时间了解一下,2楼是结合实例的过滤教程

序言
TheWorld 3 的过滤规则采用标准的xml格式,所以在使用和编写的过程中有几点需要注意的我先说一下:
1. 虽然我们的规则是 xml 格式,但是并不需要 xml 语法基础,大家写规则的时候可以复制现成的规则,然后对特定的区域进行修改就可以了
    备注:请一定要注意标签的对称和关闭
2. tw3 的过滤规则依然支持正则表达式,没有正则表达式基础的人一样可以编写,因为在 tw3 的过滤规则中,正则表达式只是可选条件
3. 规则文件中的 xml 标签大家可以无视,因为在编写规则的过程中这些不是必须了解和编写的内容,大家需要编写的规则大部分都在<![CDATA[ ]]>中间,编写规则的过程中只有一点要非常注意:CDATA中不支持嵌套
   即<![CDATA[ ]]>里面不能出现"]]>"字样
4. 编写过滤规则依然需要一定的 html 语法基础,最起码你要知道那些是你要过滤的内容,那些不是


过滤规则参数简介(请结合过滤扩展附带的示例规则查看,会更加清楚)
一、xml 标签简介(常见的过滤规则中所使用到的,看不明白的可以直接跳过,在编写规则的时候复制现成的进行修改即可,并不一定要了解这些内容)
首先介绍version,这个节点表示过滤规则的版本,从1.0.2.5版过滤扩展开始,升级到2.0版本的规则,即<version>2.0</version>       

TheWorld 3 过滤规则支持自动更新,需要编写的时候填写相应的字段
1. onlineupdate
    这个节点下的是自动更新需要的填写的内容
1.1 downloadurl
    downloadurl是规则更新的地址,例如:发布在论坛上的规则就是这样的<downloadurl><![CDATA[http://bbs.ioage.com/cn/attachment.php?aid=87168]]></downloadurl>

12. quotewebpage
    是规则所在页面的链接地址,例如:发布在论坛上的规则就是这样的<quotewebpage><![CDATA[http://bbs.ioage.com/cn/thread-123230-1-1.html]]></quotewebpage>

url拦截部分
1. urlrules
    url拦截规则都在<urlrulse></urlrules>以内

1.1 includeurls
    url拦截列表,支持正则表达式;如:<includeurls><![CDATA[*/guanggao/*]]></includeurls>

1.2 excludeurls
    url拦截排除列表,优先级高于 includeurls;如 <excludeurls><![CDATA[*ioage.com*]]></excludeurls>

页面元素过滤部分
1. rule
    对应一个站点的规则就在一个<rule></rule>以内

1.1. name
    每个rule节下的<name></name>之间的是过滤规则的名称;如<name>百度的过滤规则</name>

1.2. domains和domain
    domains以及domain下的内容是这个规则所对应的站点,其中也可以设置排除站点
    注:domain节可以并列

1.2.1 . include和exclude
    domain节下,控制规则对应或排除的网址
    include:表示该规则对应的网址;如:<include><![CDATA[*baidu.com*]]></include>
    exclude:表示该规则排除的网址;如:<exclude><![CDATA[map.baidu.com]]></exclude>

2. pattern
    pattern节就是规则主体部分,每一个 pattern 都可以看作是一条规则,由于支持多重过滤,所以可以在 pattern 下再加 pattern,理论上可以无限个
    注:该节可由参数设置不同的功能,具体请参考后面的参数简介

2.1 targets
    targets节包含规则的匹配和替换

2.2 param
    这里的 param 节表示下面的规则所对应的内容(由pattern 节的参数 type 控制,具体请参考后面的参数简介)如:<param><![CDATA[table]]></param> 表示规则对应的范围是一个table
    同时,在用作匹配标签的时候 name 节表示规则所匹配的内容,支持正则表达式;如:<param><![CDATA[width="30%"]]></param> 表示在上一节中的范围内搜索 "width="30%""进行匹配

2.3 paramex
     这里的 paramex 节表示上节规则所对应的标签属性值(由pattern 节的参数 type 控制,具体请参考后面的参数简介)如:<paramex><![CDATA[header]]></paramex> 表示规则对应的范围是标签属性值为header

2.4 replacevar
    replacevar 可以在规则中声明变量,将上一节 param 中匹配到的内容输出到变量;如:<replacevar><![CDATA[$name$]]></replacevar>
   
2.5 replace
    replace 节是规则的替换部分当匹配到上一节 param 的内容后进行替换;如:<replace><![CDATA[<!--AD Blocked By TheWorld 3-->]]></replace>
    也可以引用 replacevar 节中的变量,如:<replace><![CDATA[$name$]]></replace>

2.6 reverse
    reverse 反向匹配,设为"1"开启,"0"关闭,没有该节即默认关闭

3. attachhtml
    attachhtml 可以在对应的页面后面增加自定义的内容;如:<attachhtml><![CDATA[<!--自定的内容-->]]></attachhtml>


二、pattern中的参数
type= 1 (搜索块操作)
按标签(param属性指定的值,如DIV)查找块,为下一级过滤搜索匹配到的区间集(同时搜索到多个满足条件的DIV区间)。

type= 2 (确认块操作)
以正则式表达式(param属性指定的正则表达式)是否匹配,确认上层搜索到的区间是否是需要查找的区域。

type= 3 (确认块操作)
查找通配字符(param的属性指定其值)在上级过滤确认的区间中是否存在,以确认上层搜索到的区间是否是需要查找的区间。

Type= 4 (搜索块操作)
按标签当type=4时,targets节下增加paramex作为结束(以param属性值开始, 以paramex属性值结束)查找块
比如:<param><![CDATA[<!--begin-->]]></param><paramex><![CDATA[<!--end-->]]></paramex>,表示搜索以<!--begin-->开始到<!--end-->结束的区间

type= 5 (搜索确认块操作)
查找任意字符(支持正则表达式),注意,type=5 不适用于以上 4 种方式当中,type=5同时提供搜索和确认操作,可以直接进行替换等操作
比如:<param><![CDATA[google]]></param>表示直接以文本方式搜索"google"字样


三、常量
$AppPath$
引用过滤扩展所在目录路径

tw3 的过滤规则实际上比tw2要容易的多,希望大家都能很好的利用,有问题的请在本版讨论
由于目前的过滤扩展管理界面没有完善,所以暂时只能将规则做成可以导入的xml规则文件,示例以过滤世界之窗论坛顶部为例

首先,给大家提供一个可以导入的xml模板,把下面的内容保存成xml文件即可
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <adfilter>
  3. <version>2.0</version>       
  4.   <rules>
  5.     <rule>
  6.       <name>过滤规则名称</name>
  7.         <onlineupdate>
  8.         <downloadurl><![CDATA[过滤规则文件链接]]></downloadurl>
  9.         <quotewebpage><![CDATA[过滤规则所在帖子链接]]></quotewebpage>
  10.         </onlineupdate>
  11.       <domains>
  12.         <domain>
  13.           <include>
  14.             <![CDATA[*规则对应的网址*]]>
  15.           </include>
  16.           <exclude>
  17.             <![CDATA[规则排除的网址]]>
  18.           </exclude>
  19.         </domain>
  20.       </domains>
  21.       <pattern type="1">
  22.           <targets>
  23.             <param>
  24.               <![CDATA[标签]]>
  25.             </param>
  26.           </targets>
  27.           <pattern type="3">
  28.               <targets>
  29.                 <param>
  30.                   <![CDATA[关键字]]>
  31.                 </param>
  32.                 <replace>
  33.                   <![CDATA[<!--AD Blocked By TheWorld 3-->]]>
  34.                 </replace>
  35.               </targets>
  36.           </pattern>
  37.       </pattern>
  38.     </rule>
  39.   </rules>
  40. </adfilter>
复制代码
首先,我们来看一下我们要过滤的目标
就是本论坛的顶部:
01.PNG
2009-11-20 20:02


接着,我们查看页面源码找到这个部分,很容易我们就找到了这个部分
  1. <div id="header">
复制代码
我们要过滤的目标就是id="header"的div

根据一楼的设置参数,我们把这个代入到刚刚提供的xml模板中即可,我们得到了以下的规则
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <adfilter>
  3. <version>2.0</version>       
  4.   <rules>
  5.     <rule>
  6.       <name>tw论坛首页测试规则</name>
  7.         <onlineupdate>
  8.         <downloadurl><![CDATA[http://bbs.ioage.com/cn/attachment.php?aid=12345]]></downloadurl>
  9.         <quotewebpage><![CDATA[http://bbs.ioage.com/cn/thread-12345-1-1.html]]></quotewebpage>
  10.         </onlineupdate>
  11.       <domains>
  12.         <domain>
  13.           <include>
  14.             <![CDATA[*bbs.ioage.com/cn/*]]>
  15.           </include>
  16.         </domain>
  17.       </domains>
  18.       <pattern type="1">
  19.           <targets>
  20.             <param>
  21.               <![CDATA[div]]>
  22.             </param>
  23.           </targets>
  24.           <pattern type="3">
  25.               <targets>
  26.                 <param>
  27.                   <![CDATA[id="header"]]>
  28.                 </param>
  29.                 <replace>
  30.                   <![CDATA[<!--AD Blocked by TheWorld 3-->]]>
  31.                 </replace>
  32.               </targets>
  33.           </pattern>
  34.       </pattern>
  35.     </rule>
  36.   </rules>
  37. </adfilter>
复制代码
把上面的规则保存成xml文件,然后在广告设置界面导入之后我们再次访问论坛就会看到,顶部的内容已经没有了
如图:
05.PNG
2009-11-20 20:02

TOP


新浪/腾讯/饭否@小蛐蛐   twitter @jiayiming
如有过滤规则需要更新,请尽量原帖反馈提醒。

TOP

返回列表