Adblock Plus for firefox
关于 Adblock Plus for firefox(以下简称 ABP)的一些笔记。
安装好 ABP,将如下代码保存为 html 文件,然后在 firefox 中打开:
<p id="ad-banner">Hello World</p>
页面空白,原因是 ABP 将该 DOM 元素识别为了广告元素(谁叫你 id 带上 ad 呢)。查看该元素的样式:
#ad-banner {
-moz-binding: url("about:abp-elemhidehit?700943922222#dummy") !important;
}
这段样式定义在 elemhide.css 文中,而该 css 文件保存在本地,我本地路径如下:
C:/Users/my_user_name/AppData/Roaming/Mozilla/Firefox/Profiles/0zwen4j6.default/adblockplus/elemhide.css
ABP 工作原理似乎有些眉目了。页面载入后(一般是 dom ready 后),ABP 工作,载入 elemhide.css 这个样式文件,而该样式文件则定义了一些过滤地址,随便找一段:
@-moz-document domain("www.sina.com.cn"){
#SI_EDU_AD{-moz-binding: url(about:abp-elemhidehit?586665725907#dummy) !important;}
.mod-01{-moz-binding: url(about:abp-elemhidehit?687687809199#dummy) !important;}
.part-k-l > .mod-13{-moz-binding: url(about:abp-elemhidehit?340624987696#dummy) !important;}
.part-l{-moz-binding: url(about:abp-elemhidehit?633256127575#dummy) !important;}
}
这段代码的意思就是过滤 www.sina.com.cn 域名下的 id 为 SI_EDU_AD 的元素,class 为 mod-01 的元素,等等。elemhide.css 文件非常庞大,而 ABP 的过滤源有专人(志愿者)维护(比如 chinalist+easylist)。
为何加上这个样式,dom 元素就不可见了呢?(以下开始为个人理解)原因是 -moz-binding 属性将 DOM "私有化" 成一个 widgets(类似于 Web Components? Flash?),跟 chrome 下的 Shadow Dom 类似,url 内为一个 XML 文件,属于 XML Binding Language(XBL),关于 XBL 更多可以参考文末链接。神奇的是,-moz-binding 属性似乎是 "可持久化" 的,以最开始的代码为例,当 ABP 作用后 id 为 ad-banner 的元素被成功屏蔽,f12 后用 firebug 将 id 修改掉,元素依然不显示,由此可见其 "可持久化" 的性质。同时对于新插入的元素,该段 css 同样生效。(比如规则是屏蔽某个 id 下的第一个子元素,如果插入一个新的子元素在第一个位置,那么先后两个子元素均被屏蔽)
Read More:
- -moz-binding
- XBL
- Introduction to XBL
- XBL Bindings
- AdBlock广告阻截插件的两种屏蔽方式
- 互联网广告过滤的小历史
- [小Tip]ABP扩展对前端开发的影响
Adblock Plus for firefox的更多相关文章
- 【Chrome】手动下载和安装Adblock Plus的方法
由于强大的GFW,导致很多Google的站点没法访问,也就没法直接安装chrome的插件了,网页都打不卡, 那么几乎是必备的Adblock Plus如何下载安装呢? 1.访问官方网站: https:/ ...
- firefox火狐浏览器过滤广告插件:Adblock Plus
firefox火狐浏览器过滤广告插件:Adblock Plus
- Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]
如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...
- firefox屏蔽广告真是太好了
在ubuntu上使用firefox有些页面的广告很多,很讨厌. 突然想到是否可以把这些广告屏蔽掉.在网上搜索了一下,发现有个 adblock plus插件,安装上发现广告没有了,很干净. 开源软件就是 ...
- firefox, chrome常见插件
firefox: firebug flagfox adblock autoproxy foxyproxy firegestures httpfox httprequester colorzilla j ...
- 浏览器 - Firefox开发者附加组件
Firefox开发者版本下载地址: https://www.mozilla.org/zh-CN/firefox/channel/desktop/#developer 教程: https://devel ...
- firefox广告拦截插件
firefox广告拦截插件: Adblock Plus Adblock Edge Adblock Plus Pop-up Addon 如果不能更新,则需要修改HOST: 117.18.232.191 ...
- Firefox上Web开发工具库一览
Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...
- 详尽介绍FireFox about:config
一.什么是about:config about: config: 是Firefox的设置页面,Firefox提供了不少高级设置选项在这里以便让你可以更加详细地控制Firefox的运行方式.官方不推荐 ...
随机推荐
- C#语言基础——特殊集合
特殊集合一.stack集合栈:stack,先进后出,一个一个赋值,一个一个取值,按顺序,且没有索引属性和方法:.count 取集合内元素的个数.push() 将元素一个一个推入集合中.pop() 将元 ...
- [20130704] Intra-Query Parallel Thread Deadlocks
今天碰到了 Intra-Query Parallel Thread Deadlocks 简单的说就是并发查询把自己给锁住了. 原理: 在并发查询运行是,有一个生产者和一个消费者,生产者等待消费者产生 ...
- PowerBI 引入时间智能
简介 Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大.易于使用.其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘. 但是几乎所有的BI都需要展示如何随 ...
- java多线程学习
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 一.扩展java.lang.Thread类 package com.multithread.lea ...
- java -jar 执行 eclipse export 的 jar 包报错处理
1. 错误1:打 jar 包执行,报错,找不到 类库的 jar 包 F:\>java -jar remoteLogin.jarException in thread "AWT-Even ...
- dubbox 编译 和 测试
因为 dubbox 并没有发布到maven中央仓库仓库中,所以需要我们自己到官网下载,自己编译,install 到本地. 1. 首先安装git客户端工具 TortoiseGit, 然后使用它将 dub ...
- win7下硬盘安装ubuntu
首先还是分区,在计算机上右键--管理--磁盘管理.装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,这里请注意,Ubuntu和Windows文件系统完全不同,所以我们划好要给Ubuntu的分区 ...
- Linux磁盘管理之实现多文件系统及VFS06
待续 Linux如何支持多文件系统 不同磁盘需要不同类型的磁盘驱动程序,驱动向上提供接口,不同驱动提供的接口格式不同,在上层是块设备层,用来屏蔽下边驱动接口的差别,向上统一提供,把所有硬盘当成块设备, ...
- RAID详解[RAID0/RAID1/RAID10/RAID5]
一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘 ...
- ICTCLAS中文分词库的使用
ICTCLAS计算所中文分词(当前最好的汉语词法分析器)系统特点:准确度高(98.5%),性能优越(500KB/s分词速度),词性标注(POS tagging)且支持多种标注集,支持用户自定义词典,支 ...