Page 1 of 1
一个正则写法问题,请帮忙看看。
Posted: Sep 13 2009, 16:00
by cre
<script type="text/javascript" src="/configs/article/cwjad.js"></script>
使用
$NEST(<script [^<>]++>,</script>)
$NEST(<script *>,</script>)
$NEST(<script*,</script>)
<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
都无效,用*cwjad*就有效。
如果把cwjad.js放中间就有效。
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
改成*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
同上效果
如果不是<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>而是
<script >cwjad.js</script>
<script type="text/javascript">cwjad.js</script>
却不起作用。。。。
纳闷半天觉得迷惑的很。太纳闷了,如果写错也就罢了,可是
<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
就是可以....
再细细试试,太诡异了。。。。请看图的匹配情况。救救我吧。头疼的很。
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 13 2009, 16:02
by cre
我就不明白我哪里写错了,或者就算错也不该是这样。
为啥这弄的前面要个 .js 才能匹配?需要两个.js且后者符合这条规则?
这也太邪了。
疯了疯了。哪里的问题。
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 09:30
by 不夜侯
我是新手,但也觉得你将简单的问题复杂化了。
</script>前为什么要小数点?如果以SRC的路径过滤,则
*src=$AV(*你所选的关键字*)*
如果不是,则
*你所选的关键字*
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 11:22
by phoenix
把 $LST(Scripts) 的内容发上来看看。
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 12:30
by cre
phoenix wrote:把 $LST(Scripts) 的内容发上来看看。
$LST()内容
就是
Code: Select all
<script*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
*(*ad&(^*(re|lo|he|p|sh)ad))[^d.]+.js*
两条结果是一样的。只是前面加个<script比较快。
bound
Code: Select all
$NEST(<script [^<>]++>,</script>)
$NEST(<script *>,</script>)
$NEST(<script*,</script>)
效果是一样的。当然看着$NEST(<script *>,</script>)可能会说这个就是在>前,但是,效果确实是一样。
跟$LST()与否无关。我在match使用效果是一样的。
Code: Select all
0<script .js >cwjad.js</script>
1<script >cwjad.js</script>
2<script type="text/javascript">cwjad.js</script>
3<script type="text/javascript" src="/configs/article/cwjad.js">cwjad.js</script>
4<script type="text/javascript" src="aad.js">cwjad.js</script>
5<script type="text/javascript" src="rr.js">cwjad.js</script>
6<script type="text/javascript" src=".js">cwjad.js</script>
7<script type="text/javascript" src="js">cwjad.js</script>
8<script src="js">cwjad.js</script>
9<script src=".js">cwjad.js</script>
10<script>.js cwjad.js</script>
11<script>read.js cwjad.js</script>
12<script>cwjad.js a.js</script>
13<script>00.js ad.js</script>
AA<script>cwjad.js</script>
BB<script>aaad.js</script>
CC<script read.js>aaad.js</script>
DD<script>read.js</script>
EE<script a.js>adadd.js</script>
FF<script >adadd.js</script>
测试。
测试下就知道我说的什么了。
不夜侯所说...请仔细看下,规则前面没用什么点。可是使用中就是。。。。
$NEST(<script\s*</script>)
这写法。。。。需要\s么。
不过你倒是提醒了我。。不管是不是src,前面都可以加个\=$AV(*....*)
比如
Code: Select all
<script*\=$AV((*ad&(^*(re|lo|he|p|sh)ad))*[^d.]+.js*)*
只是,好像还是不完美。
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 13:12
by 不夜侯
关于js过滤,我用了两个规则:
一种以src路径过滤,其实这个直接放在默认规则的adlist中就行了。
Code: Select all
[Patterns]
Name = "Kill adjs_src"
Active = TRUE
Multi = TRUE
URL = "$TYPE(htm)"
Bounds = "<script\s*</script>"
Limit = 256
Match = "\0 (src=($AV(*$LST(Adsrc_js)*)))\1*"
Replace = "<!-----Kill adjs_\1----->"
另一种以内容关键字过滤:
Code: Select all
[Patterns]
Name = "Kill Adjs_content"
Active = TRUE
Multi = TRUE
URL = "$TYPE(htm)"
Bounds = "<script*</script>"
Limit = 10000
Match = "*($LST(Adjs_content))\1*"
Replace = "<!----- Kill Adjs_content=[\1] ----->"
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 15:38
by phoenix
这样行吗?
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 16:41
by cre
phoenix wrote:这样行吗?
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
实现上满足要求了。
怎么想出这么写的
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作
我觉得
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
遇到loadads.js就得歇菜,如果遇到这种怕是必须得用&吧。
不过这也好说,反正是lst,后面加条<*(re|lo|he|p|sh)adad(s |)[^.]+.js*就行了。用正则能减少条数,可是写起来怕是很郁闷
受到启发,urlkill中用&失败,一条
$URL(^\wuplo)adfile/也可以改成
(^upload)adfile/了吧。还是
(^upload)*adfile/?
本来lst内用.js就是想干净点,kill已经工作了。后来把kill也加到script结果就是误。不夜候的写法很好,src和内容分离。学习了。就是一点觉得晕,src似乎小了点。adjs_content那么大。总觉得经常见到8000以上的都是播放器代码之类的,大了反而误杀。我设置的是5600。
Re: 一个正则写法问题,请帮忙看看。
Posted: Sep 14 2009, 23:10
by phoenix
why wrote:
怎么想出这么写的
还有点疑惑,用&去限制错在哪了,我写法为啥弄的 前面要有.js .前不看 后面才能工作
等你真正掌握了
^ 和
& 的用法,自然而然会这么写。
why wrote:
我觉得
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*
遇到loadads.js就得歇菜,如果遇到这种怕是必须得用&吧。
未必,用
| 就可以了。
Code: Select all
(^*(re|lo|he|p|sh)ad)*ad[^d.]+.js*|*loadads.js*
why wrote:
受到启发,urlkill中用&失败,一条$URL(^\wuplo)adfile/也可以改成(^upload)adfile/了吧。还是(^upload)*adfile/?
或许是后者,具体要看你的规则。
(^upload)adfile/ 这样写没有意义。请想想为什么。