关于 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. mysql多实例的配置和管理

    原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...

  2. flume架构初接触

    flume优点 1.存储数据到任何中央数据库 2.进入数据速率大于写出速率,可以起到缓存作用,保证流的平稳 3.提供文本式路由 4.支持事务 5.可靠.容错.可伸缩.可定制.可管理 put的缺点 1. ...

  3. hadoop2.2.0伪分布式搭建1--准备Linux环境

    1.0修改网关 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:19 ...

  4. Linux工具之man手册彩色页设置

    说明: 对于我们开发人员或者运维工程师来说,经常要查询某个系统命令或者C函数接口的使用方法,最好的最专业的资料就是man手册,通过一些设置可以让man手册页面显示适当颜色,方便阅读,增强美观性. 设置 ...

  5. QT学习第1天

    QT学习第一天  坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...

  6. android ListView 和 BaseAdapter 应用

    步聚: 1.建立ListView对象:--(作用:绑定Adapter呈现数据) 2.建立ListView实现的Item栏位.xml布局:--(作用:实现ListView的栏位布局) 3.建立Item. ...

  7. stm32中断无电平触发的解决办法

    这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题.其中有个自己觉得比较好玩的问题,就拿出来写写.其实这个问题也比较简单,开始我觉得没必要拿出来写,不过,想想后觉得还是写写吧,就当做 ...

  8. 2016-2017 CT S03E07: Codeforces Trainings Season 3 Episode 7 - HackerEarth Problems Compilation

    B: 思路: 暴力,每两个判断一下; C: 思路: 容斥定理,先枚举脖子下面那个点和那个不可描述的点,算出所有的方案数,这里面有多的腿当成了脖子或者胳膊的,然后就再枚举这种情况把这些减去,又减多了; ...

  9. Java写的斗地主游戏源码

    源码下载在最后 我们的前年的课设要求做一个斗地主程序,当时正在愁如何做界面,当时刚好在学习C#,于是就用C#完成了这个程序.一方面,当时我C#功底还很差(其实现在也不怎么样),很多地方用了“笨办法”, ...

  10. jmeter 和 ajax

    https://bitbucket.org/blazemeter/ajax-sampler/downloads/blazemeter-ajax-sampler-1.0-SNAPSHOT.jar 下载一 ...