请教两个规则的写法

新手入门、经验交流

Moderator: cre

Forum rules
  • 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
  • 提问前请先查阅软件帮助文件和论坛相关讨论
  • 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
  • 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
Post Reply
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

请教两个规则的写法

Post by 不夜侯 »

假设有个要过滤的标签代码如下:

Code: Select all

<script type="text/javascript">
000adtop111
</script>
adtop 为关键字过滤,为避免去扫描过滤这样的代码:

Code: Select all

<script  type="text/javascript" 333adtop444>
000111
</script>
制定规则如下:

Code: Select all

[Patterns]
Name = "Killad script_content"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 800
Match = "$NEST(<script[^>]+>,*adtop*</script>)"
测试虽然能够达到我的要求,但是这个规则会CPU高得死机。
请教:如果只以标签之间的内容为关键字过滤,而不是过滤标签属性值,正确规则写法怎样?谢谢!

26 Dec 2009, 21:38:
尝试这样写,似乎能满足我的要求。

Code: Select all

[Patterns]
Name = "Killad script_content"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 800
Match = "$NEST(<script[^>]+>,(\1&&*adtop*),</script>)"
Last edited by 不夜侯 on Dec 26 2009, 14:39, edited 1 time in total.
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 请教两个规则的写法

Post by 不夜侯 »

与上面的情况相反。假设要过滤的代码如下:

Code: Select all

<script type="text/javascript" src="./styles/ad/styleswitcher.js"></script>
/ad/ 为关键字过滤,为避免去扫描过滤这样的代码:

Code: Select all

<script type="text/javascript">  0000000000 src="./styles/ad/styleswitcher.js" 11111111</script>
我制定下面的规则,测试是成功的,写法正确吧?

Code: Select all

[Patterns]
Name = "Killad script-URL"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 300
Match = "$NEST(<script,(\s[^>]+>&&*src=$AV(*/ad/*)*),</script>)"
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 请教两个规则的写法

Post by phoenix »

<script> 标记一般不嵌套,所以没必要用 $NEST() 命令。

第一个问题,可以写成如下形式:

Code: Select all

[Patterns]
Name = "Killad script_content"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "<script\s*</script>"
Limit = 800
Match = "<script\s[^>]+>*adtop*</script>"
第二个问题:

Code: Select all

[Patterns]
Name = "Killad script-URL"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "<script\s*</script>"
Limit = 800
Match = "<script\s([^>]+&&*src=$AV(*/ad/*)*)>*"
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 请教两个规则的写法

Post by 不夜侯 »

phoenix wrote:<script> 标记一般不嵌套,所以没必要用 $NEST() 命令。
.............
谢谢一直很尽责的phoenix。
另外还有个小问题,也在这请教。
我好像记得在哪看过网页过滤规则是按自上而下的顺序进行过滤。那么针对特定网站的规则与通用规则谁先谁后更有效率还是没有区别?
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 请教两个规则的写法

Post by phoenix »

不夜侯 wrote:我好像记得在哪看过网页过滤规则是按自上而下的顺序进行过滤。
没错。
不夜侯 wrote: 那么针对特定网站的规则与通用规则谁先谁后更有效率还是没有区别?
没有区别。

如果2个规则匹配的是同一段代码,那么第一个规则匹配后,第二个规则就匹配不到了,除非第一个规则设置了 Multi match 标记。

因此,怎么排序,主要是看你希望哪个规则先匹配到。
Post Reply