Skip to content

uBlock Origin 在 Firefox 里表现最佳

fang5566 edited this page Apr 14, 2021 · 11 revisions

本文档解释了为何说 uBO 在 Firefox 里表现最佳。

解除隐藏 CNAME

通过使用 CNAME record 解除伪装为第一方的第三方服务器。这个功能使得 Firefox 里的 uBO 在屏蔽第三方跟踪器方面,相较于其他浏览器或广告过滤工具,最为高效。

c
暗绿/暗红色的柱状分别表示 Firefox 里 uBO 支持解除隐藏 CNAME 前后的屏蔽能力。
来源:"Characterizing CNAME Cloaking-Based Tracking on the Web",来自Asia Pacific Network Information Centre,发布于 2020 年 8 月。

HTML 过滤

HTML 过滤 的作用是在 HTML 文档的响应部分被浏览器解析 之前 就对其进行过滤。

例如它允许 HTML 文档中的特定标签(tag)在被浏览器解析和执行以前就将其移除,其他浏览器则没有可靠方式能做到。这项功能所需的 webRequest.filterResponseData() API,目前只有 Firefox 能提供。

浏览器启动

浏览器启动时,Firefox 会等待 uBO 准备好并从已打开的标签页屏蔽网络请求。

但基于 Chromium 的浏览器却并非如此。跟踪器和广告可能在 uBO 启动前就找到钻入已打开标签页的办法,而在 Firefox 里它们都被正确屏蔽了。

能够在浏览器启动前就可靠屏蔽对使用默认拒绝模式屏蔽第三方资源和 JavaScript 来说尤为重要。

预读取

预读取功能默认已被 uBO 禁用,Firefox 也能很可靠地阻止其生效,但基于 Chromium 的浏览器却做不到。

基于 Chromium的浏览器在决定是否禁止预读取功能是方面,给予网站的优先级高于用户设置。

参见关于 “禁止预读取” 的文档

WebAssembly

Firefox 版本的 uBO 利用 WebAssembly 代码作为核心过滤机制的代码路径。但基于 Chromium 的浏览器却并非如此,因为它需要在扩展的 manifest 获取额外的权限,与在 Chrome 网上商店发布本扩展引起摩擦。

更多信息请参见:https://github.com/WebAssembly/content-security-policy/issues/7#issuecomment-441259729

存储压缩

Firefox 版本的 uBO 默认使用 LZ4 格式压缩用于存储原始的过滤规则列表、已编译的列表数据和内存快照到磁盘空间。

LZ4 格式压缩要求使用 IndexedDB,但它在 Chomium 类浏览器的无痕模式下有问题,具体表现为 IndexedDB 的实例总是被重置,导致 uBO 启动效率低,过滤规则列表显示为过期(参见 #399)。要求使用 IndexedDB 实例是因为它支持保存 browser.storage.local API 所不具备的 Blob 类的数据。

Clone this wiki locally