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

新手入门、经验交流

Moderator: cre

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

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

Post 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在这用还有意义么?
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

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

Post by Bonnie »

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