您的位置:首页 > 其它

AdBlock 插件/傲游浏览器 ABP 广告过滤规则是如何边编写的

2015-08-27 14:55 495 查看
参考资料:http://bbs.maxthon.cn/thread-369613-1-1.html
http://www.w3school.com.cn/css/index.asp
http://www.w3school.com.cn/html/index.asp(绝世的好网站,值得学习)
别人写的好深奥,非专业人士根本没有看下去的欲望,不过确实写的不错,我给简化了一下,挑选实用的

语法:

用户输入的规则文本格式

1. 一般匹配规则:

按字符匹配, 忽略大小写, 可使用通配符 * (任意数目的任意字符) 和 ? (1个任意字符).

范例:

无通配符: http://test.test.com/ads.js
有通配符: *.test.com/ads?/*

2. 正则匹配规则:

符合 PCRE 格式的正则表达式. 忽略大小写. 格式符合 js 的 inline regexp 格式: /expression/

范例:

/ads|ad\/.*?\.swf/

/180x(90|87|48).*?(jpg|gif|png|swf)/

3. 白名单规则:

白名单规则通过在前述的一般规则前面添加 @@| 表示.忽略大小写, 可以使用 * 和 ?通配符.

范例:

@@|http://test.test.com/ads/logo.jpg

@@|http://test.test.com/add.*

4. 注释:

由 ! 号开头的行都视为注释文本, 不作为规则处理.

范例:

! The following is an example of RegExp rule

! /ads|ad\/.*?\.swf/

处理顺序:白名单始终优先, 黑名单按顺序来

1.过滤标签;
##a

含义: 标签选择器,匹配所有标签为a的元素

(常用标签: html、title、head、body、div、table、tr、td、li、form、img、script、a、p、br、h1、h2、h3、h4、h5、h6...)

示例:

## ul

!说明:选择标签为 ul 的全部元素

!效果: 鼠标放到各种按钮上不显示菜单





## h1

! 在 www.qq.com 这个网页可以过滤标签为 h1 的内容及那个图标

2.过滤类名
##.a

含义: 类(class)选择器,匹配所有class名为a元素

示例:

## .a

或者 ##[class="a"]

!选择类名为 a 的全部元素

!效果: 屏蔽页面页面标题栏上黑色那条

复制代码



## .hao123-search 或者##[class="hao123-search"]

! 在 hao123.com 这个网页可以过滤整个搜索框;

其他过滤方式一样,我就不一一截图了;

3.过滤id
###a

含义: id选择器,匹配所有id为a的元素

示例:

## #header 或者##[id="header"]

!选择id名为 header 的全部元素

!效果: 屏蔽论坛页面标题栏

复制代码

4、属性选择器

属性选择器通过元素属性来选择元素



.

选择器: [attr]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值为任意值。

示例:

## a[id]

!说明:选择所有标签为div的a元素,这些元素具有属性id

!效果: 1#至20楼被屏蔽

复制代码
. .

选择器: [attr=val]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值等于->val<-

示例:

## a[id="post_3419917"]

!说明:选择所有标签为div的a元素,这些元素具有属性id,id的值为post_3419917!(字符串"post_3419917"两端的引号->"<-可不写,但是字符串以数字开头时必须写,以下相同)

!效果: 12#被屏蔽

复制代码
. .

选择器: [attr~=val]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值为具有多个空格分隔的值,并且其中的一个值等于->val<-

示例:

## div[class~=mainbox]

!说明:选择所有标签为div的元素,这些元素具class属性,class的值为具有多个空格分隔的值,并且其中一个值等于mainbox

!效果: 1#至20#被屏蔽

复制代码
. .

选择器: [attr^=val]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值以->val<-开头

示例:

## div[id^=post_334]

!说明:选择所有标签为div的元素,这些元素具id属性,id的值为以->post_334<-开头

!效果: 1#、2#、3#、4#被屏蔽

复制代码
. .

选择器: [attr$=val]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值以->val<-结尾

示例:

## div[id$="94966"]

!说明:选择所有标签为div的元素,这些元素具id属性,id的值为以->94966<-结尾

!效果: 6#被屏蔽

复制代码
. .

选择器: [attr*=val]

含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值字符串中包含->val<-字符串

示例:

## div[id*=4177]

!说明:选择所有标签为div的元素,这些元素具id属性,其中id的属性值字符串中包含->4177<-字符串

!效果: 8、9、10#被屏蔽

复制代码
.

5.看根据匹配的规则来过滤广告





请注意,最重要的一点哦,其实前面你都可以统统忽略,直接来看最后一点,哈哈
直接用谷歌浏览器去应用商店下一个Adblock Plus插件,想要过滤广告的话



然后看右上角进入到选项栏中







就可以看到过滤所用的规则,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: