阅读:7458回复:17
关于正则表达式中白名单的问题,懂的进来帮帮小弟
我在Adblock过滤列表中添加了/(\.|\/) (tomnews|dns99|ad|banner|3721|taobao|unionsky)(s)?(\d)*(\.|\/|_)/语句,能过滤很多广告,但我在访问前程无忧时,由于他们的弹出窗口是这样的
http://ad.51job.com/phpAD/adtrace.php?ID=3537578 ,里面含有“ad”,所以被FF过滤掉了,请问怎么把类似这样的弹出窗口给列入白名单啊?小弟调了半天还是调不好 ![]() |
|
|
1楼#
发布于:2005-04-23 18:04
(tomnews|dns99|ad|banner|3721|taobao|unionsky)
后面加(^ad\.51job\.com) 如果是ff本身的屏蔽,在网页特性里加白名单 |
|
2楼#
发布于:2005-04-23 18:04
楼上的真的正确吗?
|
|
3楼#
发布于:2005-04-23 18:04
谢谢二楼的兄弟回复我,但两种方法都试过了,没有成功。我现在只好把|ad|给去掉了,以后再用别的特定过滤语句过滤各网站不同的ad吧。但我还是想学好正则表达式的白名单,但参考资料太少了,就期望Adblock能快升级加入白名单这个功能了,呵呵。
|
|
|
4楼#
发布于:2005-04-23 18:04
我怎么在IE中也看不到弹出窗口啊
|
|
5楼#
发布于:2005-04-23 18:04
呵呵,我们51job都是把企业的招聘信息当作广告的,就靠这个赚钱^^
我们的主页用Firefox是不能正常浏览的,没办法啊,用的是很早以前国外的程序,没法改了. |
|
6楼#
发布于:2005-04-23 18:04
不是啊,如果不加|ad|的话是能正常浏览的,而且我把你们的所有广告全虑掉了,不知道你们老总看了会不会气吐血,呵呵。
|
|
|
7楼#
发布于:2005-04-23 18:04
EricXP:我在Adblock过滤列表中添加了/(\.|\/) (tomnews|dns99|ad|banner|3721|taobao|unionsky)(s)?(\d)*(\.|\/|_)/语句,能过滤很多广告,但我在访问前程无忧时,由于他们的弹出窗口是这样的 楼主好像是看了我的adblock的文章吧那个filter是我写的,关于白名单, 正则表达式里面有一个negative look ahead可以实现,表达式是?! 例如关于chinaren校友录我的一条filter: /images\d*\.sohu\.com\/(?!(cs\/sms\/alumni3\/images)|(product\/alumni3))/ 指的是过滤所有含有images(可以有一个数字).sohu.com的链接, 但是保留 images.sohu.com/cs/sms/alumni3/images 以及 images.sohu.com/product/alumni3 里面的内容 关于你的问题,我去实践一下再写出解决办法 |
|
|
8楼#
发布于:2005-04-23 18:04
楼主你的表达式这样修改即可:(\.|\/)(tomnews|dns99|(ad\/(?!(51job\.com)))|banner|3721|taobao|unionsky)(s)?(\d)*(\.|\/|_)
|
|
|
9楼#
发布于:2005-04-23 18:04
kmc大哥,你的置顶的文章我都不知道拜读过多少次啦,真的学到了很多东西呐,我现在已经基本能自己编表达式,一条正则表达式过滤一个网站的广告了,太爽了。编正则表达式是一件很好玩很有趣也很有成就感的事,但我估计很少有人真正愿意去学它,都嫌麻烦,唉。
你这条|(ad\/(?!(51job\.com)))|语句管用呢,太好了,这下我可以鱼和熊掌兼得了,哈哈。其实我看到你帖子里的“?!”这个符号了,但不知道是这样用的,所以试了没成功,现在我会使用它的方法了。 另外请教大哥一个问题,过滤后缀名是用(.*\.(gif|jpg|swf))好呢还是用(.*\..*)直接呢?我怕直接用通配符*会增加机器读表达式的负担,增加CPU的工作量,请问是这样吗? |
|
|
10楼#
发布于:2005-04-23 18:04
晕,kmc大哥,用了你改的语句,前程无忧是能上了,但好像含有ad的广告又不能浏览了,比如这个广告http://www.mypda.com.cn/images/ad/adbanner_tomPDA.gif
还能被看到,而添加|ad|就不能看到而前程无忧又访问不了了,晕,呵呵。 |
|
|
11楼#
发布于:2005-04-23 18:04
EricXP:kmc大哥,你的置顶的文章我都不知道拜读过多少次啦,真的学到了很多东西呐,我现在已经基本能自己编表达式,一条正则表达式过滤一个网站的广告了,太爽了。编正则表达式是一件很好玩很有趣也很有成就感的事,但我估计很少有人真正愿意去学它,都嫌麻烦,唉。 确实,编写正则表达式是一件很有意思的事情,只有喜欢的人才会真的有耐心编, 比如说我,虽然根本还不会作网页,adBlock却很有耐心研究。 我那条表达式写错了,而且其实我对定向排除(negative look ahead)这一块也是浅尝辄止了,其实应该把"\/"放到?!的括号里面 (\.|\/)(tomnews|dns99|(ad(?!(\/51job\.com)))|banner|3721|taobao|unionsky)(s)?(\d)*(\.|\/|_) 而不是外面,因为后面有(\.|\/|_)这么一堆,包含了"\/"的,如果放到外面,则 重复了,没有那个网站会有型如ad//的形式,换言之 adblock就根本找不到,从而有关ad的就什么也不过滤了。 此外正则表达式里面的*号和普通表达式里面的*号表达的不是一个意思, 普通表达式里面,*号表示任意字符,任意个数 例: http://www.3333333.com/* 可以过滤http://www.3333333.com/a.gif http://www.3333333.com/1/1/1.jpg 等等 正则表达式里面,*号表示控制前面字符出现的次数(0次或多次) 相对来说是很有限的,因为正则表达式严谨得多,所以随意性相对很低 例: www\.3333333\.com\/a*\.gif 只能过滤 http://www.3333333.com/a.gif http://www.3333333.com/aa.gif http://www.3333333.com/aaa.gif 和 http://www.3333333.com/.gif(因为可以是0次,当然这样的url是不存在 的) 至于cpu,客观上说表达式越复杂,集成度越高,cpu需要的运算和比较 次数肯定是更多的,但这是正则表达式和正则表达式之间的比较。 要说一条/ad/跟为了实现同样功能而产生的N多条型如 http://www.1.com/ad.gif http://www.2.com/ad.gif http://www.3.com/ad.gif 来比,当然还是正则表达式更省资源。 而且现在的cpu都够强了,应该区别不会太大。 正则表达式练习器多用一用就会体会到的,我再上传一次。 |
|
|
12楼#
发布于:2005-04-23 18:04
谢谢kmc大哥的指教,我说的那个*号,是前面带了"."的,有了点的*号在正则表达式里还是代表一切的,比如abc\/.*\..*就代表abc\*.*了.嘿嘿.
|
|
|
13楼#
发布于:2005-04-23 18:04
不行,还是不成功,两个要么一起出来,要么一起过滤掉,唉.
|
|
|
14楼#
发布于:2005-04-23 18:04
我倒,第三次仔细看了一下这个51job,叹为观止啊,居然有
三处出现了ad,怪不得我老弄错……排除了前面的 ad.51job.com,后面还有一个adtrace可以造成匹配。 实践了很久也没出结果,暂时不搞了,我要上网详细查阅一下资料,弄懂了发贴详细的解释一下白名单~实在难度不低 |
|
|
上一页
下一页