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 的全部元素
!效果: 鼠标放到各种按钮上不显示菜单
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/b58c1dd6b63848a0ad116d3b03e34cec/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/822fa4720e4dc3c82c46d1c2419df16b)
## h1
! 在 www.qq.com 这个网页可以过滤标签为 h1 的内容及那个图标
2.过滤类名
##.a
含义: 类(class)选择器,匹配所有class名为a元素
示例:
## .a
或者 ##[class="a"]
!选择类名为 a 的全部元素
!效果: 屏蔽页面页面标题栏上黑色那条
复制代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/2d21b5d6b1da5df6c8a70934ea5e6374)
## .hao123-search 或者##[class="hao123-search"]
! 在 hao123.com 这个网页可以过滤整个搜索框;
其他过滤方式一样,我就不一一截图了;
3.过滤id
###a
含义: id选择器,匹配所有id为a的元素
示例:
## #header 或者##[id="header"]
!选择id名为 header 的全部元素
!效果: 屏蔽论坛页面标题栏
复制代码
4、属性选择器
属性选择器通过元素属性来选择元素
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/763dbd553a15348492c8c88c98ce0341)
.
选择器: [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.看根据匹配的规则来过滤广告
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/05ab3af920a2471ca9169a4c722911fb/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/69f0d0df01a0e7d1efd7b8c4fa8a0d4c)
请注意,最重要的一点哦,其实前面你都可以统统忽略,直接来看最后一点,哈哈
直接用谷歌浏览器去应用商店下一个Adblock Plus插件,想要过滤广告的话
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/0aa9e847aa48ad5a9508a2b9e62d6930)
然后看右上角进入到选项栏中
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/55a93000a1e34811b07fa87fda045349/clipboard.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/c912933932826a14186a87a5499859ac)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201508/27/b78bacc7b82793aaecd39efd2ba44a95)
就可以看到过滤所用的规则,
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 的全部元素
!效果: 鼠标放到各种按钮上不显示菜单
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/b58c1dd6b63848a0ad116d3b03e34cec/clipboard.png)
## 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.看根据匹配的规则来过滤广告
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/05ab3af920a2471ca9169a4c722911fb/clipboard.png)
请注意,最重要的一点哦,其实前面你都可以统统忽略,直接来看最后一点,哈哈
直接用谷歌浏览器去应用商店下一个Adblock Plus插件,想要过滤广告的话
然后看右上角进入到选项栏中
![](http://blog.csdn.net/qqlwx/article/details/file:/D:/%E5%90%84%E7%A7%8D%E7%BC%93%E5%AD%98/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E7%BC%93%E5%AD%98/qqD10D927FB5776662877220166E70D7D1/55a93000a1e34811b07fa87fda045349/clipboard.png)
就可以看到过滤所用的规则,
相关文章推荐
- HDU1102 - Constructing Roads 用优先队列优化Prim最小生成树
- git基础命令
- jQueryMobile的组件——可展开项(collapsible)
- 树莓派开机反馈
- 随机生成不同长度的字符串
- 主板牌子
- 大兵
- css就近原则
- linux系统——hosts文件修改
- Qt中rotate和trabslate的使用
- Java汉字验证码
- C时间函数
- JavaVisualVM监控远端JAVA程序
- JavaScript中的Function函数
- Python数据库ORM SQLAlchemy 0.7学习笔记(3) 会话
- spring transaction 注解方法报错Can not set field to proxy
- 虚拟机ubuntu14配置NFS服务器 主机win7挂载 局域网内主机挂载
- 实现Textbox+listBoxControl拼音检索 C#
- LAMP搭建
- linux系统——fread()与read()函数族区别