Page 1 of 1

一个小问题 $AV()是不是不能取含\的值?

Posted: Feb 24 2010, 18:37
by cre
规则
$NEST(<script*,</script>)|$TYPE(js)$NEST(<script*,<\\/script>)
匹配<script*=$AV((^\wuplo)*$LST(Urlkill)*)*
lst内有onetad.com条目。

遇到http://js.xiaoshuo520.com/shtml/tan/tan.js
内文

Code: Select all

document.writeln("
<script src=\" http:\/\/code12.onetad.com\/js\/247\/247736.js\"><\/script>
<script src=\" http:\/\/code12.onetad.com\/okno.php\"><\/script>
")
怎么也不能匹配。

换用

Code: Select all

[Patterns]
Name = "script js test"
Active = TRUE
Bounds = "$TYPE(js)$NEST(<script*,<\\/script>)"
Limit = 256
Match = "<script*=\\*$LST(Urlkill)*"
是可以的。

测试,用

Code: Select all

[Patterns]
Name = "script"
Active = TRUE
Bounds = "$NEST(<script*,<\\/script>)"
Limit = 256
Match = "<script*=\\$AV(*$LST(Urlkill)*)*"

去test

Code: Select all

("<script src=\" http://code12.onetad.com/js/247/247736.js">
<\/script><script src=\" http:\/\/code12.onetad.com\/okno.php\"><\/script>")
第一个可以,第二个不行。

查阅帮助好像没说不能匹配“\”,这里应该不使用$AV么?用
<script*=\\*$AV(*$LST(Urlkill)*)*比起<script*=\\*$LST(Urlkill)*
$AV在这用还有意义么?

Re: 一个小问题 $AV()是不是不能取含\的值?

Posted: Feb 25 2010, 01:54
by Bonnie
测试了一下$AV只能匹配到一开始的\"两个字符,可能跟proxomitron对引号的智能判断有关,
第一个\时就认为src已经开始了,第二个"时就认为已经结束了。
sidki考虑到了document.write的这种情况,可以参考一下他的规则,
就是先用$AV判断普通的script,再用OR判断document.write的形式。
不过对于先把广告主机或路径赋值给变量再写入网页的语句似乎仍然没有办法通配。