请教一个广告过滤

新手入门、经验交流

Moderator: cre

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

请教一个广告过滤

Post by 不夜侯 »

新华网首页有个广告
2010-10-31_202111.png
2010-10-31_202111.png (26.78 KiB) Viewed 5272 times
根据源码规则如下。

Code: Select all

[Patterns]
Name = "killad_www.news.cn"
Active = TRUE
URL = "$TYPE(htm)www.news.cn/(^?)"
Bounds = "<table width=$AV(980) *>$INEST(<table *>,</table>)</table>"
Limit = 600
Match = "*<iframe[^>]++id=$AV(headlogin2)*"
Replace = "$STOP()"

广告是成功除去,但网页却不能完全打开。禁止这个规则后网页又正常打开。
请教原因,谢谢!
2010-10-31_202440.png
2010-10-31_202440.png (123.37 KiB) Viewed 5272 times
User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

Re: 请教一个广告过滤

Post by cre »

广告地址是在:

Code: Select all

http://www.news.cn/ad_iframe.htm
来源地址是:

Code: Select all

http://www.news.cn/js20100613/function_01.js
该js内容:

Code: Select all

//iframe ad_iframe.htm开始 -------------------------------------------------------------------
document.getElementById("headlogin2").src="http://www.news.cn/ad_iframe.htm";
//iframe ad_iframe.htm结束 -------------------------------------------------------------------
在网页的源代码是:

Code: Select all

<iframe id="headlogin2" marginwidth="0" marginheight="0" src="#" frameborder="0" width="970" scrolling="No" height="0"></iframe>
所以单独用一条
match:

Code: Select all

<iframe\s[^>]++id=$AV(headlogin2)$INEST(<iframe,</iframe>)</iframe>
即可....
你限定table干嘛?而且这留个边是的,直接阻止www.news.cn/js20100613/function_01.js也是留个边.那个边的问题是在

Code: Select all

<td align="center" class="huibian00"
如果用

Code: Select all

<td\s[^>]++(id|class)=$AV(huibian00)$INEST(<td,</td>)</td>
就不需要用上面的了....
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 请教一个广告过滤

Post by 不夜侯 »

cre wrote: 所以单独用一条
match:

Code: Select all

<iframe\s[^>]++id=$AV(headlogin2)$INEST(<iframe,</iframe>)</iframe>
这个和table没有关系。
我试过,按iframe过滤代码,网页下半部也一样不能完全显示出来。
User avatar
cre
Moderator
Posts: 91
Joined: May 26 2009, 00:34

Re: 请教一个广告过滤

Post by cre »

我用空白规则测试,确实如你所说....
大量的document.getElementById
建议用添加display....
我用的规则很乱,特殊的相互作用下我没发现这问题....

Code: Select all

[Patterns]
Name = "Fix_none"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "(<td\s[^>]++)\1( |style[^>]+)>"
Limit = 256
Match = "*class=$AV( ($URL(http://www.news.cn/(^?))huibian00) )*"
Replace = "\1 style="display:none">"
绝对不会再有问题了.
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

Re: 请教一个广告过滤

Post by 不夜侯 »

cre wrote:我用空白规则测试,确实如你所说....
大量的document.getElementById
建议用添加display....
用display:none确实可行,谢谢!
真是一个奇怪的问题。
Post Reply