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