前言:Adblock Plus后文都简称ABP,这是一篇ABP进阶教程!用ABP实现flashBlock和NoScript。推荐有相当基础的阅读。刚開始学习的人先看懂这里:http://adblockplus.org/zh_CN/filters


先夸夸ABP,它是最流行、语法最完好严谨的过滤软件,其他同类都以它为标准。它把网络资源按以下选项分几大类:

script —— 外部脚本,由 HTML script 标签载入

image —— 正常图片。通常由 HTML 的 img 标签所载入

stylesheet —— 外部 CSS 样式文件

object —— 由浏览器插件处理的内容。比如 Flash 或 Java

xmlhttprequest —— XMLHttpRequest 对象

object-subrequest —— 插件的请求。比方Flash

subdocument —— 内嵌的页面。通常通过 HTML 的框架方式内嵌

media —— HTML5的audio,video标签指定的多媒体资源

document —— 网页本身(仅仅适用于 例外规则 )

elemhide —— 仅仅适用于例外规则,相似于document 可是仅仅禁用页面上的隐藏规则而不是全部规则(须要ABP1.2 或更高版本号)

other —— 其他不在上面的类型的请求

这样做好分类,才干更有针对性的过滤广告!

另外还有个弹窗选项popup,如||189.cn^$popup,third-party,可阻止电信截持弹出窗体。

ABP最强大的语法还是:third-party、domain二选项和~反义符。注意~可用于域名和选项(~stylesheet非经常常使用)。

|https://$third-party,domain=greasyfork.org,仅仅用一条语句就阻止了greasyfork.org全部的第三方广告。|http://$script,domain=ty2016.com|eywedu.com|365essay.com就禁止N多站点的脚本,这条语句就实现NoScript。

third-party,domain选项组合简直就是神器!如

|http://$script,third-party,domain=dy1000.com|yatu.tv

雅图yatu.tv的广告脚本是网页内嵌,所以没办法直接过滤,并且其调用的广告平台也是经常变动的。但上一条语句以不变应万变。一条语句搞定N多站点的第三资源(可不止指定脚本)!有兴趣的可试验一下:把其他全部的规则都删除,仅仅保留上一条,雅图yatu.tv还是干干净净的。

一条语句实现flashBlock:

|http://$object,domain=~youku.com|~tudou.com|~iqiyi.com|~pps.tv|~yatu.tv|~1ting.com

用flashBlock的能够删了。。

写过滤规则感到不便。希望添加一个相似^的替代符号。如

用`指代./-_等连接符。


以下吐糟ABP,或者说对ABP的期盼!

ABP办不到的事:

1、改动DOM

2、$third-party选项对三段式域名不起效(这也算是ABP的BUG吧,从源代码上来说。这个功能非常容易实现),但有替代方式。如|http://live.ali213.net/$domain=~live.ali213.net

3、无法过滤内嵌到网页的脚本,这倒非常好理解~由于第一条

4、没有实现黑名单。如一些有危害的站点,设定网址后也不能禁止訪问,仅仅能间接用$popup选项。但也无法阻止直接从地址栏訪问。

ABP for chrome的功能缺陷,或者说不如for firefox版的地方:

1、相似语法||cnzz.不支持[BUG],仅仅能用多条匹配语句取代:

|http://cnzz.

|http://*.cnzz.*^


如要支持HTTPS协议就变四条了!

2、对object、object-subrequest二选项的支持不够,解决方法,细致设定网址。如:

|http://*.swf^$domain=youku.com

firefox:|http://$object,domain=youku.com
。但这样做的差别还是非常明显,firefox全然屏蔽播放器,chrome则显示无法载入影片。

3、[BUG]$domain设定多个域名时,若当中有三段式域名,会有失效的情况。这种情形在世界之窗6和360极速浏览器的内置ABP表现非常明显!

点赞和吐糟Adblock Plus~进阶教程的更多相关文章

  1. duilib进阶教程 -- 总结 (17)

    整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...

  2. duilib进阶教程 -- Container控件的bug (14)

    在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...

  3. Gensim进阶教程:训练word2vec与doc2vec模型

    本篇博客是Gensim的进阶教程,主要介绍用于词向量建模的word2vec模型和用于长文本向量建模的doc2vec模型在Gensim中的实现. Word2vec Word2vec并不是一个模型--它其 ...

  4. Bash脚本15分钟进阶教程

    转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...

  5. Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!

      分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloade ...

  6. Nodejs爬虫进阶教程之异步并发控制

    Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回 ...

  7. Modelbuilder进阶教程

    Modelbuilder进阶教程 By 李远祥 Modelbuilder 进阶1 自定义变量 参数是用来交互操作的,因此,参数具备非常大的灵活性,包括参数的定义和调用. 除了工具里面的参数之外,还可以 ...

  8. SpringBoot进阶教程(二十九)整合Redis 发布订阅

    SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...

  9. keil进阶教程

    前言 keil只懂得创建软件工程是远远不够的,如果要想顺心使用,应该要懂得部分配置,这样使用心情顺畅,码代码也会越发高效. 设置字号字体 编辑点击编辑菜单,会出现很多子目录,找到配置,点击进入设置页面 ...

随机推荐

  1. jQuery选择器详解及实例---《转载》

    选择器是jQuery最基础的东西,本文中列举的选择器基本上囊括了所有的jQuery选择器,也许各位通过这篇文章能够加深对jQuery选择器的理解,它们本身用法就非常简单,我更希望的是它能够提升个人编写 ...

  2. Robust Mesh Watermarking

    之前看了一篇题为"Robust Mesh Watermarking"的论文,查阅资料的时候发现了一篇与之很相似的名为"三维模型数字水印系统的设计与实现"的中文论 ...

  3. python 统计MySQL表信息

    一.场景描述 线上有一台MySQL服务器,里面有几十个数据库,每个库有N多表. 现在需要将每个表的信息,统计到excel中,格式如下: 库名 表名 表说明 建表语句 db1 users 用户表 CRE ...

  4. 【LOJ】 #2540. 「PKUWC2018」随机算法

    题解 感觉极其神奇的状压dp \(dp[i][S]\)表示答案为i,然后不可选的点集为S 我们每次往答案里加一个点,然后方案数是,设原来可以选的点数是y,新加入一个点后导致了除了新加的点之外x个点不能 ...

  5. MyEclipse个性化设置

    1.修改项目文件默认编码 Note:myEclipse默认的编码是GBK, 也就是未设置编码格式的文件都默认使用GBK进行编码, 而更糟糕的是JSP.JavaScriptt默认编码竟然是ISO-885 ...

  6. 【转】TCP建立连接三次握手和释放连接四次握手

    在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程) 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数 ...

  7. 黑马程序员_java基础笔记(07)...IO流

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...

  8. 13:在O(1)时间内删除单向链表中的一个节点

    思路:如果从首部开始依次查找,那么时间是O(n). 既然我们知道要删除的结点i,那么我们就知道它指向的下一个结点j,那么我们可以将j的内容复制到i,然后将i的指针指向j的下一个结点,这样虽然看起来我们 ...

  9. django.db.utils.OperationalError: 1045错误

    django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using pass ...

  10. 初识Spring——Spring核心容器

    一. IOC和DI基础 IOC-Inversion of Control,译为控制反转,是一种遵循依赖倒置原则的代码设计思想. 所谓依赖倒置,就是把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑 ...