世界之窗论坛's Archiver

AY 发表于 2008-1-2 16:56

回复 22# 的帖子

[b]To elkay[/b]

请问 24 楼说的规则在 TW2 怎样用正则过滤?这些规则在 MT2/proxomitron 都可以轻易实现的。

[quote]用正则表达式能匹配所有 classid 为 d27cdb6e-ae6d-11cf-96b8-444553540000,cfcdaa03-8be4-11cf-b84b-0020afbbccfa,6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,02bf25d5-8c17-4b23-bc80-d3488abddc6b 以外的 <object...</object> 么?作用是禁止 activex object 但豁免 flash/wmp/qt/rp 等。[/quote]
这个规则是禁止网页使用 flash/wmp/qt/rp 等以外的 <object>,可以去除一些 IE only 的广告及增加安全性。

[quote]另外我早前在[url=http://bbs.ioage.com/cn/viewthread.php?tid=40659&extra=&page=2]http://bbs.ioage.com/cn/viewthread.php?tid=40659&extra=&page=2[/url] 39 楼说的过滤如何实现?作用是删除所有统计 script,包括 external 及 inline 的。[/quote]
这个规则是禁止网页上统计用的 js,减小 cpu 占用及加强私隐。

[[i] 本帖最后由 AY 于 2008-1-2 17:06 编辑 [/i]]

elkay 发表于 2008-1-2 17:28

回复 25# 的帖子

正则表达式中
(?!pattern)和^
可以匹配除特定字符之外的字符

至于你说的统计,我实在看不出有什么难度?
只要有统计链接,这跟普通黑名单没有任何区别

AY 发表于 2008-1-2 18:01

[quote]原帖由 [i]elkay[/i] 于 2008-1-2 17:28 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=460161&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
正则表达式中
(?!pattern)和^
可以匹配除特定字符之外的字符[/quote]
能提供完整规则么?

[quote]至于你说的统计,我实在看不出有什么难度?
只要有统计链接,这跟普通黑名单没有任何区别 [/quote]
问题是要删除 inline 的统计 script。

elkay 发表于 2008-1-2 18:09

回复 27# 的帖子

随手找了个有flash的页面,按你的说法写了个例子
匹配除d27cdb6e-ae6d-11cf-96b8-444553540000之外的object[code]<object[^>]*?clsid:(?!d27cdb6e-ae6d-11cf-96b8-444553540000)[\s\S]*?<\/object>[/code]至于统计,你给个实际页面,然后要告诉我要实现什么效果

AY 发表于 2008-1-2 18:17

[quote]原帖由 [i]elkay[/i] 于 2008-1-2 18:09 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=460189&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
至于统计,你给个实际页面,然后要告诉我要实 ... [/quote]

再多举个例子说清楚一点。
我在任何网站都会过滤统计用的 js,因为这些 js 浪费 cpu,而且往往还要下载图档,影响页面加载时间。

[quote]在 proxomitron 我是用下面的过滤规则:
bound=$NEST(<script,</script>)     bound 确保只会匹配对应的 <script 及</script>
match=*(hitbox.com|qksrv.net|112.2o7.net|superstats.com|falkag.net|google-analytics.com|cyber-traffic.net|estat.com|surfaid.ihost.com|nedstat.nl|nedstatbasic.net|questionmarket.com|spylog.com|thecounter.com|survey-poll.comsageanalyst.net|hotlog.ru|addfreestats.com|bizrate.com|count-down.tv|counter.yadro.ru|extreme-dm.com|top.list.ru|count.e-city.tv|sageanalyst.net)*

在 maxthon 2.0 我可以用下面的过滤规则:
bound=<script.*?</script>     bound 确保只会匹配对应的 <script 及</script>
match=.*(hitbox.com|qksrv.net|112.2o7.net|superstats.com|falkag.net|google-analytics.com|cyber-traffic.net|estat.com|surfaid.ihost.com|nedstat.nl|nedstatbasic.net|questionmarket.com|spylog.com|thecounter.com|survey-poll.comsageanalyst.net|hotlog.ru|addfreestats.com|bizrate.com|count-down.tv|counter.yadro.ru|extreme-dm.com|top.list.ru|count.e-city.tv|sageanalyst.net).*

在 TW 要怎样写才能过滤这些统计 JS (需要包括 inline JS,即是 <script>...</script>,比如像 [url]http://sports.espn.go.com/nba/index[/url] 的 hitbox 统计) 而不会出现我在 20楼 及 24楼 提出的错误及失效问题? 我十分肯定没有 bound 的话是不可能做得到的。[/quote]

[url]http://bbs.ioage.com/cn/viewthread.php?tid=40659&extra=&page=2[/url] 39 楼

elkay 发表于 2008-1-2 18:24

回复 29# 的帖子

我的意思是你给个实际页面,我不知道你要过滤的跟我认为的是不是一个东西

是不是类似这种?
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>

是的话就简单了[code]<script[^<]*?google-analytics[\s\S]*?<\/script>[/code]其他的统计链接只需要维护google-analytics这部分的关键字就可以了

jmdjy 发表于 2008-1-2 18:30

[quote]原帖由 [i]285900537[/i] 于 2007-12-28 10:37 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=455935&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]



如何在theworld.ini配置文件内进行域名匹配?
如何在百千条(目前我还只有四百多条的样子)中搜寻相匹配域名的规则?
使用exd对17173写100条规则,然后再为cmfu写5条规则,那么TheWorld是进行105次域名匹配还 ... [/quote]

以前用数据库foxpro的时候,如果记录少的话,我喜欢用loca,比seek 少不了多少时间,差那几毫秒,但不用建索引呀。
方便很多。当然记录数一多,这样就不行了。

看看现在的规则有多少条记录?不过就一两千条吧,而且都是简单的记录。以现在的电脑速度,根本可以无视,可以认为是0秒时间内完成的,难道你非常计较那几百毫秒时间吗?

所以,在这个速度的争论上,是没必要的。功夫花在其它地方更好。

AY 发表于 2008-1-2 19:01

[quote]原帖由 [i]elkay[/i] 于 2008-1-2 18:24 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=460197&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
我的意思是你给个实际页面,我不知道你要过滤的跟我认为的是不是一个东西

是不是类似这种?[code]<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>[/code]是的话就简单了[/quote]
不是 external script,是 inline script,并且需要所有网站通用的:
[quote]在 TW 要怎样写才能过滤这些统计 JS (需要包括 inline JS,即是 <script>...</script>,比如像 [url=http://sports.espn.go.com/nba/index]http://sports.espn.go.com/nba/index[/url] 的 hitbox 统计) [/quote]

[[i] 本帖最后由 AY 于 2008-1-2 19:03 编辑 [/i]]

elkay 发表于 2008-1-2 19:10

回复 32# 的帖子

就如你给的网站,要所有网站通用写成通用规则就可以[code]<script[^>]*?>[^>]*?hitbox[\s\S]*?<\/script>[/code]我就不明白,这些原本正则表达式都可以做到的,mt干嘛非要自己搞一套东西出来

AY 发表于 2008-1-14 22:19

[quote]原帖由 [i]elkay[/i] 于 2008-1-2 19:10 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=460235&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
就如你给的网站,要所有网站通用写成通用规则就可以[code]<script[^>]*?>[^>]*?hitbox[\s\S]*?<\/script>[/code][/quote]
如果在 "hitbox" 之前有 ">",比如 "if(x>y)",你的规则就没有效了。我说的是能够通用的规则,并非针对个别网站的个别脚本的规则。

[quote]我就不明白,这些原本正则表达式都可以做到的,mt干嘛非要自己搞一套东西出来 [/quote]
你的规则必须要靠类似 "[^>]*?" 这样的 expression 来确保不会错误匹配红色的 tag [color=red]<script>[/color]...</script><script>...hitbox...[color=red]</script>[/color],但这样做必须要知道 script 里面的代码,只能针对已知的 script,不能通用。

希望开发组会明白。 :sad:

chenzone 发表于 2008-1-14 22:56

这么高深啊 还是用就是了 问题留给你们解决了

netwjx 发表于 2008-1-14 23:14

唉 楼主说了些现在就使用的方法 本来这个exd规则就是先域名 后内容的
只是 正则 实在不能要求它能十分快
另IE的渲染 也没有FF快  特别是出现特殊代码时IE假死 崩溃的几率比FF高很多了
最快的还是Opera(连接能力比IE和FF强不少 针对内容简单的网页速度会十分快)

elkay 发表于 2008-1-15 00:35

回复 34# 的帖子

我都说了,只有根据实际情况才能真正想到解决问题的办法,通用性的考虑不可能完美的,你说的情况确实存在,但是不会影响到任何东西,因为根据不同的情况可以修改规则来达到目的,你说的mt能实现这种效果,但是他一样不能做到百分百通用,因为这些关键字必须要有实际的例子才能加上,你不可能一开始就知道那些关键字是你要过滤的,只能是看到一个加一个,这就解决问题了,看到一个就可以根据实际情况来改变规则啊,最后大家依然是在一条线上啊

AY 发表于 2008-1-15 21:56

[quote]原帖由 [i]elkay[/i] 于 2008-1-15 00:35 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=468552&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
我都说了,只有根据实际情况才能真正想到解决问题的办法,通用性的考虑不可能完美的,你说的情况确实存在,但是不会影响到任何东西,因为根据不同的情况可以修改规则来达到目的,你说的mt能实现这种效果,但是他一样不能做到百分百通用,因为这些关键字必须要有实际的例子才能加上,你不可能一开始就知道那些关键字是你要过滤的,只能是看到一个加一个,这就解决问题了,看到一个就可以根据实际情况来改变规则啊,最后大家依然是在一条线上啊 [/quote]
你是明白 bound 的作用了,但还是不明白 bound 的重要性。有 bound 和没有 bound 是有天渊之别的,举个例:

在 mt/proxomitron,透过 bound 一条简单规则便能准确过滤任何网站上所有含 doubleclick, googlesyndication, hitbox 的 script,不用看 script 的代码,也不用对个别网站添加规则。
bound=<script.*?</script>
match=.*(doubleclick|googlesyndication|hitbox).*

在 tw 呢?在 A 站看到 doubleclick 便需要根据情况加一条规则,在 B 站看到 googlesyndication 又需要根据情况加一条规则,在 C 站看到 hitbox 又再需要根据情况加一条规则... 但在 A 站又可以有 5 条不同的 doubleclick script (像 [url=http://www.nba.com/]www.nba.com[/url]),在 B 站又可以有 doubleclick,googlesyndication,hitbox 3 条情况不同的 script (像 sports.espn.go.com)...你说需要添加多少条规则了?即使你能够在日常浏览的网站都根据情况准确过滤了,但当广告商更改 script 的源码时,即使仍然是 doubleclick, googlesyndication, hitbox,情况还是改变了,你的规则可能已经失效,或者出错。你需要找出失效/出错的规则,再根据新的情况修改...你说需要花多少精神时间?

bound 是 proxomitron 根据长期用户反馈的实际需要添加的。看看透过 bound,下面的 1 条 MT2 规则可以有多强大 - 通用 (任何网站适用),准确 (保证匹配对应的 <script...</script>,不用考虑个别情况,不怕 script 代码更改),方便 (不用查看 script 源码,添加新广告商像添加黑名单般容易)...

bound=<script.*?</script>
match=.*(.doubleclick.net|.googlesyndication.com|.superstats.com|.surfaid.ihost.com|.falkag.net|.hitbox.com|.specificpop.com|.112.2o7.net|.superstats.com|.addfreestats.com|.adserver.com|.advertising.com|.advertwizard.com|.dealtime.com|.fastclick.com|.gostats.com|.nedstat.nl|.nedstatbasic.net|.questionmarket.com|.spylog.com|.valueclick.com|.sitemeter.com|.extreme-dm.com|.survey-poll.com|.thecounter.com|.teocash.com|ShowBurstAd|adrevenue|adstream|adserver|admentor).*

不断提出 TW 这个过滤上的不足,是希望开发组能够明白 bound 的作用及重要性,然后加以能改进。记得开发组当初对这种文本过滤方式不太热衷,是用户(包括我)多番要求才加入吧。但既然加入了,希望能够做到符合一贯使用文本过滤的用户的基本需要。 :wait:

414063207 发表于 2008-1-15 22:23

虽然看不懂,但希望高手们弄出个好的过滤

elkay 发表于 2008-1-15 23:18

说了半天,最终还是回到易用性上面,你所说的只不过是相当于二次匹配而已,事实上这个bound是要牺牲一些性能的,从头说到尾只为了一点,就是易用性,我们一直承认mt的易用性比我们好,尤其是你们引以为傲的removeit,但是我个人对此持保留意见,如果一味以易用性为主,一开始就直接提供右键选择就可以了嘛,看看mt的过滤包,好好的正则被拆成一段一段,事实上这些工作都是要程序在后台完成的,实现这些效果的同时也就是把一些原本应该由人做的工作交给了程序,我只知道,程序是死的,但人是活的,一味要求一个死的程序来完成应该由人完成的工作是不现实的。

AY 发表于 2008-1-16 03:05

[quote]原帖由 [i]elkay[/i] 于 2008-1-15 23:18 发表 [url=http://bbs.ioage.com/cn/redirect.php?goto=findpost&pid=469051&ptid=48440][img]http://bbs.ioage.com/cn/images/common/back.gif[/img][/url]
说了半天,最终还是回到易用性上面,[/quote]
一方面是添加一个简单的通用规则,一劳永逸;另一方面是不断在新遇到的网站添加针对性规则,每个规则需要考虑实际情况,并且需要因应网站变化而不断修改。bound 无疑是大大提高了易用性,但 bound 同时亦避免了在添加有效规则前没法过滤的情况,及网站改变后过滤可能失效或出错的问题,换句话说 bound 同时增加了过滤规则的可靠性。

[quote]你所说的只不过是相当于二次匹配而已,事实上这个bound是要牺牲一些性能的[/quote]
1 次较复杂的 match 和 2 次较简单的 match 哪个较影响性能需要根据实际情况测试过才知道。另外不要忘记这里第 2 次 match 只在第 1 次 match 匹配到的 bound 进行,并非 match 整个源文件。
tw 规则:[code]<script[^>]*?>[^>]*?hitbox[\s\S]*?<\/script>[/code]mt 规则:[code]bound=<script.*?<script>
match=.*hitbox.*[/code]

zizhulin 发表于 2008-1-16 10:28

高手过招,很好。支持!关键是对TW的发展大有裨益啊!

wapwap 发表于 2008-1-16 11:10

说实话,TW2的黑名单过滤确实没MT2文本过滤有效,就拿163广告过滤来说吧,TW2的黑名单过滤,没过多久就会失效,MT2的文本过滤就不会,这是我在双方都不升级过滤清单的情况下,对比试验:)

xuyong 发表于 2008-1-16 11:46

支持技术上的探讨,尽管知道原理,不了解具体细节

285900537 发表于 2008-1-16 15:54

无论是MX的过滤机制,还是TW的过滤机制,都无外乎是正则表达式的匹配问题,不同的开发组对于具体的表现形式的理解的不同,使得相同或相似的技术在表层的表现方式千差万别。

而用户则不关心你的技术是如何实现的,他们注重的是自己能否正常工作、正常上网,是否让那些该死的广告去见上帝了。

而现在最根本的一个问题是,用户如何让该死的广告去见上帝?

TW和MX使用不同的方法达到相似的目的——让广告见上帝的目的。无论是变成天使去见上帝,还是被碎尸万段而升天。

TW需要用户在BBS中搜索相关过滤规则所在的帖子,copy相关的filter code,随后粘贴到黑名单内;
MX需要用户在资源站点中搜索相关过滤规则包,随后下载或直接安装相关过滤包。

不过不久的未来,通过插件,TW可以做到自动下载和升级Filter code。(目前不知道进展,但至少已经有了希望)

相信不久之后,就易用性方面而言,TW会有一个大的进步吧,相信将比MX更为便捷
(但有一个问题,TW的规则如何上传?MX是用户随意上传,TW可能是专人整理吧)

285900537 发表于 2008-1-16 16:15

但提高匹配效率、准确率,无论是Filter Code的书写者,还是程序开发者,抑或者是使用者,同样都是比较关心的。

我的确要让广告去见上帝,可要是没有百分百杀死广告,或者是出现了误杀情况,那就不好玩了。
用户很郁闷,他不知道哪条规则出了问题,于是全部删除。可无奈TW的黑名单管理过滤简陋,找了半天才找到(这是易用性方面的问题,暂时不提)。
Filter Code书写者也很郁闷,自己的规则需要修订,如果时间久远而不知道哪一条出问题的话,重来是经常的。

[b]因此,规则的准确率是非常关键的,即便让技术倒退,规则变多,也必须保证准确性,这一点毋庸置疑。[/b]

第二,是效率问题。
本帖主要是关注第一层匹配,也就是站点URL与#*website*#的匹配。虽然楼上的不少数据证明这是“瞬间”的匹配,但就易用性而言,使用域名包匹配(间LZ顶楼的两张示意图),匹配次数减少(从技术上来说这也是瞬间的),但更容易实现以后的“易用性优化”(如果按照域名进行分类管理的话,那么新的匹配方式,也就是域名包匹配将是一个更好的方式)。

现在我们说说第二层过滤,也就是#filtercode###之间的匹配问题。楼上的AY和E版等人就此话题进行了不少探讨。
我就我所使用的经验共享一下吧。
诸位可以到广告过滤专版的规则讨论子栏中寻找《有关过滤Script代码的思考》([url=http://bbs.ioage.com/cn/viewthread.php?tid=49024&extra=page%3D1]http://bbs.ioage.com/cn/viewthread.php?tid=49024&extra=page%3D1[/url])一文,我使用的比较具体的数据和方法说明了[b][color=red] “脚本代码破坏过滤法”[/color] [/b]对于过滤特定网页的效率远远大于常规的过滤手段(匹配首尾关键字的大段过滤)。

我想说的是,目前咱们的过滤机制非常好,对于大多数网站而言。但对于一些比较特殊的网站,譬如广告特多、广告代码经常换的网站(这类网站多数是门户网站)来说,则相对而言需要稍加改进。

需要纠正AY的一句话,世界上没有一劳永逸的事情,有的只是相对较长或较短的变化周期。呵呵。

我觉得效率和准确性是至关重要的,用户看你的“技术是否高明”,是看效果,而不是实现的手段。广告是否都统统去见上帝了?效率是不是比较高?准确性如何?为了达到这些标准,即便使用相对落后的技术或比较多余的手段,用户也会觉得这款软件真不赖的想法。

上海地铁早在十多年前就发明了地铁换乘一卡通,属于全球领先或相对领先的技术,但没有推广。为何,因为接触不灵敏等易用性方面的问题而没有得到实行,直到现在的“交通一卡通”的出现。换句话说,在其他的领域,或在相同的领域,易用性是和技术性放在同等高度或几乎放在同等高度上的。

AY 发表于 2008-1-16 22:03

[quote]需要纠正AY的一句话,世界上没有一劳永逸的事情,有的只是相对较长或较短的变化周期。呵呵[/quote]
这当然是相对而言。

但如果是单单过滤所有比如含 "hitbox" 的 script,包括 inline 或 external 的,mt2 的确可以一劳永逸,就像在黑名单加入 "hitbox" 过滤所有 "hitbox" 的档案 (但不能过滤 inline script),不会错得到那里的。但目前 tw2 就做不到,只能够在含有 "hitbox" 的网站找出 "hitbox" 源码针对性过滤。但 hitbox 只是浪费 cpu 的复杂统计,并非广告,在哪个网站出现无从得知,除非每个页面都检查一下源码。

xingleiwuhen 发表于 2008-1-16 22:07

飘过。。。。。。。。。。。。。。。

页: 1 [2] 3

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.