返回列表 发帖

[问题求助] 黑名单过滤的局限性?

我在黑名单添加了
http://eiv.baidu.com/*
*eiv.baidu.com*
*.swf
*%2Eswf


我已经重启浏览器并删除IE缓存,但还是把这个文件下载并显示出来了(截包可以发现确实从服务器上下载的):
http://eiv.baidu.com/hyimg/20080122/98299154339.swf
同时下载的还有 http://eiv.baidu.com/other/ff.js
http://eiv.baidu.com/.../*.gif 却可以被过滤.

可以用这个网址测试: http://tieba.baidu.com/f?kw=TheWorld
发现只有禁用flash显示才能屏蔽,但所有的flv也被屏蔽了.


软件: WinXPsp2+最新补丁, IE7, TW2.1.1.7, Flash 9.0.115.0 (这些软件都是目前最新版)


如果是黑名单过滤功能本身已确定的局限性,能否详细说明哪些是无法过滤的?


-------------------------------------------------------------------------------------------------

目前问题已经比较清楚了:

*.swf无法用URL黑名单的方式过滤,希望下一版能改进.
不过可以用页面内容匹配的方法暂时解决:
#ex#<script>.*?http://eiv.baidu.com/.*?<\/script>###

[ 本帖最后由 dwing 于 2008-1-28 15:05 编辑 ]

你是不是弄错了???
我怎么都行 :sweat:

TOP

#14楼的链接难道就没有一个人试试吗?

所谓的直接Flash链接是直接将<object>...value=...AD.swf...</object>明码写在页面源码中的形式,并非通过脚本等方式生成。

但现今很多站点已经很难见到这种形式,要么是变形写法,要么Write,再或者是通过类,比如新浪等门户,只要禁止脚本运行,那些站点的Flash就无效了。

#14楼的网站仅仅使用黑名单*swf后,可以过滤顶部Flash横幅,但不能过滤下部Flash横幅,这也恰恰印证了这个说法,有兴趣的看看页面源码也许比我说的更直接了当。

页面规则只针对页面源码,不管广告源码怎么写,规则需要直接匹配才行,而楼主的规则可以匹配脚本中Flash广告部分,但*.swf是不能直接匹配的,所以才得出那样的结论。

这与以前某个帖子讨论广告图片不能过滤的情况是一个道理,如图片源码中用相对地址src=ad.jpg,但实际地址是http://www.xyz.com/ad.jpg,写传统黑名单时就须写*ad.jpg而不是*xyz.com*,后者将无法过滤。

至于#21楼朋友的疑问,其实都是一个意思,就是说规则和黑名单都只能直接对应源码才有效,觉得不便,但这样的效率要比所有页面元素下载回来后再过滤显然要高,尽管那样时*.swf、*.jpg等不在乎源码怎么写。

所以要谈局限性个人认为也就是上述这些,并非*.jpg能过滤*.swf就不能过滤。
抱歉写多了。

TOP

原帖由 elkay 于 2008-1-29 18:56 发表 http://bbs.ioage.com/cn/images/common/back.gif
我上面不是说了么?swf不能用黑名单过滤不是bug,本来就没打算过滤


至少你应该和14楼统一下意见先,我也说了不光是flash的问题,其他广告形式都可以通过脚本动态生成的方式显示出来而不被屏蔽,现在tw的过滤方式对这种很无力,没有体现出正则规则的优势。
既来之,则安之...

TOP

我上面不是说了么?swf不能用黑名单过滤不是bug,本来就没打算过滤

TOP

原帖由 dwing 于 2008-1-29 17:13 发表
其实如果不从下载的时机拦截的话,总是能有复杂的脚本让页面内容匹配失效的.虽然这种情况比较少见.


这种情况我遇见不少了,都是通过脚本写入flash,tw很难用较少的规则有效的过滤它们,其实不光是flash,其它广告通过脚本写出来后tw也是很难用较少的规则有效的过滤它们 ,目前的tw广告过滤机制效率不高,正则的广泛匹配性很难显示出来,如果每个网站都需要去写一条正则规则去匹配那正则的意义也就基本荡然无存了,因为只针对某个网站的话用通配符也很有效并且对普通用户更简单直白。
既来之,则安之...

TOP

其实如果不从下载的时机拦截的话,总是能有复杂的脚本让页面内容匹配失效的.虽然这种情况比较少见.

TOP

用这个规则可以过滤该页面的广告:
#exd#*.baidu.*#<div[^>]*?(?:width:84%|Tads)[\s\S]*?<\/div>###<!--ad-->

TOP

回复 #14

  1. #exd#*url*#<scr([(?: |+|'|")]*?)?ipt[^>]*?关键字[^>]*?><\/scr([(?: |+|"|')]*?)?ipt>###
复制代码
如此可过滤js脚本内的script语句了。
liuyis[AT]live.com

TOP

原帖由 Aycox 于 2008-1-28 20:58 发表 http://bbs.ioage.com/cn/images/common/back.gif
黑名单不能过滤.swf??真这样就要打pp了  

答案是能!

楼主的问题需要从过滤机制说起,2.0过滤是从服务器端就开始的,即所有的黑名单和过滤规则都是针对页面源码的,这就必须要求黑名单和规则能直接匹 ...


我想根本原理是.swf通过不同的下载渠道造成有的能过滤,有的不能过滤.
直接链接当然是TheWorld去下载的,就可以控制;而内嵌播放器(ActiveX)就是有某个.ocx文件下载的,TheWorld尚不能拦截这种操作.
但我想遨游都能过滤掉write脚本写出来的flash, TheWorld也应该能找到方法实现控制任何ActiveX的下载行为.

TOP

黑名单不能过滤.swf??真这样就要打pp了  

答案是能!

楼主的问题需要从过滤机制说起,2.0过滤是从服务器端就开始的,即所有的黑名单和过滤规则都是针对页面源码的,这就必须要求黑名单和规则能直接匹配源码特征。

现今很少有直接链接的Flash,一般都是脚本甚至变形手段等来生成的,比如类似于write('<scr' + 'ipt src=或者var url=xxx,本帖的例子就像#7楼一样的代码。
很显然这样的代码黑名单是无法过滤了,而楼主一楼所示的页面规则则能匹配这段代码。正是这样楼主的疑问就得出如此结论,呵呵

有兴趣验证的朋友可以找个直接链接的Flash试试,也可上这个站http://flash.ent.tom.com/

TOP

我现在用opera,就是因为它的广告过滤太强了!

TOP

返回列表