以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
Moderator: cre
Forum rules
- 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
- 提问前请先查阅软件帮助文件和论坛相关讨论
- 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
- 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
-
- Posts: 7
- Joined: Jan 17 2008, 17:00
以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
例如:我想将网页中的广告iframe替换为"<!-- 被清除的iframe广告 -->"这个字符串,iframe代码:
<iframe src="http://ivy.pconline.com.cn/adpuba/show? ... media=html" marginwidth="0" marginheight="0" align="left" frameborder="0" height="280" scrolling="no" width="320">广告:ad_top</iframe>
1.首先在HTML Web Page Filters中添加Filter
Bounds Match:
$NEST(<iframe*>,</iframe>)
Byte Limit:
1000
Matching Expression:
$LST(AdList)
Replacement Text:
<!-- 被清除的iframe广告 -->
2.在AdList中添加过滤规则:
*ivy.pconline.com.cn/adpuba/*
3.点击Fitler配置中的Test Filter,Test结果为[No Match]
4.如果将AdList中的过滤规则改为:
*ivy.pconline.com.cn*adpuba/*
或者
*(ivy.pconline.com.cn/adpuba)/*
或者
*(ivy.pconline.com.cn/adpuba/)*
则Test结果均为正常:
<!-- 被清除的iframe广告 -->
5.但过滤规则中类似于
*/advertise/*
*/ggao/*
这些规则都没有问题。
最不明白的地方就是第四步当中出现的情况,是否斜线(/)在过滤规则中有特殊意义,或者包含点(.)的过滤规则有什么特殊说法,查了软件附带的说明文件,也到google里搜了不少,还是没有得到满意的答案。
不知道哪位高手能指点迷津,说明一下List定义中的/是否有什么特殊用途?
<iframe src="http://ivy.pconline.com.cn/adpuba/show? ... media=html" marginwidth="0" marginheight="0" align="left" frameborder="0" height="280" scrolling="no" width="320">广告:ad_top</iframe>
1.首先在HTML Web Page Filters中添加Filter
Bounds Match:
$NEST(<iframe*>,</iframe>)
Byte Limit:
1000
Matching Expression:
$LST(AdList)
Replacement Text:
<!-- 被清除的iframe广告 -->
2.在AdList中添加过滤规则:
*ivy.pconline.com.cn/adpuba/*
3.点击Fitler配置中的Test Filter,Test结果为[No Match]
4.如果将AdList中的过滤规则改为:
*ivy.pconline.com.cn*adpuba/*
或者
*(ivy.pconline.com.cn/adpuba)/*
或者
*(ivy.pconline.com.cn/adpuba/)*
则Test结果均为正常:
<!-- 被清除的iframe广告 -->
5.但过滤规则中类似于
*/advertise/*
*/ggao/*
这些规则都没有问题。
最不明白的地方就是第四步当中出现的情况,是否斜线(/)在过滤规则中有特殊意义,或者包含点(.)的过滤规则有什么特殊说法,查了软件附带的说明文件,也到google里搜了不少,还是没有得到满意的答案。
不知道哪位高手能指点迷津,说明一下List定义中的/是否有什么特殊用途?
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
我直接将*ivy.pconline.com.cn/adpuba/*写到Matching Expression窗口,或者放到blockfile中测试都是成功的。nikita_win wrote: 2.在AdList中添加过滤规则:
*ivy.pconline.com.cn/adpuba/*
3.点击Fitler配置中的Test Filter,Test结果为[No Match]
请确保你保存了blockfile文件,并执行了Reload Edited Lists菜单命令。
“.”和“/”在proxomitron的表达式中并无特殊含义。
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
在我这里重现了,你用的是url killfile.txt,一开始我用的是专门收集iframe的文件过滤的,用*ivy.pconline.com.cn/adpuba/*过滤,可以正常过滤,但放到和你一样的blocklist里,则不行,看起来好像是因为blocklist的问题,不过说不通。
再测试,发现问题是出在开头的*号上面,把它换成\1,可以正常过滤,换成**也可以正常过滤。或者用*\1也成,这时*号没有匹配任何字符。或者用*ne.com.cn/adpuba/*来匹配,也可过滤。这些测试都在url killfile.txt里进行。
只知道这么多了,具体原因还不知道。
再测试,发现问题是出在开头的*号上面,把它换成\1,可以正常过滤,换成**也可以正常过滤。或者用*\1也成,这时*号没有匹配任何字符。或者用*ne.com.cn/adpuba/*来匹配,也可过滤。这些测试都在url killfile.txt里进行。
只知道这么多了,具体原因还不知道。
-
- Posts: 7
- Joined: Jan 17 2008, 17:00
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
的确如楼上所说,我怀疑是AdList对过滤规则有特殊处理。
重新发一下图:

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
第二张

重新发一下图:

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
第二张

-
- Posts: 7
- Joined: Jan 17 2008, 17:00
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
刚刚实验发现,不单单是在AdList(URL Killfile.txt)中有这个问题,有些自建的过滤列表文件也有这个问题:
我建立一个过滤列表文件名为:"ad js.txt",其中添加过滤规则:
*adv.pconline.com.cn/adpuba/*
并将“ad js.txt”加入过滤列表名为“adjs”。
然后在“HTML Web Page Filters”中添加“ad Javascript to blank”过滤器,过滤器定义如下:
Bounds Match:
$NEST(<script*>,</script>)
Byte Limit:
1000
Matching Expression:
$LST(adjs)
Replacement Text:
<!-- 广告Javascript过滤 -->
点击Test Filter测试:过滤下列HTML代码:
<td style="border: 1px solid rgb(0, 0, 0);" align="center" width="744"><script src="http://adv.pconline.com.cn/adpuba/show? ... pt><object mediawrapchecked="true" type="application/x-shockwave-flash" data="http://img1.pconline.com.cn/ivy/image/2 ... 903765.swf" wmode="opaque" height="90" width="744"></object><div style="overflow: hidden; height: 2px;"></div></td>
结果:
[No Match]
如果将ad js.txt中的过滤规则改为:
**adv.pconline.com.cn/adpuba/*
或者
*(adv.pconline.com.cn/)adpuba/*
则过滤成功,过滤结果为:
<td style="border: 1px solid rgb(0, 0, 0);" align="center" width="744"><!-- 广告Javascript过滤 --><object mediawrapchecked="true" type="application/x-shockwave-flash" data="http://img1.pconline.com.cn/ivy/image/2 ... 903765.swf" wmode="opaque" height="90" width="744"></object><div style="overflow: hidden; height: 2px;"></div></td>
下面附图:
我的Blockfile List设置

加括号正常过滤

普通通配符定义,无法正常过滤

加**正常过滤

我建立一个过滤列表文件名为:"ad js.txt",其中添加过滤规则:
*adv.pconline.com.cn/adpuba/*
并将“ad js.txt”加入过滤列表名为“adjs”。
然后在“HTML Web Page Filters”中添加“ad Javascript to blank”过滤器,过滤器定义如下:
Bounds Match:
$NEST(<script*>,</script>)
Byte Limit:
1000
Matching Expression:
$LST(adjs)
Replacement Text:
<!-- 广告Javascript过滤 -->
点击Test Filter测试:过滤下列HTML代码:
<td style="border: 1px solid rgb(0, 0, 0);" align="center" width="744"><script src="http://adv.pconline.com.cn/adpuba/show? ... pt><object mediawrapchecked="true" type="application/x-shockwave-flash" data="http://img1.pconline.com.cn/ivy/image/2 ... 903765.swf" wmode="opaque" height="90" width="744"></object><div style="overflow: hidden; height: 2px;"></div></td>
结果:
[No Match]
如果将ad js.txt中的过滤规则改为:
**adv.pconline.com.cn/adpuba/*
或者
*(adv.pconline.com.cn/)adpuba/*
则过滤成功,过滤结果为:
<td style="border: 1px solid rgb(0, 0, 0);" align="center" width="744"><!-- 广告Javascript过滤 --><object mediawrapchecked="true" type="application/x-shockwave-flash" data="http://img1.pconline.com.cn/ivy/image/2 ... 903765.swf" wmode="opaque" height="90" width="744"></object><div style="overflow: hidden; height: 2px;"></div></td>
下面附图:
我的Blockfile List设置

加括号正常过滤

普通通配符定义,无法正常过滤

加**正常过滤

-
- Posts: 7
- Joined: Jan 17 2008, 17:00
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
大家能看到图片么?
论坛好像对图片宽度有限制,请将图片在新窗口中打开,就能看到完整图片了。
论坛好像对图片宽度有限制,请将图片在新窗口中打开,就能看到完整图片了。
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
初步测试,似乎是Proxomitron的Hash处理有问题,试试在blockfile前加:
真是太意外了。
Code: Select all
# NoHash
-
- Posts: 7
- Joined: Jan 17 2008, 17:00
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
添加了
# NoHash
后,暂时还没发现问题。
如果不用Hash是不是会降低过滤效率???
# NoHash
后,暂时还没发现问题。
如果不用Hash是不是会降低过滤效率???
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
nikita_win wrote:如果不用Hash是不是会降低过滤效率???
以现在的cpu速度,应该不是问题。另外,不用Hash能节省内存,不过以现在的内存容量,意义也不大。NoHash eliminates all hashing and can save memory for list that are seldom called or where speed isn't an issue.
所以,如果你将“*”写到表达式里,比如:Keep in mind leading wildcards are always slower and should be avoided if possible (particularly in web filter bounds checks).
Code: Select all
*$LST(adjs)*
-
- Posts: 7
- Joined: Jan 17 2008, 17:00
Re: 以通配符(*)开始的过滤项,如果其中含有/则过滤有问题,请看内容。
将“*”写到表达式里,Ad List中不以通配符开始,的确可以。但是真的能提高效率么?
*$LST(adjs)*
比对过程应该和在Ad List中所有规则前后添加通配符一样的吧?
*$LST(adjs)*
比对过程应该和在Ad List中所有规则前后添加通配符一样的吧?