愛伊米

為什麼 uBlock Origin 在 Firefox 上執行效果最好?

出品|開源中國

文|局長

uBlock Origin 作者 Raymond Hill解釋了為什麼他開發的廣告遮蔽擴充套件外掛(以下簡稱 uBO)在 Firefox 上的執行效果最好,主要原因包括支援使用 CNAME 記錄、獨家支援

webRequest.filterResponseData()

API、可靠地阻止預取,以及使用 WebAssembly 作為核心的過濾程式碼路徑等。

為什麼 uBlock Origin 在 Firefox 上執行效果最好?

支援使用 CNAME 記錄

Firefox 支援曝光利用 CNAME 記錄 (CNAME record) 偽裝成第一方的第三方服務,這樣做的效果是使 Firefox 上的 uBO 相對於其他其他同類瀏覽器而言,可最有效地阻止第三方跟蹤器。

為什麼 uBlock Origin 在 Firefox 上執行效果最好?

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 總是低效啟動並影響過濾列表的載入。