# 文章推荐：AdGuard 谈广告拦截的工作原理

> 本文开放前 70% 正文，剩余内容会员可见。

原文：https://utgd.net/article/20531

AdGuard 是一款广告拦截和隐私保护软件，提供了跨平台的客户端、浏览器插件等不同形式的软件。

在它们的博文和知识库中，有几篇介绍广告拦截的工作原理的文章，很值得一读：

- 广告屏蔽是如何运作的：魔法背后的力量

- 广告屏蔽是如何运作的 \| AdGuard 知识库

- DNS 过滤 \| AdGuard DNS 知识库 （DNS 过滤是另一种思路）

这几篇文章不仅仅介绍了 AdGuard 本身的策略，而是“大多数广告拦截插件都采用了类似的方案”实现的。也就是说，了解了这个，可以帮你在广告拦截其之间更好地做出选择。

这篇文章主要讲讲《广告屏蔽是如何运作的：魔法背后的力量 》这篇的大致内容，包括一些个人理解，有兴趣的可以阅读原文。

### 广告拦截的本质

“广告拦截”最简单的解释是：拦截器不允许浏览器或应用程序下载内容中不想要的元素。元素包括“横幅、广告、视频、弹出窗口”，也可以包括“分析追踪器、社交网络按钮”等。

而实现这一点的方式是“拦截器”，它可以从网络层面阻止这些元素和服务器之间的通信，从而实现禁止广告加载。除了网络层面的拦截，也有一些浏览器插件的原理是“隐藏元素”，即通过搜索某些关键词并修改网页内容来实现。

### 广告拦截是人工维护的规则清单

还有一个点可能和大众认知的不太一样：目前的广告拦截并没有什么高科技手段（比如 AI、神经网络），而是靠人工劳动实现的，比如靠开发者、比如靠社区自发提供规则。

文中提到“为什么不做自动化拦截？”因为 2 点——

- 大众对“什么是广告”的认知是模糊的。比如网站宣传自己的促销活动，有人认为是广告，有人可能需要这个促销。

- 这个网站是否值得添加一条规则？比如一个网站用户量很庞大，添加一条规则对大家都有帮助。但“如何定义用户量很大”本身就是一个问题。

这可以解释为什么有些规则非常庞大，它可能适配了非常大量的网站，而绝大多数网站你一辈子都不可能访问。但为了做到广告拦截工具开箱即用，仍然有人在维护这些规则。

但规则过滤也是有代价的，比如规则冲突、失去维护、意外篡改网站、被黑客利用等。体感上最明显的一点就是——庞大的规则会让你访问网站变慢。AdGuard 有一个功能是识别有哪些过滤器规则从来没被用过，识别后就会删除这个过滤器，以便提高网页加载速度。

### 手机、桌面、浏览器？不同系统的原理不同

广告拦截器在不同系统上会有不同的限制。

浏览器插件通常是免费的，只需要每个浏览器上安装一个就可以轻松使用，但浏览器插件被迫遵守浏览器厂商制定的规则。

> Yandex even has a content blocking API \(a set of software tools for creating applications for a specific platform\) for its mobile browser\. But extensions based on the API will not block ads that are served by Yandex’s own ad inventory\. Yandex甚至为其移动浏览器提供了一个内容

---

[前往标准阅读页](https://utgd.net/article/20531?audience=web)
