AdGuard自定义规则实战:从CSS选择器到URL拦截的精准广告屏蔽
1. 从“能用”到“好用”:为什么你需要自定义AdGuard规则
如果你正在用AdGuard,不管是桌面版、浏览器扩展还是手机App,大概率已经感受到了它开箱即用的清爽。默认订阅的规则列表,比如AdGuard Base filter、AdGuard Tracking Protection filter,已经能帮你屏蔽掉网络上绝大多数烦人的横幅广告、弹窗和跟踪器。这解决了“从无到有”的问题,让你从一个广告遍地的环境,进入一个相对干净的网络空间。
但用上一段时间后,你可能会遇到一些“漏网之鱼”。比如,某个小众视频网站的前贴片广告依然坚挺;某个技术论坛的侧边栏推荐总是刷存在感;或者,某个在线工具页面总有那么一两个碍眼的“升级专业版”按钮。这时候,你需要的就不再是一个通用的“盾牌”,而是一把可以自己打磨的“手术刀”。自定义规则,就是这把手术刀。它允许你针对特定的网站、特定的元素,进行精准的“切除”手术。
更深一层看,自定义规则的意义远不止于屏蔽一两个广告。它关乎控制权和效率。互联网环境瞬息万变,新的广告形式、新的跟踪技术层出不穷。官方规则列表的更新总有滞后性,而你自己发现的滋扰,往往能最快得到解决。此外,规则还能用于屏蔽网页上那些不必要的、影响阅读和操作的元素,比如社交媒体分享按钮、评论区加载缓慢的第三方组件、甚至是网页上某些令人分心的动态效果。通过精细化的规则管理,你实质上是在为自己定制一个更高效、更专注、更符合个人审美的浏览环境。
所以,这篇文章不是一份冷冰冰的官方文档翻译。我会从一个长期使用者的角度,带你理解AdGuard规则的工作原理,掌握从简单到进阶的规则编写方法,并分享一些在实战中积累的、能让你少走弯路的经验和“骚操作”。无论你是刚接触AdGuard的新手,还是想进一步提升过滤效率的老用户,都能在这里找到实用的东西。
2. 规则语法核心:理解AdGuard的“屏蔽语言”
在动手写规则之前,我们必须先搞懂AdGuard这门“语言”的基本语法。它主要分为两大类:基于选择器的规则和基于URL地址的规则。前者用于隐藏网页上的特定元素,后者用于拦截整个网络请求。理解它们的区别和适用场景,是高效编写规则的第一步。
2.1 元素隐藏规则:CSS选择器的实战应用
这类规则的格式非常简单:域名##元素选择器。它的作用是在指定的域名下,隐藏符合CSS选择器的网页元素。
域名:指定规则生效的网站范围。例如,example.com表示该规则仅对example.com及其子域名生效。||example.com也是一个常见的写法,它匹配example.com及其所有子域名(如www.example.com,mail.example.com)。如果你想对全网生效,可以省略域名部分,直接以##开头,但这需要非常谨慎,因为可能误杀正常内容。##:分隔符,前面是域名,后面是选择器。元素选择器:这就是核心,它决定了要隐藏哪个“东西”。AdGuard支持标准的CSS选择器。
实战解析几个最常用的选择器:
- ID选择器 (
#id): 网页中元素的唯一身份证。比如你看到某个广告<div id="ad-banner">,那么规则example.com##div#ad-banner就能精准干掉它。在开发者工具中,ID通常是最容易定位且最稳定的标识。 - 类选择器 (
.class): 元素的类别标签,一个类可以用在多个元素上。比如很多广告容器都有类似class="ad-container"的类名。规则example.com##.ad-container会隐藏所有带有这个类的元素。但要注意,类名也可能被用于非广告的正常样式,使用前最好确认。 - 属性选择器 (
[attr="value"]): 通过HTML元素的属性来定位。这在对付一些没有明显ID或类名的元素时特别有用。例如,很多跟踪脚本的<script>标签会包含src="https://tracker.com/script.js"。你可以用规则example.com##script[src*="tracker.com"]来拦截。这里的*=表示“包含”,是一个非常强大的匹配操作符。 - 组合与层级: 你可以组合使用选择器来增加精确度。比如
example.com##div.ad-wrapper > iframe表示:在example.com下,选择所有父元素是div.ad-wrapper的iframe元素。
注意:滥用元素隐藏规则可能导致网页布局错乱。因为规则只是“隐藏”(
display: none)了元素,并没有阻止浏