Page 1 of 1

请教一个广告过滤

Posted: Oct 31 2010, 20:24
by 不夜侯
新华网首页有个广告
2010-10-31_202111.png
2010-10-31_202111.png (26.78 KiB) Viewed 6126 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 6126 times

Re: 请教一个广告过滤

Posted: Oct 31 2010, 23:32
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>
就不需要用上面的了....

Re: 请教一个广告过滤

Posted: Nov 01 2010, 09:14
by 不夜侯
cre wrote: 所以单独用一条
match:

Code: Select all

<iframe\s[^>]++id=$AV(headlogin2)$INEST(<iframe,</iframe>)</iframe>
这个和table没有关系。
我试过,按iframe过滤代码,网页下半部也一样不能完全显示出来。

Re: 请教一个广告过滤

Posted: Nov 01 2010, 12:31
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">"
绝对不会再有问题了.

Re: 请教一个广告过滤

Posted: Nov 05 2010, 16:27
by 不夜侯
cre wrote:我用空白规则测试,确实如你所说....
大量的document.getElementById
建议用添加display....
用display:none确实可行,谢谢!
真是一个奇怪的问题。