logo科技微讯

广告拦截或内容拦截工具是如何工作的

作者:科技微讯
日期:2020-12-17
📝 笔记

这是我对多个相关笔记汇总而成的一篇文章,更全面:关于手机和电脑的广告拦截、跟踪防护

以下是本笔记的内容。

AdGuard 这篇文章解释了广告拦截是如何工作的。

需要注意的是,很多广告拦截工具已经不仅仅拦截广告,还拦截其他内容,所以它们喜欢自称内容拦截器。iOS 的 Safari 设置菜单,有一个功能就是添加内容拦截器。广告拦截的原理是:1)阻止浏览器向广告服务器请求数据;2)改变网页布局,以利用广告被拦截后空出来的空间。

拦截器的好坏,在很大程度上取决于拦截规则的更新频率,因为广告公司会不断尝试避开广告拦截。拦截器通常有反馈功能,用户可以把自己看到的广告提交上去,规则维护者不断更新列表。

拦截器开发者确定使用哪些开源的规则,但是不是所有规则都兼容所有拦截器。规则不是越多越好,可能会减慢上网速度,甚至影响正常的网页内容展示。如果规则的维护者没有长期稳定地维护这个规则,那这个规则会慢慢地出错,变得无效。

桌面浏览器插件

相对于独立的拦截应用,桌面浏览器拦截插件最大的缺点是它必须遵守浏览器的规范,每个浏览器对广告如何展示有它自己的想法和规则。

AdGuard 表示,俄罗斯最大的搜索引擎 Yandex 有它自己的浏览器,它要求开发者遵守一定的规则才能为它的浏览器开发拦截器,基于这些规则开发的拦截器不会拦截 Yandex 自己的广告。

再比如,Safari 的内容拦截 API 有 5000 条规则的限制。Chrome 和 Firefox 的浏览器插件不能阻止通过 WebRTC 协议传输的广告请求,所以有些广告可以正常显示。

PornHub 找到一种利用 websockets 绕开 AdBlocker 的方法。

移动浏览器插件

移动版 Chrome 不支持这些插件。火狐移动版支持。三星浏览器和 Yandex 浏览器的移动版都有它们的 Content Blocking API,可能会有针对性地屏蔽广告。Adblock Plus 基于火狐开发了自己的浏览器,Adblock Plus 已经没有独立的客户端了,详情看 adblocker 的历史。AdBlock 也没有独立的安卓客户端,只有一个针对三星浏览器的插件。

AdBlocker 的历史也提到 2013 年开始 Google Play 商城开始清理 AdBlocker,AdGuard for Android 上架 5 天后下架。接下来就是带有广告屏蔽功能的浏览器涌现。后来 AdGuard 应该是改了屏蔽方案才上线的吧,现在它可以过滤所有网络请求。

Edge 浏览器也有内容拦截器,是 Adblock Plus 支持的,并支持阻止跟踪。

手机应用

屏蔽手机应用中的广告,只能从网络层面入手。手机内容拦截器本身就是一个应用,所有网络流量都经过它,它识别哪些请求是广告请求,然后阻止这些请求。AdGuard 的安卓版本、iOS 的 AdGuard Pro 就是这种模式。

还有另一种模式,安卓平台有一个叫 AdAway 的广告屏蔽应用,它的原理是更改手机本地的 host 文件,主要是阻止广告服务的域名和 IP 地址进行关联,于是广告请求无法完成。Adway 的缺点可以看 AdBlocker 的历史

更改 host 其实就是基于 DNS 进行拦截,AdGuard 也有基于 DNS 的广告屏蔽模式,类似于 AdAway

AdGuard 因为 Adaway 有缺点,详情看 Adblocker 的历史

AdBlocker 的历史 这篇文章对比了 Adaway 和 AdGuard 的广告效果,如果我也要评测一个拦截应用,可以参考它提供的截图。更多截图

adClear 也可以过滤手机网络,Facebook、Twitter 广告不能屏蔽,Youtube 广告可以,它过滤网络的方法是建立一个 VPN,它的 FAQ 提到 HTTPS 过滤的作用是过滤那些 https 传输的广告,例如 Youtube 的广告。

电脑应用

在电脑使用浏览器插件有限制,前面说过了,安装独立的应用可以摆脱这些限制,因为是系统层面的过滤,所以不仅可以过滤浏览器的广告,也可以过滤其他应用的广告。

DNS 过滤

虽然手机应用、电脑应用都内置了 DNS 过滤功能,但 DNS 允许手机、路由、电脑不安装任何应用的前提下开启广告过滤,尤其是在路由器设置,所有使用这个网络的广告都会被过滤。

AdGuard 在一篇文章解释了 DNS 模式的原理。

With DNS filtering enabled, Adguard intercepts every DNS request and returns 'blocking' response if the request happens to be from ad or tracking server. it is very economical/saving. It's enough to block the domain one time and within an hour this address will no longer be requested.

AdGuard 有两种 dns 产品:已经搭建好的 AdGuard DNS 服务器,需要自己搭建的 AdGuard Home 服务器,类似 Pi-Hole

这里有一篇关于 adblocker 的十分详细的文章

donation赞赏
thumbsup0
thumbsdown0
暂无评论