关于 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:

Adblock Plus for firefox的更多相关文章

  1. 【Chrome】手动下载和安装Adblock Plus的方法

    由于强大的GFW,导致很多Google的站点没法访问,也就没法直接安装chrome的插件了,网页都打不卡, 那么几乎是必备的Adblock Plus如何下载安装呢? 1.访问官方网站: https:/ ...

  2. firefox火狐浏览器过滤广告插件:Adblock Plus

    firefox火狐浏览器过滤广告插件:Adblock Plus

  3. Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]

    如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...

  4. firefox屏蔽广告真是太好了

    在ubuntu上使用firefox有些页面的广告很多,很讨厌. 突然想到是否可以把这些广告屏蔽掉.在网上搜索了一下,发现有个 adblock plus插件,安装上发现广告没有了,很干净. 开源软件就是 ...

  5. firefox, chrome常见插件

    firefox: firebug flagfox adblock autoproxy foxyproxy firegestures httpfox httprequester colorzilla j ...

  6. 浏览器 - Firefox开发者附加组件

    Firefox开发者版本下载地址: https://www.mozilla.org/zh-CN/firefox/channel/desktop/#developer 教程: https://devel ...

  7. firefox广告拦截插件

    firefox广告拦截插件: Adblock Plus  Adblock Edge Adblock Plus Pop-up Addon 如果不能更新,则需要修改HOST: 117.18.232.191 ...

  8. Firefox上Web开发工具库一览

    Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...

  9. 详尽介绍FireFox about:config

    一.什么是about:config about: config: 是Firefox的设置页面,Firefox提供了不少高级设置选项在这里以便让你可以更加详细地控制Firefox的运行方式.官方不推荐 ...

随机推荐

  1. check_user_createdate.sh

    在前面这篇文章Linux如何找出用户的创建时间里面讨论了查看用户创建时间的方法,后面自己尝试弄了一个脚本来检查所有用户创建时间脚本,当然更合理的应该叫检查所有用户的密码修改时间比较准确(因为这种方法有 ...

  2. 与POS机通信时的3DES(双倍长)加密解密

    项目中有个SocketServer要和移动便携POS机通信,POS开发商就告诉我们他们用的3DES(双倍长)加密,给了个Key.数据和结果,让我们实现. c#用TripleDESCryptoServi ...

  3. 关于/etc/rc.local以及/etc/init.d

    1. /etc/rc.local    这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里   --------引用----------------------  在完成 run le ...

  4. XSS Payload知识备忘

    参考资料:<白帽子讲Web安全>吴翰清 著 参见: 百度百科 http://baike.baidu.com/view/50325.htm 维基百科 http://zh.wikipedia. ...

  5. 二:Go编程语言规范-类型

    1.类型 布尔值,数值与字符串类型的实例的命名是预声明的. 数组,结构,指针,函数,接口,切片,映射和信道这些复合类型可由类型字面构造. 每个类型 T 都有一个 基本类型:若 T 为预声明类型或类型字 ...

  6. dba诊断之IO

    --查看占用系统io较大的session   SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program ...

  7. [转]pyhon之Tkinter实例化学习

    本文转自:http://www.cnblogs.com/kaituorensheng/p/3287652.html 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码附件 Tkint ...

  8. jquery实现输入框聚焦,键盘上下键选择城市

    在最近有个项目中 需要实现当文本框聚焦的时候,可以键盘上下键选择内容,按enter键的时候,把内容传到输入框中,如图所示: 实现代码如下: /** *输入框聚焦,键盘上下键选择城市 */ ;(func ...

  9. js获取上一个月、下一个月格式为yyyy-mm-dd的日期

    /** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date. ...

  10. u3d_shader_surface_shader_3

    参考http://my.oschina.net/u/138823/blog/181131 加了个凹凸贴图: 抱歉把女神苏菲做成这样. 一:Normal Texture的制作: 1.首先是Normal ...