AdblockPlus拦截规则简单教程

本文详细介绍了AdblockPlus的拦截规则,包括Blocking filters、Content filters和Exception filters。内容涵盖基本和高级过滤规则,如通配符、例外规则、管道符、双管道符、标记分隔符等。还解析了元素隐藏的原理,如element hide和snippet filter,以及基本拦截规则和Separator的用法。通过学习,读者能学会如何创建和应用自定义过滤规则,以有效拦截和隐藏广告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拦截规则的种类

  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的用法
SeparatorTypeBody content
##Element hiding(隐藏元素)CSS selector (domains may be empty)
#?#Element hiding emulationExtended 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简要分析链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值