点赞和吐糟Adblock Plus~进阶教程

前言: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 —— 其他不在上面的类型的请求

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

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表现明显!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 02:44:18

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

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

Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回答才会再加载一部分,所以说如果直接发送一个问题的请求链接,取得的页面是不完整的.还有就是我们通过发送链接下载图片的时候,是一张一张来下的,如果图片数量太多的话,真的是下到你睡完觉它还在下,而且我们用nodejs写的爬虫,却竟然没有用到nodejs最牛逼的异步并发的特性,太浪费了啊. 思路 这次的的爬

duilib进阶教程 -- 响应windows原生消息和自定义消息(13)

duilib进阶教程 -- 响应windows原生消息和自定义消息(13) 一.windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例.迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变时并没有调整窗口,所以我们给播放器加上实时调整大小的功能,很明显,应该响应WM_DISPLAYCHANGE消息,而duilib自己处理windows消息的函数是在HandleMessage里,因此我们重载HandleMess

Numpy库进阶教程(二)

第一篇在这里:Numpy库进阶教程(一)求解线性方程组 求解特征值和特征向量 关于特征值和特征向量的介绍,可以点击这里 首先创建一个矩阵 In [1]: A=mat("3 -2;1 0") In [2]: A Out[2]: matrix([[ 3, -2], [ 1, 0]]) 在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应特征向量的元组. 使用eigvals函数求解特征值 In [3]: linalg.eigval

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

分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloaderencoding 大家好,相信大家用的ListView控件一定很多的,是竖向滑动的,复用convertView,我们可以加载成千上万的数据,但有时候我们会有 这个需求比如相册,我们想横向滑动,并且数据有好多,这时候ViewPager控件就派上用场了,ViewPager使用时候我们需要导入第三方包 an

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—引用传递

<饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview 1.如何编写一个 json 对象的拷贝函数 function clone(obj){ var result; if (Array.isArray(obj)) { result = []; obj.forEach((item) => { result.push(clone(item)); }); } else if (typeof obj === 'objec

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—作用域

<饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview 作用域从某种意义上来说是个难点,它需要你真真正正的了解JS的分词.词法分析,语法分析,代码生成,LHS查询,RHS查询等深层的东西. 如果不知道可以读一下<你不知道的JavaScript:上卷> let和var的区别 1.let只在声明的代码块中有效,{}中使用let声明变量,外面是访问不到的,这就是块级作用域 2.不存在变量提升问题 3.重复声明会报

shell进阶教程

背景:就自己常用的shell脚本写作风格,总结了一些知识点.也是作为交接工作的一部分文档.部分内容单独写 #!/bin/sh # shell脚本进阶教程 # 1.常用知识点:变量设置/日期设置/格式化输出/定义函数/函数传参/脚步传参/变量的嵌套和迭代 # 2.常用环境:/数据库监控/本地日志监控/批量处理/定期获取表数据/备份 # 3.常用循环:for/while # 4.常用命令:sed/cut/awk/ # 5.crontab 计划任务 # 第一部分:常用知识点 # 1.[变量设置及变量替

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—类型判断

lodash的类型判断源码 <饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview  lodash介绍:lodash是目前很流行的JS工具库,它封装了许多JS常用到的工具方法,在阅读源码时,你会发现代码冗长:官网说这是性能优化,不管你信不信,反正我信了! (1)null 类型 function isNull(value) { return value === null; } (2)number类型 function i

Android.mk (2) 函数进阶教程 - 分支、循环、子程序

https://www.jianshu.com/p/674dc7d7b4b0 函数进阶教程 - 分支.循环.子程序 按照面向过程程序设计的标准流程,我们讲完了顺序结构,就要讲分支.循环和子程序.下面我们就开始讲用于分支.循环和子程序调用功能的函数. 分支函数 要走分支,一定是要有条件要判断. 在Makefile里,最主要的判断就是看字符串能不能找到了. 通过findstring函数来进行这个判断,然后用if函数使用findstring函数的结果. 例: .PHONY : all5 bootoat