Board logo

标题: [问题求助] 黑名单过滤的局限性? [打印本页]

作者: dwing    时间: 2008-1-28 11:50     标题: 黑名单过滤的局限性?

我在黑名单添加了
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 编辑 ]
作者: dwing    时间: 2008-1-28 12:11

本来是不喜欢用Maxthon的,但为了验证该swf广告是否是技术上无法过滤的,就下载了Maxthon最新版测试.
我在广告猎手上添加"eiv.baidu.com",结果很轻松地过滤掉那个地址的swf了.
作者: 靖哥哥    时间: 2008-1-28 12:12

http://tieba.baidu.com/f?kw=TheWorld
这里没有flash啊
作者: hannah    时间: 2008-1-28 12:26

我这里是这个flash:
http://eiv.baidu.com/hyimg/20080109/73145160344.swf
作者: 61140250    时间: 2008-1-28 12:26

一样的号对不上,这就非常离谱了,百思不得其解。是不是代码中不用后缀名也能被游览器识别出是什么类型的文件?
作者: 杂草    时间: 2008-1-28 12:49

swf应该是在http://eiv.baidu.com/other/ff.js中的cf(...)函数生成的

但是我没找到它是在哪里调用cf(...),所以我这里就没有显示swf

[ 本帖最后由 杂草 于 2008-1-28 12:51 编辑 ]
作者: dwing    时间: 2008-1-28 13:00

原帖由 杂草 于 2008-1-28 12:49 发表 http://bbs.ioage.com/cn/images/common/back.gif
swf应该是在http://eiv.baidu.com/other/ff.js中的cf(...)函数生成的

但是我没找到它是在哪里调用cf(...),所以我这里就没有显示swf


我在贴吧的页面发现如下脚本:
<script>if (typeof(cf)=="function") {cf("http://eiv.baidu.com/hyimg/20080122/98299154339.swf","760","90","http://hc.baidu.com/baidu.php?t=pv-b5HbYPj0snj0hIy-b5HfLnjcznauBmy-bIy-b5HNDrHnkPHPKfHcLwRD1nHm4wHcvnYNAwjN7P1RznDcvFMKzpyP-5H6snauWUMw85RuETMNVFh7YIA7WpjdbXWK_RyGoU7FRHykwphI_R-wuTbGNHbF2NNG7i-NwnYGNRHF2NRbki-NNnYGNHbF2NN7lih4PrRqRHg9Pp-uVHdIwXRdVRh-5wYbsHbPpp7KRUAuPfdb-nYfhIgF_5y9YIZ0-nYD-nbm-nbuLILT8Ih-1pyq8mv9GUhD8IZmhU1YkFhwY5y4cmLP8iAm1Tb6vTv4h","0");}</script>
作者: dwing    时间: 2008-1-28 13:03

我怀疑百度是根据用户IP所在地区不同显示不同的swf广告.
作者: elkay    时间: 2008-1-28 15:10

没有你所说的flash啊,所以无法测试,最好找个其他的大家都一样的页面测试一下
作者: dwing    时间: 2008-1-28 16:56

原帖由 elkay 于 2008-1-28 15:10 发表 http://bbs.ioage.com/cn/images/common/back.gif
没有你所说的flash啊,所以无法测试,最好找个其他的大家都一样的页面测试一下


我在楼顶把问题总结了,
即使我把 *.swf 加入到黑名单,任何网站的swf文件都不会被过滤,如www.sina.com

注意我的软件环境(都是当前最新版): WInXPsp2+IE7+最新补丁, Flash控件版本:9.0.115.0, TheWorld 2.1.1.7(beta).
尤其要注意我安装的是近几天刚更新的Flash控件.
Adobe Flash Player 9.0.115 ActiveX for IE
http://www.onlinedown.net/soft/14968.htm

[ 本帖最后由 dwing 于 2008-1-28 17:03 编辑 ]
作者: elkay    时间: 2008-1-28 17:43     标题: 回复 10# 的帖子

是这样的,tw的黑名单是不过滤swf文件的
作者: dwing    时间: 2008-1-28 18:29

原帖由 elkay 于 2008-1-28 17:43 发表 http://bbs.ioage.com/cn/images/common/back.gif
是这样的,tw的黑名单是不过滤swf文件的


原来是这样,看来ActiveX控件的网络传输行为在TheWorld中是不受控制的,除非先屏蔽掉该ActiveX控件.

目前的过滤方法好像只hook了IE的网络下载, 如果把TheWorld进程中所有dll的网络下载行为都hook就能解决了吧?
希望能在下一版支持.

[ 本帖最后由 dwing 于 2008-1-28 18:30 编辑 ]
作者: l6414    时间: 2008-1-28 20:49

我现在用opera,就是因为它的广告过滤太强了!
作者: Aycox    时间: 2008-1-28 20:58

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

答案是能!

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

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

有兴趣验证的朋友可以找个直接链接的Flash试试,也可上这个站http://flash.ent.tom.com/
作者: dwing    时间: 2008-1-29 13:41

原帖由 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的下载行为.
作者: 285900537    时间: 2008-1-29 14:13     标题: 回复 #14

  1. #exd#*url*#<scr([(?: |+|'|")]*?)?ipt[^>]*?关键字[^>]*?><\/scr([(?: |+|"|')]*?)?ipt>###
复制代码
如此可过滤js脚本内的script语句了。
作者: 小絮    时间: 2008-1-29 14:47

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

其实如果不从下载的时机拦截的话,总是能有复杂的脚本让页面内容匹配失效的.虽然这种情况比较少见.
作者: Betalover    时间: 2008-1-29 17:53

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


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

我上面不是说了么?swf不能用黑名单过滤不是bug,本来就没打算过滤
作者: Betalover    时间: 2008-1-30 09:30

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


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

#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就不能过滤。
抱歉写多了。
作者: gghh    时间: 2008-1-30 13:44

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




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2