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

来源:互联网 发布:金百福珠宝软件试用版 编辑:程序博客网 时间:2024/05/21 17:34
参考资料: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. 用户输入的规则文本格式
  2. 1. 一般匹配规则:
  3.     按字符匹配, 忽略大小写, 可使用通配符 * (任意数目的任意字符) 和 ? (1个任意字符).
  4.  范例:
  5.  无通配符: http://test.test.com/ads.js
  6.     有通配符: *.test.com/ads?/*

  7. 2. 正则匹配规则:
  8.    符合 PCRE 格式的正则表达式. 忽略大小写. 格式符合 js 的 inline regexp 格式:  /expression/
  9.      范例:
  10.      /ads|ad\/.*?\.swf/
  11.      /180x(90|87|48).*?(jpg|gif|png|swf)/

  12. 3. 白名单规则:
  13.  白名单规则通过在前述的一般规则前面添加 @@| 表示.忽略大小写, 可以使用 * 和 ?通配符.
  14.     范例:
  15.     @@|http://test.test.com/ads/logo.jpg
  16.     @@|http://test.test.com/add.*

  17. 4. 注释:
  18.      由 ! 号开头的行都视为注释文本, 不作为规则处理.
  19.      范例:
  20.      ! The following is an example of RegExp rule
  21.      !  /ads|ad\/.*?\.swf/
  22.   处理顺序:白名单始终优先, 黑名单按顺序来

1.过滤标签;
##a
含义: 标签选择器,匹配所有标签为a的元素 
(常用标签:  html、title、head、body、div、table、tr、td、li、form、img、script、a、p、br、h1、h2、h3、h4、h5、h6...)
示例:
  1. ## ul
  2. !说明:选择标签为 ul 的全部元素
  3. !效果:  鼠标放到各种按钮上不显示菜单


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

2.过滤类名
##.a
含义: 类(class)选择器,匹配所有class名为a元素 
示例:
  1.      ## .a
  2. 或者  ##[class="a"]
  3. !选择类名为 a 的全部元素
  4. !效果:  屏蔽页面页面标题栏上黑色那条
复制代码


  1.      ## .hao123-search   或者##[class="hao123-search"]
  2.      ! 在 hao123.com 这个网页可以过滤整个搜索框;

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

3.过滤id
###a
含义: id选择器,匹配所有id为a的元素 
示例:
  1. ## #header  或者##[id="header"]
  2. !选择id名为 header 的全部元素 
  3. !效果:  屏蔽论坛页面标题栏
复制代码

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

Attribute Selectors.JPG 
                                                                                                                 .
选择器:  [attr]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值为任意值。
示例:

  1. ## a[id]
  2. !说明:选择所有标签为div的a元素,这些元素具有属性id
  3. !效果: 1#至20楼被屏蔽
复制代码
.                                                                                                                     .
选择器:  [attr=val]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值等于->val<-
示例:

  1. ## a[id="post_3419917"]
  2. !说明:选择所有标签为div的a元素,这些元素具有属性id,id的值为post_3419917!(字符串"post_3419917"两端的引号->"<-可不写,但是字符串以数字开头时必须写,以下相同)
  3. !效果: 12#被屏蔽
复制代码
.                                                                                                                     .
选择器:  [attr~=val]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值为具有多个空格分隔的值,并且其中的一个值等于->val<- 
示例:

  1. ##  div[class~=mainbox]
  2. !说明:选择所有标签为div的元素,这些元素具class属性,class的值为具有多个空格分隔的值,并且其中一个值等于mainbox
  3. !效果: 1#至20#被屏蔽
复制代码
.                                                                                                                     .
选择器:  [attr^=val]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值以->val<-开头 
示例:

  1. ##  div[id^=post_334]
  2. !说明:选择所有标签为div的元素,这些元素具id属性,id的值为以->post_334<-开头
  3. !效果: 1#、2#、3#、4#被屏蔽
复制代码
.                                                                                                                     .
选择器: [attr$=val]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值以->val<-结尾 
示例:

  1. ##  div[id$="94966"]
  2. !说明:选择所有标签为div的元素,这些元素具id属性,id的值为以->94966<-结尾
  3. !效果: 6#被屏蔽
复制代码
.                                                                                                                     .
选择器:  [attr*=val]
含义: 属性选择器,匹配所有包含attr属性的元素,其中attr属性值字符串中包含->val<-字符串 
示例:

  1. ##  div[id*=4177]
  2. !说明:选择所有标签为div的元素,这些元素具id属性,其中id的属性值字符串中包含->4177<-字符串
  3. !效果: 8、9、10#被屏蔽
复制代码
.                                                                                                                     
5.看根据匹配的规则来过滤广告


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

就可以看到过滤所用的规则,


                                                      
0 0
原创粉丝点击