返回列表 发帖

如何让tw2.0广告过滤做的更好

妈的刚刚用了马桶2.0测试版杀广告好强
开网页..广告全部光光..实在是强悍呢..tw一定要借鉴啊...

[ 本帖最后由 xym110 于 2006-5-11 11:29 PM 编辑 ]

忽视了一个问题。

一个站点能有几个需要过滤的项目呢?霏凡软件,就ggao,天空软件,也就1-2个。按站点分的话,工程实在太浩大,而且可以说,相当大部分对一般用户也没什么作用。我个人的全部过滤项目,也才30条左右。按站点分没有太大必要。

其次,就算按站点分,zlowly朋友说的也有用。因为用户需要删除不必要的啊。
260 字节以内
不支持自定义 Discuz! 代码

TOP

针对网站的过滤库其实也是不错的,避免了庞大的过滤库中所有规则参与匹配的弊端。
不过由于过滤库通常规模都相当大,由用户个人维护都会比较吃力,最适合的都是做成网上自动更新,众人维护的方式为好,但是这样涉及的功能就会很多了,TW还能否保持其简洁性就很难说了,而且作者能否有精力做得这么细也难说。
如果借鉴Firefox做法,将URL的处理作为接口,将过滤系统作为插件,不知道好不好。

TOP

计数器功能很多广告过滤软件都有提供,计数统计可以让用户知道哪些过滤规则比较常用,哪些比较少用,比较少用的用户可以手动移除或保留,这里真正决定哪些规则可以被移除的是用户而不是过滤系统,因为过滤系统无法知道那条很少用到的规则是否真的无用。

  1. 通配符当然有关系。我们可以使用通配符来满足某站点的过滤或者不过滤。比如*/ggao/*和http://www.crsky.com/ggao/*。

  2. 针对每一个站点不是好办法。它同样需要匹配计算。比如我们打开一个页面,需要核对列表,存在的项目都要核对。这个办法不能有效减少核对过程。

  3. 类似于病毒库也不理想。因为每个人登陆的站点都不一样,适合自己的过滤条件不一定适合别人。过滤追求的就是最小的代码最大的效果。亢长的过滤名单会导致打开网页有卡的感觉。
复制代码


*/ggao/*和http://www.crsky.com/ggao/* 这样的条件是对所有网站有效的,对于过滤系统来说http://www.crsky.com/ggao/*只是一条普通的过滤规则,不是一个网站。

针对网站的话,网站域名可以用索引排序和二分法算法来解决(跟浏览器的Cookie系统差不多),速度比你一大堆过滤规则匹配一次要快的多。

最后偶再说一遍,过滤库的概念是针对网站的,过滤时只有该网站的规则参与匹配过程。也就是说只有当你访问crsky.com时*/ggao/*和http://www.crsky.com/ggao/* 这样的规则才会参与匹配。

[ 本帖最后由 linser 于 2006-5-11 08:58 AM 编辑 ]

TOP

在这个标题下不断离题回帖的确是不妥,不过我怕如果另开新帖,一来大家对初级用户、新标题比较陌生,二来没有上下文,讨论兴致也上不来,所以我只好赖皮继续回帖,希望版主容忍一次吧。

根据计数器自动删除规则的想法,只是我最近用Firefox的Adblock的心得而已。本来新版本Adblock加上这个功能,我原来也以为是花哨功能,看过滤掉的次数有什么用呢?

但是一个多月后,我偶尔看了下过滤计数,发觉有三条规则的计数总和上万,几乎占了过滤总数的95%以上,而有3条则为0。结果我很自然就是把这三条按计数顺序排在最前,然后把那3条1个月都没生效过一次的规则删掉(当然我认出那是几个我再也不会去的网站的规则),相信换作是你,你也会这么做。可惜鉴于我的机器还算是不差(超频的AMD 64 2500+,1G内存),速度方面差别感觉不到,但是相信对于机器不好的人,这样处理就应该会有用。

所以我才有这个念头,当然规则删除的自动化是比较符合我个人处理习惯,即使可以设置阀值等参数,但也不一定能适应各种情况,所以不少人觉得不稳妥。其实手工删除、排序也不算麻烦,反正能有多少次呢。但是它们都需要基于计数器这个功能,个人认为最低限度,计数器这个功能应该需要的。

当然自动化功能对于不少新手也可以算是人性化设计,也许搭配自动更新的规则库功能,可以成为自适应的过滤系统。若是为了简洁,或者把自动化作为插件接口留待他人实现。

另外下面是更异想天开的想法,大家可以不看,非要看的不要骂我。
万一实现了计数器,而作者希望更好的、更与众不同结果:
其实简单的计数并不精确,因为规则匹配的时间其实也很重要,就是说 最近匹配的比较频繁的规则 应该比 只是以前匹配的比较频繁的规则 更为优先。那么可以参考使用统计学里的移动平均、方差的方法,利用时间间隔的倒数作为一个因素,相信能得出更为合理的指标。

[ 本帖最后由 zlowly 于 2006-5-11 03:13 AM 编辑 ]

TOP

原帖由 Aycox 于 2006-5-10 16:30 发表
而正则表达式,我大致理解的好比是一个 IF 语句的嵌套,如果第一个匹配了就不会进行以下的运算,假如常规的黑名单也是匹配后不会再进行其它的匹配,那么两者的区别可能就剩下眼见条目多少了,不知理解是否有误。


正则表达式远不是这么简单的,先说其效率问题,例如对于平常以下两条规则
*/ads.*
*/adv.*
如果URL里有adv,那么匹配时要比较的字母至少有a d s a d v6次
但是写成正则表达式只有一条规则
ad(s|v)
那么只需要比较a d s v4次。(当然括号之类的为了说明简单就不算数了)
而大家留意一下TW或者MT里的规则,许多都是十分类似的,例如都含有ad或者banner字母,只是在首尾有./之类的不同,这样几十条规则下来如果只用一条正则表达式来写成规则,就是节省了数十次的相同字母比较。若相似部分不是ad这么短而是更长,那么节省的更多。

其次是准确性问题,例如对于类似320x24.gif,228x128.jpg这样的广告,一般通配符规则是写不出来的,罗列更是不切实际的,而正则里用\d表示数字
\d{2,3}x\d{2,3}
就表示
2-3位数字x2-3位数字,十分精确,也不会不小心把1x1算进去。
再如不少门户网站会用类似
http://ad0.xxxx.com
http://ad8.xxxx.com
之类的URL
用ad?或者ad*的话明显误杀很多,
正则的话
ad\d*
*表示前面的字母(或数字)有0个或者0个以上
是不是准确很多呢?而正则表达式远不止这些规则,几乎可以匹配任何你想得到的规则。

最后就是算法的速度,由于正则表达式的功能复杂,它比一般的字符比较算法当然会慢,但是实际上很多语言本身就带有正则表达式的库甚至内置了正则表达式函数,例如Javascript,C++,Java等,它们都已经在一定程度上在甚至是在机器码级别优化过,速度并不比自己写通配符规则的算法慢多少。

[ 本帖最后由 zlowly 于 2006-5-11 02:35 AM 编辑 ]

TOP

建议:请楼主将标题修改一下,或者,请大家另开新贴继续探讨关于 TW 的广告过滤问题。
因为一方面本人认为上述几位现有的讨论形式和讨论内容十分有益,第二方面讨论的内容已经远远超出了原贴主题的范围。请原谅可能本人存有私心,个人以为在这个主题下讨论貌似稍有不妥^_^,我想靠大家联手之力打造一个专门的有关广告过滤的帖子更有意义,谢谢!

TOP

通配符当然有关系。我们可以使用通配符来满足某站点的过滤或者不过滤。比如*/ggao/*和http://www.crsky.com/ggao/*。

针对每一个站点不是好办法。它同样需要匹配计算。比如我们打开一个页面,需要核对列表,存在的项目都要核对。这个办法不能有效减少核对过程。

类似于病毒库也不理想。因为每个人登陆的站点都不一样,适合自己的过滤条件不一定适合别人。过滤追求的就是最小的代码最大的效果。亢长的过滤名单会导致打开网页有卡的感觉。

也就是说,如果我们使用名单过滤方式,面对的问题就是亢长名单导致卡的问题。最好有一种办法,可以让很多新人朋友使用亢长名单,又能在使用过程中自动或者方便的手动精简。

××××××××××××××××××××××××××××××××××××××××××××××

zlowly朋友说的计数,的确是个办法。比如几个月都没有产生作用的,我们可以去掉(自动或者手动)。再加上我说的分成2类,一类固定不动,另外一个临时类,可以删除。

这个办法是使用名单过滤,又追求过滤效率的无奈办法。

另外一个办法,是和adblock一样采取正则表达式。不过有个问题是一旦误过滤,修改起来相当麻烦。注定只能使用保守的正则表达式来过滤。其余的靠过滤列表支撑。如果这样的话,可以固定正则表达式不动,其余项目也可以用计数方式来决定是否删除。

×××××××××××××××××××××××××××××××××××××××××××××××

对普通用户最有吸引力的不是过滤机制,而是怎么方便过滤自己想过滤的……因为万能的过滤方式不存在。

我认为使用可视化的广告过滤方式(有点像Opera 9.0 Beta)是个好办法。就如同我们在IE中使用ViewPage,当鼠标移到一个页面项目上,ViewPage会用红线在页面勾出。Opera的这个功能,仅仅针对图片,如果TW能做到针对内嵌框架甚至文字,那就方便之极了。

使用这种办法(其实所有的名单过滤方式都是),几个月之后,过滤列表可能变得比较长,影响打开页面的速度。使用zlowly朋友的办法,可以缓解这个问题,起码,我们有了一个是否删除某个项目的参考。

[ 本帖最后由 亡灵法师 于 2006-5-10 10:05 PM 编辑 ]
260 字节以内
不支持自定义 Discuz! 代码

TOP

原帖由 Aycox 于 2006-5-10 01:44 PM 发表
讨论的好不热闹,黑名单记数排序法以及过滤库虽是比较好的,可总归有其缺点,这点用输入法做比喻就很能说明问题,就像广告不可能大部分时间都是规率的一样,用户的使用有时也是捉摸不定的,从用户而非技术的角度来 ...


宏观上,的确没有完美的过滤设置,但是,针对某个网站来说,过滤设置多数情况下都是固定的,即使不同用户所需要的过滤设置也都是相同的,偶所说的过滤库存放的是针对某个网站的过滤包,只针对该网站有效,而不是单独的过滤规则。这个功能很容易实现,而且能十分有效的提高过滤效率。

计数器并不能提高过滤效率,也不能用输入法的词频调整来做参考,原因很简单,用户在输入文字时,所需要的字是已知的,因此词频调整把常用的字放在前面能增加命中率,减少候选字的查询,但是广告过滤则不同,广告过滤时的规则总是未知的,不能因为规则排在后面而不去管他,始终都需要全部匹配一次。

例如设定过去3个月都没有用到的规则自动失效。而且还可以强制永久生效,满足所有要求。


这也有很多问题,如果某个网站用户不常去,或者只在需要时才会去,而用户并不知道下一次何时会去,那么很可能再去时过滤规则就失效了,用户不得不再一次添加,这种情况很普遍,如果设置为永久有效,那么针对该网站的那些设置对于其他网站来说,就是个负担了,同样降低效率。

原帖由 AY 于 2006-5-10 04:44 PM 发表
增加计数器不会对效率资源有大响,不过是增加一些 variables 而已。 Proxomitron 便一直有这功能:


跟ADBlock一样,这儿的计数器只是用来统计而已,让用户有个参考,并不是用来做词频调整的。

原帖由 亡灵法师 于 2006-5-10 06:39 PM 发表
个人意见全局过滤条件和站点私有条件没有必要。因为我们有很简单的方法,就是通配符。

我觉得zlowly兄弟说的,再加上上面我说的使用2个类别,一个是固定(不删除)类别,一个是临时(可自动删除)类别。这样可 ...


通配符跟全局过滤条件和站点私有条件有什么关系?过滤规则的网站私有化是为了提高效率,私有化的规则只针对某个网站有效,不必参与每个网站的过滤匹配过程。

TOP

个人意见全局过滤条件和站点私有条件没有必要。因为我们有很简单的方法,就是通配符。

我觉得zlowly兄弟说的,再加上上面我说的使用2个类别,一个是固定(不删除)类别,一个是临时(可自动删除)类别。这样可以排除误删除的可能。

另外还有一点,我觉得过滤内容里面或许改加一个注释的功能,有的时候名单多了,但是自己却忘了某个过滤条件是哪个站点添加的。

PS:这样的讨论很好,虽然我们的想法不一定对也不一定有用,但要是能给凤凰他们带来点灵感,那也是不错的。
260 字节以内
不支持自定义 Discuz! 代码

TOP

原帖由 tongang 于 2006-5-10 01:22 PM 发表
最简单的方法..装个admuncher....一切都清爽了...哈哈

m2 就是采用 admuncher 的方法,而且更进一步支持 regular expression 及 site specific 过滤规则。

TOP

增加计数器不会对效率资源有大响,不过是增加一些 variables 而已。 Proxomitron 便一直有这功能:
附件: 您需要登录才可以下载或查看附件。没有帐号?加入 我们

TOP

返回列表