uBlock Origin 作者 Raymond Hill 解释了为什么他开发的广告屏蔽扩展插件(以下简称 uBO)在 Firefox 上的运行效果最好,主要原因包括支持使用 CNAME 记录、独家支持webRequest.filterResponseData()API、可靠地阻止预取,以及使用 WebAssembly 作为核心的过滤代码路径等。
支持使用 CNAME 记录
Firefox 支持曝光利用 CNAME 记录 (CNAME record) 伪装成第一方的第三方服务,这样做的效果是使 Firefox 上的 uBO 相对于其他其他同类浏览器而言,可最有效地阻止第三方跟踪器。
HTML 过滤
仅 Firefox 支持的webRequest.filterResponseData()API 让它可以在解析 HTML 文档前过滤响应体。因此, 这允许 HTML 文档中的特定标签在被浏览器解析和执行之前删除,而这在其他浏览器中是不可能实现的。
浏览器启动时支持等待 uBO 准备就绪
Firefox 支持在 uBO 启动后发送网络请求,这也是 Firefox 独家功能。对于 Chromium 系浏览器而言,跟踪器/广告负载在 uBO 启动前可能就已进入打开的选项卡,同样的情况却不会发生在 Firefox 中,因为它支持等到 uBO 正常运行后再发送网络请求,这样就能对广告内容进行正确过滤。
预取
Firefox 能够可靠地阻止预取,而基于 Chromium 的浏览器无法这么做,因为当决定是否禁用预提取功能时,这些浏览器给予网站的优先权高于用户设置。
WebAssembly
Firefox 版本 uBO 支持使用 WebAssembly 作为核心的过滤代码路径。详情点此查看。
存储压缩
默认情况下,Firefox 版本 uBo 使用 LZ4 压缩算法将原始过滤器列表、已编译列表数据和内存快照存储到磁盘存储中。LZ4 压缩算法需要使用IndexedDB,这在基于 Chromium 浏览器的隐身模式下是有问题的——IndexedDB实例始终被重置,导致 uBO 总是低效启动并影响过滤列表的加载。
本文地址:https://www.oschina.net/news/138029/ublock-origin-works-best-on-firefox