拦截规则的种类

  1. Blocking filters
    应用于网络级别,以决定是否应阻止请求。
  2. Content filters
    隐藏页面上的特定元素,包括使用扩展选择器(模拟)和代码段隐藏的元素
  3. Exception filters
    用于取消阻止某些请求或取消隐藏某些网站上的某些元素

如何加入自定义规则

  1. 下载并在浏览器上安装AdBlockPlus
  2. 单击Adblock Plus图标,然后单击右上角的齿轮图标。
  3. 将打开“ *Adblock Plus设置”*选项卡。
  4. 选择“ *高级”*选项卡,然后滚动到“ *您的自定义过滤表”*部分。
  5. 单击开始创建我的过滤器列表。
  6. 输入您的过滤器,然后点击保存。

AdBlockPlus 的广告过滤中实际上包括广告过滤和广告隐藏
广告过滤 是通过extensions机制提供的网络接口回调根据过滤规则判断对应的资源是否需要下载,如果此资源URL符合过滤规则则屏蔽此资源的下载,从而达到过滤的目的;
广告隐藏 是根据主页的host在网页中注入一段css样式,将某些id选择器和类选择器的样式设置为{ display: none !important; },从而将符合规则的元素在网页上不显示;当然,并不是所有的这些元素都能被隐藏。

广告过滤

该方法是阻止广告要请求的地址,一般为页面中嵌入的js广告脚本,来对广告地址进行请求。广告过滤就是阻塞该地址的加载。

基本过滤规则
  1. *通配符
过滤器:
example.com/ads/banner*
被过滤地址:
http://example.com/ads/banner123.gif
http://example.com/ads/banner4586.png
  1. @@表示例外规则符
    如果您发现过滤器阻止了不应过滤的内容,则可以考虑使用例外规则,而不是删除或匹配过滤器。直接在正常的过滤规则前加@@表示该过滤规则例外
过滤器:
adv
@@advice  #例外过滤器
例外地址:
http://example.com/advice.html
  1. 管道符|表示过滤规则终止
    Adblock Plus通常将每个过滤器视为在其开头和结尾都带有通配符*(即,ad和之间没有区别*ad*),可以通过添加管道符号|来表明终止。
过滤器:
swf|
被过滤地址:
http://example.com/swf
不被过滤地址:
http://example.com/swf/index.html
  1. 双管道符||表示域名前匹配
    您可以通过在过滤器前面放置两个管道符号来实现过滤器在域名前面的匹配
过滤器:
||example.com/banner.gif
被过滤地址:
http://example.com/banner.gif
https://example.com/banner.gif
http://www.example.com/banner.gif
不被过滤地址:
http://badexample.com/banner.gif
http://gooddomain.example/analyze?http://example.com/banner.gif
  1. 标记分隔符^表示单个分隔符的占位符
    有时,您可能需要在过滤器中接受任何分隔符。分隔符可以是任何东西,除了一个字母,一个数字或以下情况之一:_-.%。地址的末尾也可被视作一个分隔符。
过滤器:
http://example.com^
过滤地址:
http://example.com/
http://example.com:8000/
不被过滤地址:
http://example.com.ar/

分隔符实例(红色均为分隔符)
http: / / example.com : 8000 / foo.bar ? a = 12 & b = %D1%82%D0%B5%D1%81%D1%82
可过滤上述地址的过滤器:

^example.com^
^%D1%82%D0%B5%D1%81%D1%82^
^foo.bar^
  1. 感叹号!表示注释
    !开头的行会被默认为注释行,不被执行。
  2. $表示过滤器选项
    Adblock Plus允许您指定许多选项来修改过滤器的行为。这些选项应在过滤器末尾的,美元符号$后用逗号分隔。
过滤器:
/ads/*$script,match-case

在这里,/ads/*是实际的过滤器,script并且match-case是其选项。
其中:
script - 通过HTML脚本标签加载的外部脚本
match-case - 确保过滤器仅适用于大小写匹配的请求,例如过滤器*/BannerAd.gif$match-case可以过滤 http://example.com/BannerAd.gif,但不适用于 http://example.com/bannerad.gif

其他过滤器选项请见链接

高级过滤规则

元素隐藏

有些广告不能立即被阻止。这是因为它们作为文本嵌入在网页本身中。如果您查看网页的源代码,则可能会发现以下内容 Really cheap tofu, click here! 。您需要下载网页才能下载广告。下载网页后,您可以隐藏不想看的广告。
基于网页元素隐藏的方法有可以划分为两块:element hide 和 snippets
Element hiding被用来进行页面元素隐藏。
Snippet filter是在页面中运行一小片段代码去拦截更复杂的广告显示

基本拦截规则

元素过滤器的基本结构:

<domains><separator><body>

domains - 域名(多个域名用逗号,分隔), 可为空
separator - 分隔器,表示domains截至和body的开始,并由不同分割器有不同含义
body - 过滤器的body

Separator的用法
Separator Type Body content
## Element hiding(隐藏元素) CSS selector (domains may be empty)
#?# Element hiding emulation Extended CSS selector
#@# Element hiding exception(元素隐藏例外) Selector
#$# Snippet filter(代码片段过滤器) Snippet
  1. 元素隐藏基本规则
内容广告html如下:
<div class="textad"> Cheapest tofu, only here and now! </div>
<div id="sponsorad"> Really cheap tofu, click here! </div>
<textad> Only here you get the best tofu! </textad>
内容过滤器:
##.testad <!--过滤第一条-->
###sponsorad <!--过滤第二条-->
##textad <!--过滤第三条-->
  1. 限制在特定的域名里
    只想在特定某个网页上执行内容过滤器。内容过滤器:example.com##.soponsor。可以在http://example.com/http://something.example.com/上执行过滤操作,但不能在http://example.org/上执行。
    如果域名前面带有~,则该规则不适用于该域的页面。例如,内容过滤器~example.com##.sponsor适用于任何领域的页面,除了"example.com"。example.com,~foo.example.com##.sponsor规则适用于"example.com"与除域"foo.example.com"的子域。
    注意: 由于元素隐藏的实现方式,您只能将其限制为完整域名。您不能使用地址的任何其他部分,也不能domain代替domain.example,domain.test。
  2. 属性选择器
    有些广告既没有ID,也没有类别属性。可以使用其他属性来隐藏这些属性。例如,##table[width="80%"]隐藏宽度属性设置为80%的表。如果您不想指定属性的完整值,请##div[title*="adv"]隐藏所有title等于adv的div。您还可以检查开始和属性的末尾,例如##div[title^="adv"][title$="ert"]可以隐藏 title 开始为"adv"和结尾"ert"的div。还可以使用多个条件table[width="80%"][bgcolor="white"]匹配宽度属性设置为80%且bgcolor属性设置为白色的table。

参考链接:
5. ABP官方文档链接
6. 中文翻译文档链接
7. adblockplus.js简要分析链接

AdblockPlus拦截规则简单教程相关推荐

  1. 网页版bilibili用adblockPlus拦截三连等弹窗

    ** 网页版bilibili用adblockPlus拦截三连等弹窗 ** 本来想在b站投的,结果不让过是吧 首先获取adblock Plus 在adblockPlus中添加自定义过滤(若想偷懒可以直接 ...

  2. wcf简单教程(10) ajax调用,wcf简单教程(10) ajax调用

    wcf简单教程(10) ajax调用 [2021-02-11 16:23:59]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&q ...

  3. jax-ws cxf_Apache CXF – JAX-WS –简单教程

    jax-ws cxf 许多Java开发人员都认为Web Service实现的任务艰巨-好吧,没有人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了 ...

  4. Apache CXF – JAX-WS –简单教程

    许多Java开发人员认为Web Service实现的任务艰巨-没人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了解它是构建完整的企业应用程序的下 ...

  5. OpenGL ES 简单教程

    OpenGL ES 简单教程 2014-04-24 13:35 佚名 apkbus 字号:T | T 什么是OpenGL ES?OpenGL ES (为OpenGL for Embedded Syst ...

  6. 【微信小程序系列】微信小程序超简单教程,基本语法,获取用户基本数据信息,实现对云数据库的增删改查及小程序外部api的引用示例(附源码)

    [微信小程序系列]微信小程序超简单教程 小程序项目结构 静态页面的构成 HTML:结构 css:样式 js:行为 小程序 页面全部存放在pages, 而且pages目录只能存放页面 页面包括4个文件, ...

  7. 火车头定制规则php什么意思,火车头WordPress发布规则写法教程

    重要:本文最后更新于2019-11-07 08:52:24,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 火车头采集规则都收费,这篇火车头WordPress发布规则写法教程送给大家 ...

  8. adguard拦截规则存在哪里_广告拦截软件Adguard怎样配置才能更全面的发挥作用

    相信很多伙伴都对网上的各种各样的广告感到厌烦,Adguard是一款屏蔽拦截网页的软件, 可以支持市面上几乎所有的浏览器,今天小编就给大家介绍一下如何配置Adguard. 第一步:通过拦截规则开始隐私保 ...

  9. Python网络爬虫简单教程——第一部

    Python网络爬虫简单教程--第一部 感谢,如需转载请注明文章出处:https://blog.csdn.net/weixin_44609873/article/details/103384984 P ...

最新文章

  1. 2018-3-18 中国计算机之母-- 夏培肃
  2. lua学习笔记之字符串
  3. Blockchain-Based Flexible Double-Chain Architecture and Performance Optimization for Better Sustaina
  4. AAAI 2018论文解读 | 基于置信度的知识图谱表示学习框架
  5. 求两个字符串的最长公共子串
  6. 01.神经网络和深度学习 W2.神经网络基础
  7. 信安教程第二版-第25章移动应用安全需求分析与安全保护工程
  8. php 几个比较实用的函数
  9. 【http】http https搜集的好文章
  10. c语言中逗号是什么字符,C语言中的逗号操作符
  11. NOI.AC #31. MST
  12. Pytorch+MINST 全连接神经网路训练学习
  13. 用广播监听安卓设备电量状态
  14. 知乎面试官:为什么不建议在 MySQL 中使用 UTF-8?
  15. 区块链 liquity源代码分析之一 赎回奖励trove_open_liquidate
  16. 酷炫浪漫表白页面(附代码)HTML5代码类资源
  17. C/C++内存泄漏和野指针的区别
  18. 一套有趣的期权套利题目
  19. python爬取微博恶评_python爬取微博评论的实例讲解
  20. 马哥架构第4周课程作业

热门文章

  1. 软技能:代码之外的生存指南(职业篇)
  2. 搭建自己的公司业务百科网页 1(安装DokuWiki)
  3. 渗透测试流程/拿站顺序
  4. jzoj 6271. 2019.8.4【NOIP提高组A】锻造 (forging)
  5. clickhouse集群部署方案分析
  6. Microsoft Office Word已停止工作”解决方法
  7. 2020中南大学信息与通信夏令营面试
  8. C#平均值计算器具体实现
  9. 万维考试系统答案c语言,万维考试系统程序设计答案
  10. 旅游攻略(一)大理、双廊、剑川、丽江