Board logo

标题: TheWorld 2.0HTML过滤功能介绍 [打印本页]

作者: mutalisker    时间: 2007-1-9 18:38     标题: TheWorld 2.0HTML过滤功能介绍

TheWorld2.0的HTML过滤功能是基于TCP/IP协议层实现的过滤功能,比起1.x的基于IE内核接口的过滤方式,功能更强大,效率也更高,并且支持使用正则表达式.
由于是在网络通信层进行的过滤,所以只能过滤从服务器发来的数据,而有些页面从临时文件中直接读取,则不会被过滤,同理,从服务器发来的数据被过滤后的结果会被TW的IE内核保存到临时文件,这时如果关闭过滤或者使用其他浏览器,会发现过滤效果依然存在,刷新一下才会更新

过滤功能支持白名单,过滤项以@@开头即为白名单,例如: @@*ad*
过滤功能支持正则表达式过滤url,过滤项前后各加一个/,例如/\wad.*/

使用通配符方式的黑名单过滤功能
TheWorld2.0的HTML过滤功能兼容1.x的设置方式,黑名单在高级选项中可以设置,黑名单支持*号和?号的通配符匹配,在ini中的表现为
例如
[filter]
url0=*ad*
url1=*icast*
url2=@@*adm*
url3=/\wad.*/
过滤内容替换可以在ini中指定(正式版中会提供设置入口)
例如:
[options]
HTMLReplace=<span style='font-size:9pt'>Filtered Ad%s_url</span>
其中%s_url为被过滤的标签的src



下面是介绍的重点,建议不了解正则表达式使用方法的朋友无视
基于正则表达式的HTML内容过滤功能
通过对HTML内容的过滤,可以过滤掉网页上一些比较特殊的广告,也可以实现一些比较特殊的功能(比如图片的防盗链)
过滤项的添加和黑名单类似,在ini的filter节中,从ex0-ex23,上限暂定为24个,每一个过滤项可以单独指定被替换的内容,从re0-re23,详见下面的例子
[filter]
ex0=<table.*?width="25%.*?>(?:.|\n)*?http://ma.baidu.com/ma/rcv/click.php(?:.|\n)*?<\/table>
re0=<span style='font-size:9pt'>Filtered Ad</span>
ex1=(?:<br>)*<img\ src="images/common/sigline.gif(?:.|\n)*?</div>
re1=
第一个过滤的内容是baidu搜索页面右侧的广告
第二个过滤的内容是Discuz论坛帖子中的每个人的签名
过滤功能还可以实现对HTTP协议头的过滤,过滤项是在ini的filter节中,从exh0-exh23,替换内容为reh0-reh23,过滤方法和上面的例子中一样

过滤功能由于刚刚推出,所以重点暂时还在于功能的稳定性.在以后的版本,还会不断加强过滤功能,欢迎大家多提宝贵意见
作者: liutwqc    时间: 2007-1-9 18:40

已经有..好几位..网友反映.
新的版本....
一点开.就内存报错.打不开..
用不成.
..想到的方法.都试过了.........不行.
作者: tinham    时间: 2007-1-9 19:24

不是很明白,,,,,

最好有高手做了共享!!
作者: laha369    时间: 2007-1-9 19:29

期待共享啊
作者: needed    时间: 2007-1-9 19:30

进来学习ing
作者: tcxk1986    时间: 2007-1-9 19:44

看的一头的雾水
作者: 靖哥哥    时间: 2007-1-9 19:48

如何使用白名单修正?
作者: engyc    时间: 2007-1-9 19:48

不敢弄,怕出錯連好的頁面也過濾掉了
作者: remyxo    时间: 2007-1-9 20:07

提示: 作者被禁止或删除 内容自动屏蔽
作者: odrip    时间: 2007-1-9 20:11

搞个过滤规则来看咯

没有规则用得好
作者: Aycox    时间: 2007-1-9 20:13

讨厌广告可不得不学习
作者: tianyu21ty    时间: 2007-1-9 20:51

看得我头大大的,可惜还是没有看懂
作者: xym110    时间: 2007-1-9 20:53

希望广告过滤黑名单和配置ini分离...
方便设置下载网友广告过滤黑名单
作者: king_hh    时间: 2007-1-9 21:05

看不明白~~~~~
作者: 亡灵法师    时间: 2007-1-9 22:25

原帖由 xym110 于 2007-1-9 20:53 发表
希望广告过滤黑名单和配置ini分离...
方便设置下载网友广告过滤黑名单


多一个文件估计得有不少人反对。
作者: Godot    时间: 2007-1-9 22:54

问题1: TW在"re0"中替换掉的应该是"ex0"中括弧保存匹配部分吧?

问题2: 本地发出的POST或者GET请求内容是否被过滤?


//by mutalisker
re0中替换的是ex0整个匹配的部分,这个操作和vbscript的replace函数功能相同,可以参考使用
本地发出的部分暂时不支持过滤,能过滤的是接受到的数据.如果有对本地post,get数据过滤的需求,请详细说明,咱们一同改进
作者: xym110    时间: 2007-1-10 00:15

原帖由 亡灵法师 于 2007-1-9 22:25 发表


多一个文件估计得有不少人反对。

也有很多人接受啊...
黑名单共享方便很多

//by mutalisker
黑名单功能最后要做成什么样子我们也在考虑中.在我看来,黑名单功能对于大部分用户意义不大(我们一向认为需要手动维护的过滤方式不适合普通用户用),基于这个想法,不太可能在tw主程序中增加太多对黑名单功能的操作.
也许提供一个独立的黑名单管理程序更好一些.大家不妨说说看法
作者: GreenBrowser    时间: 2007-1-10 08:41

看来还得自己动手学习一下 呵
作者: 123456    时间: 2007-1-10 11:19

原帖由 xym110 于 2007-1-9 20:53 发表
希望广告过滤黑名单和配置ini分离...
方便设置下载网友广告过滤黑名单


设置一个导入黑名单功能多好的,哈哈,又户多文件。
作者: 1984213    时间: 2007-1-10 11:24

什么时候能有做好的黑名单发上来啊!
作者: Golu    时间: 2007-1-10 15:21

原帖由 123456 于 2007-1-10 11:19 发表
设置一个导入黑名单功能多好的,哈哈,又户多文件。


别忘了还得有导出黑名单功能
作者: leel    时间: 2007-1-10 16:41

我用AdMunch
作者: pukeyu    时间: 2007-1-11 03:43

哈哈 不懂
作者: guoyin    时间: 2007-1-11 12:49

我也不懂,不懂就耐心的学吧!
作者: mejy    时间: 2007-1-11 13:11

最好能提供可视化的编辑界面,虽然该ini文件并不复杂

//by mutalisker
将来会有的
作者: whackers    时间: 2007-1-11 16:50

url0=*ad*
会把一些论坛的sad.gif屏蔽掉哦
作者: zlowly    时间: 2007-1-11 17:24

疑问很大,如果要象adblock那样基于正则屏蔽链接该如何写呢?

url0这样的方式是否只支持*?通配符而不支持正则。
ex0这样的是否只是针对Html内容?如果要过滤符合某规则链接的所有类型对象例如图片、iframe、swf,岂不是要写很长?
作者: xyly    时间: 2007-1-11 17:36

顺带一句,
BETA4第一版,里面的*.ad.*会将proadist之类的字符串过滤掉。
作者: luoice    时间: 2007-1-11 18:22

在设置的编辑控件中好像不能区分正则是不是?
作者: Amelia    时间: 2007-1-11 19:20

Firefox的AdBlock用前后加/的方式区分正则表达式,Maxthon2则是有个单独选项。
TheWorld现在黑名单还不支持正则表达式,而“HTML过滤”这种方式书写规则太麻烦,也缺乏通用性——Firefox(AdBlock)和Maxthon2的正则表达式过滤规则可以通用,TheWorld就要全部推倒重来。
作者: zlowly    时间: 2007-1-11 20:29

原帖由 Amelia 于 2007-1-11 19:20 发表
Firefox的AdBlock用前后加/的方式区分正则表达式,Maxthon2则是有个单独选项。
TheWorld现在黑名单还不支持正则表达式,而“HTML过滤”这种方式书写规则太麻烦,也缺乏通用性——Firefox(AdBlock)和Maxthon2 ...


是啊,有些习惯既然大家都接受了,借鉴一下也挺好的啊。
当然HTML过滤作为一种补充也是不错的,至少这种方式过滤网页内容看来也是挺强大的。
作者: elkay    时间: 2007-1-11 23:05

原帖由 Amelia 于 2007-1-11 19:20 发表
Firefox的AdBlock用前后加/的方式区分正则表达式,Maxthon2则是有个单独选项。
TheWorld现在黑名单还不支持正则表达式,而“HTML过滤”这种方式书写规则太麻烦,也缺乏通用性——Firefox(AdBlock)和Maxthon2 ...



还是兄弟语文好,说出了我想说的,呵呵
作者: 混神    时间: 2007-1-12 01:26

确实很难,俺也不懂~
作者: sbyguli    时间: 2007-1-12 08:30

不懂,等懂的做出来用~
作者: smilefly    时间: 2007-1-13 02:23

1. TW 正则的 . 不能匹配 \n 吗?
否则每次都要用 [.\n] 实在不方便. 反正 HTML 中 \n 没什么实际意义.       //by mutalisker 这个。。。。还是标准的东西不改为妙,不希望用户用之前先要读一个很长的readme才行

2. 是否 replace 中也是使用 $1-$10 引用 ()                                         //by mutalisker 现在就是支持的

3. ex 的最大上限是多少?                                                                   //by mutalisker,1024,不够用以后再改

4. \d \w \W \s 等这些都支持吗?                                                         //by mutalisker,试一下就知道了,都支持的

5. 如你的 ex0=<table.*?width="25%.*?>(?:.|\n)*?http://ma.baidu.com/ma/rcv/click.php(?:.|\n)*?<\/table>                                //by mutalisker,我写这个完全就是个说明性质的例子,只要大家明白意思就好了。不过如果有修改建议不妨提出来让我学习一下
如果一个页面中 有 <table width="25%">......<table width="25%">.....</table>.....</table> 这样的代码, 如何做到不会匹配成:
<table width="25%">......<table width="25%">.....</table>
需要严格保证匹配的 TAG 的完整.

6. 这些 ex 都是对所有网站生效的吗? match_url 是个很必要的.                 //by mutalisker,以后会改进

7. 普通过滤与 HTML 过滤优先级如何? HTML 过滤优先级又如何?               //by mutalisker,目前普通过滤其实就是TW程序根据用户输入的通配符的黑白名单来自动生成了一个正则表达式。优先级方面,是先执行普通的,再执行ex的

smilefly 回复: 因为做了不少马桶的过滤, 对这些有些了解. 马桶中有个 Bound 参数, 可以用 $TAG(XXX) 保证匹配最内层的 <XXX.*?</XXX> 及 <XXX.*?>. 如果没有这样的限制, 过滤Table, Div什么的有时真的很容易出现误过滤. 我最希望 $TAG 再细分, 例如 $TAG1(XXX) 匹配有关闭标记的XXX元素, $TAG2(XXX)匹配无关闭标记的. 如对<div id="ad"><div></div></div>, 可以使用 $TAG1(XXX) 来匹配整个id="ad" 的 DIv 层.

//by mutalisker:,对这个$TAG1(XXX)没搞明白,这个东西用正则来写就好了,何必还需要自己另加一套规则呢?


作者: livealive    时间: 2007-1-13 11:31

原帖由 Amelia 于 2007-1-11 19:20 发表
Firefox的AdBlock用前后加/的方式区分正则表达式,Maxthon2则是有个单独选项。
TheWorld现在黑名单还不支持正则表达式,而“HTML过滤”这种方式书写规则太麻烦,也缺乏通用性——Firefox(AdBlock)和Maxthon2 ...

我也是这个意思,希望可以做成和FF2的AdBlock相同的写法。
作者: 331700374    时间: 2007-1-13 13:31

恩,和MT2的那个很相近,估计可以有一样的效果。。不过使用不大方便。。
作者: wyg1258    时间: 2007-1-15 10:38

严重期待黑名单~~~
作者: nadoo    时间: 2007-1-16 17:41

能对不同的站点制定不同的过滤规则吗? 如果对所有网站的网页都用那一套规则过滤一遍,是不是效率有点低。。。?

//by mutalisker 这个也在考虑中,要加很容易,只是在观望这个有多大的需求
作者: microcosm    时间: 2007-1-22 15:03

忘了在哪个浏览器看到的一个功能,觉得不错。
就是屏蔽非本站的图片及flash等(如:打开www.ioage.com,但是有图片是来自163.com或其它的就屏蔽掉),这样的一般多是广告,当然白名单也是要的,也有不少论坛引用别的网站图片的。
还有一点就是,建议把过滤规则的设置写简单点,要不然就是非专业人士勿用了。

[ 本帖最后由 microcosm 于 2007-1-22 15:04 编辑 ]
作者: hellopbs    时间: 2007-1-23 17:55

希望尽快能增强过滤功能!现在上网总是往外跳浮动广告和icast~好烦人~~
作者: cbs429    时间: 2007-1-27 17:27

我用2.0怎么没办法,增加黑名单啊
作者: gamemake    时间: 2007-1-28 18:59

为了方便大家使用,能不能做一个相对通用的配置文件
作者: MicroSystem    时间: 2007-1-29 13:49

ex0=<table.*?width="25%.*?>(?:.|\n)*?http://ma.baidu.com/ma/rcv/click.php(?:.|\n)*?<\/table>
re0=<span style='font-size:9pt'>Filtered Ad</span>

版主啊! 第一个过滤 好像 没有过滤全 造成 tag 不全
少过滤了
<DIV id=ScriptDiv></DIV>
</td></tr></table>

还有啊!我想过滤Google 的右侧 但是
ex1=<table cellspacing=0 cellpadding=0 width=25% align=right bgcolor=#ffffff border=0>{1}.*赞助商链接{1}.*<\/table>{1}

这么也不行啊,本人初学 正则表达式!
请教了!
作者: luoice    时间: 2007-2-1 10:26

牛,太牛了。但是学起来好像很难呀!
作者: xuyong    时间: 2007-2-8 14:47

确实难,就等现成的用
作者: fionafuna    时间: 2007-2-9 13:26     标题: 一个外行的建议

其实只要告诉我们把内容往哪里帖,或者告诉我们执行的步骤就可以了,写的那些代码,有兴趣的去研究,我是根本不想花很多时间去研究的。我到论坛来是想尽快的找到答案。
至于效果,不管是专业的,还是外行,一试就清除了。
我看着帖子的内容觉得是雾里看花,我们是外行,不懂,请版主尽量将方法简化再简化。
谢了!
作者: 蓝之水    时间: 2007-2-12 18:09

学习了一下。
作者: MicroSystem    时间: 2007-2-25 10:49

原帖由 nadoo 于 2007-1-16 17:41 发表
能对不同的站点制定不同的过滤规则吗? 如果对所有网站的网页都用那一套规则过滤一遍,是不是效率有点低。。。?

//by mutalisker 这个也在考虑中,要加很容易,只是在观望这个有多大的需求


强烈支持,考虑一下效率了!
还请高人回复一下 #45 的问题
作者: mutalisker    时间: 2007-2-28 16:53

45楼的第一个问题,百度的那个只是个例子,抛砖引玉用的。楼上的如果有更好的写法不妨发上来,我更新一下

google的过滤,我写了一个,供你参考
re0=
ex0=<table[^>]*align=right.*?>(?:.|\n)*?<\/table>
re1=
ex1=<div[^>]*id=tpa.*?>(?:.|\n)*?<\/div>
作者: hinsou    时间: 2007-3-4 12:30

请问一下谁能将黑名单列表复制出来分享啊
/
作者: mutalisker    时间: 2007-3-4 19:36

2.0板块置顶贴里有
作者: 8319095    时间: 2007-3-14 12:00

广告过滤有没有像遨游2.0那样的自己选择过滤??
作者: fenghun    时间: 2007-3-16 17:40


学习!纯粹的学习!
作者: rokun    时间: 2007-3-25 11:02

如何屏蔽第一视频阿?谢谢
作者: rokun    时间: 2007-3-25 11:10

不会用theworld的黑名单,遨游的黑名单很好用阿,加入*.vodone.*就ok了,有人会用吗?谢谢了
作者: elkay    时间: 2007-3-25 15:10     标题: 回复 #57 rokun 的帖子

thworld一样可以使用通配符,你在黑名单里加入*.vodone.*就可以了
作者: landono    时间: 2007-4-7 20:39

要学习下才能弄了。
作者: MicroSystem    时间: 2007-4-9 15:45     标题: 关于过滤的一些问题

  1. /http:\/\/pagead2\.googlesyndication\.com\/pagead\/show_ads\.js/
  2. /cm\.p4p\.cn\.yahoo\.com/
  3. /adsence\.sogou\.com/
  4. /cpro\.baidu\.com/
  5. /http:\/\/images\.sohu\.com\/cs\/jsfile\/js\/SogouUnionBid\.js/
复制代码

以上放入黑名单的的规则中可以部分过滤 向 Google 插在其他网页的一些广告
但是有些问题:
1:过滤造成JS标记不全多一个“</script>”,但不影响页面查看
2:有些时候第一次进入页面过滤没有效果,但是刷新一下就可以了,可能本人电脑问题。比如(http://www.3lian.com/gif/more/18/1801.html
3:有些广告是通过JS 再次写出就不能过滤。
IE 或者 TheWorld 是否有设定可以 禁止访问 某个网站的?这样一旦禁止 "http://pagead2.googlesyndication.com/" Google 的广告就全没有了
作者: 风起云涌    时间: 2007-4-9 20:42

:) :) :) :) :)
作者: elkay    时间: 2007-4-9 21:16     标题: 回复 #60 MicroSystem 的帖子

直接在黑名单中加入
*.googlesyndication.*
或者
/\.googlesyndication\./
就可以过滤掉所有的Google广告了

关于js文件,要注意是相对地址还是绝对地址,必须按照页面源码中的来写
作者: MicroSystem    时间: 2007-4-10 09:10

主要是JS文件没有共性各个网站的链接文件都不一样!
如果见一个写一个是不是TheWorld效率过降低?如果能实现不同的网站用不同的过滤规则就好了!

请教个问题? 既然可以过滤 HTML ,那是否也可以过滤 JS文件内部内容?

这样的话就没有问题了,还有是否禁止Theworld 访问某些链接?
作者: elkay    时间: 2007-4-10 17:46     标题: 回复 #63 MicroSystem 的帖子

页面过滤规则就是不同的网站使用不同的规则啊

页面过滤规则可以过滤js内部内容,黑名单不能

禁止访问某些链接是什么意思?直接把要禁止的链接加入黑名单是不是一样的?
作者: celleo    时间: 2007-4-11 11:34

因为对MT2功能尤其是设置过滤不是很满意,试着装了TW2。TW2功能做得很不错,功能强大,比FireFox和M2只能填通配符或正则表达式要强。但是希望TW2能再进一步,支持XPATH的过滤。TAG名的过滤尽管可以用正则来实现,其难以准确匹配该TAG的结尾标识(在前面的正则应用中相信大家很头疼那种嵌套的DIV会被误匹配),并且有个单独的过滤选项会让初学者好用得多。谢谢!

另外就正则表达式再说一下,正则过滤条件应该尽可能短,不要搞一个长长的大而全,这样会很占CPU。而且在填写表达式的时候要注意优先次序,尽可能将出现次数高的放前面以缩短匹配时间。版主在过滤表达式专贴里面说的占用CPU过高,就是因为这个引起的,最好能改改。

[ 本帖最后由 celleo 于 2007-4-11 11:57 编辑 ]
作者: celleo    时间: 2007-4-11 13:24

发现广告过滤后页面显示不正常,MT2没有这个毛病:
http://www.xcar.com.cn/index.php?sid=hhITrT
作者: gdygood    时间: 2007-4-12 10:43

没有啊
作者: kkk123    时间: 2007-4-13 07:25

http://a.tribalfusion.com/p.medi ... 4EK/137796/pop.html这个网站怎么过滤?
作者: ilysm    时间: 2007-4-16 08:08

强,期待正式版!
作者: ilysm    时间: 2007-4-27 11:22

这个规则写发好强,看样子比1。X的好用
作者: fairy013579    时间: 2007-5-8 18:11

我终于明白什么叫一头雾水了!!!
作者: gamespy    时间: 2007-5-19 10:15     标题: 回复 #1 mutalisker 的帖子

楼主也打星际吗?
作者: 乐乐可乐    时间: 2007-5-20 00:05

学习ing ~~~~~~~~
作者: iminsh    时间: 2007-5-20 15:44     标题: 网站过滤时的问题

由于google公司已经撤销了对中国用户www.google.com的直接访问支持,将其自动重定向到www.google.cn,因此无法使用网络快照功能。

在如下的过滤规则中
#exd#www.google.com#q=cache###by=alive&q=cache

是否支持直接使用IP地址而不仅仅是域名呢?如:
#exd#64.233.189.104#q=cache###by=alive&q=cache
作者: zer2ca    时间: 2007-5-26 09:57

哪位大大能帮忙把www.52tian.com的广告给过滤了啊
作者: duckZCX    时间: 2007-5-31 09:58

原帖由 zer2ca 于 2007-5-26 09:57 发表 http://bbs.ioage.com/images/common/back.gif
哪位大大能帮忙把www.52tian.com的广告给过滤了啊

- -|||杂跑到这里要询问来了,下面这个,应该没问题i

  1. #exd#*.52tian.*#<![^>]*?加载广告[^>]*?>[\s\S]*?<\/script>###<!--AD/TW2-->
  2. #exd#*.52tian.*#<div[^>]*?ad[^>]*?>[\s\S]*?<\/div>###<!--AD/TW2-->
复制代码

作者: 61140250    时间: 2007-6-7 08:35

海纳百川,有容那大。不是那么刺眼的广告就算了。
作者: 绝世好宝宝    时间: 2007-6-18 11:12

太专业,要是做的傻瓜一点就好了啊
作者: ?②oО⑦    时间: 2007-6-18 12:38

内容复杂,能说个现成就说怎么做就ok
作者: wgf4242    时间: 2007-6-18 14:35

有空附上正则表达式的学习手册饿.
作者: elkay    时间: 2007-6-18 17:08     标题: 回复 #81 wgf4242 的帖子

正则表达式的教程网络上很多的啊,搜索一下就有了。
作者: slxslxslx    时间: 2007-12-10 21:42

最最基本的文本过滤好像不起作用啊,比如crsky.com/ggao/下面的东西应该怎么写呢?
作者: kanakey    时间: 2009-2-18 09:10

提示: 作者被禁止或删除 内容自动屏蔽




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