過去一年來,我們積極與數項內容封鎖擴充功能背後的廠商共同合作,目標是改善 MV3 擴充功能平台。根據這些討論結果,許多 WebExtensions Community Group (WECG) 曾與其他瀏覽器合作,共做出了顯著的改善。
更多靜態規則集
多組篩選器規則通常會分組為一份清單。舉例來說,較籠統的清單可包含所有使用者適用的規則,較明確的清單可能會隱藏特定位置的內容,只讓部分使用者封鎖。不久前,我們允許每個擴充功能提供 50 份清單 (或「靜態規則集」) 選項,且其中 10 份可同時啟用。在社群討論中,擴充功能開發人員提供了有把握的證據,證明瞭這項技術對某些用途來說太低。我們透過這些討論瞭解 Chrome 的 API 效能後,現在最多可以同時啟用 50 個 Pod。(值得一提的是,這個數字遠高於 WECG 中要求的上限 20)。並允許總共 100 個規則集。這是 Chrome 120 版的運費設定,如果 Firefox 和 Safari 都已針對這項提案提供初期建議,即支援提高上限。
更多動態規則
大部分的規則都是「靜態」的規則,且會在每次更新時傳送。不過,為了配合更頻繁的更新和使用者定義規則,擴充功能也能以動態方式新增規則,讓開發人員不必將新版擴充功能上傳到 Chrome 線上應用程式商店。
如果擴充功能可以動態修改要求,且未檢查 Chrome 線上應用程式商店時未檢查的內容,可能會讓使用者暴露在網路詐騙或資料遭竊風險中。舉例來說,有心人士可能會濫用重新導向規則,在未經同意的情況下插入聯盟連結。
因此,我們僅允許擴充功能加入最多 5,000 項規則,這些規則鼓勵謹慎使用這項功能,並方便我們偵測濫用情形。
不過,來自 AdGuard 和 Adblock Plus 等擴充功能的開發人員自行分析及共用資料,因上限較高而能執行更多最新規則,並為自訂名單數量較多的使用者遷移至 Manifest V3。事實上,AdGuard 回報了每週變更超過 2600 項常用清單,而有五成使用自訂篩選器清單的使用者中,有四分之一的人在所有名單中總共擁有超過 5,000 項動態規則 (資料來源)。AdGuard 指出,這對將擴充功能遷移至 Manifest V3 是一大挑戰。我們聽說有其他內容攔截器提出的類似意見回饋。
我們判定部分篩選規則 (例如含有 block
或 allow
的規則) 比較安全,並比較不容易遭到濫用。這些限制也適用於大多數的廣告封鎖篩選器規則。基於這個原因,我在 Web Extensions Community Group 中草擬並分享了一份提案,用來定義了我們考量降低風險的規則,且允許最多 30,000 項規則。我們仍會保留上限,以免效能降低。
這項提案在 Web Extensions Community Group 中也實現了,所以才實現了。自 Chrome 121 版起,安全 DNR 規則的數量上限為 30,000 條,而安全 DNR 規則定義為包含 block
、allow
、allowAllRequests
或 upgradeScheme
的規則。
根據 AdGuard 共用的資料,該公司的規則 98 到 99% 應享有這個更高的上限。系統仍會支援其餘的規則,且可在現有的限制範圍內加入。
在 Chrome 中,這會以 MAX_NUMBER_OF_DYNAMIC_RULES 常數表示。所有其他動態網路要求規則的規則限制會維持在 5,000 個。
規則集大小縮減
在 Chrome 118 版中,我們根據社群的意見回饋,將 isUrlFilterCaseSensitive
欄位的預設值變更為 false
。這個欄位是用來控制依網址篩選的規則是否區分大小寫,而我們瞭解到大多數開發人員的擴充功能有不同的預設值。因此,該值必須多次設定。進行這項變更後,開發人員就能大幅縮減規則集的大小。
接下來呢?
我們致力於繼續投資 DeclarativeNetRequest API,以支援更多的使用案例,並期望能繼續與社群合作。我們尤其想感謝 WECG 的成員參與其中,這包括 AdGuard 可分享大量推動這項工作的資料,同時也是所有瀏覽器供應商,協助我們設計這個 API。
我們會持續審查現行的限制,視需要進行調整。為支援上述目標,我們計劃於近期分享在這項工作中收集到的一些資料。此外,我們正在努力加入其他功能,例如比對回應標頭的功能。這是 PDF 檢視器擴充功能常見的要求。在任何情況下,我們都會繼續說明工作內容,並定期使用Web Extensions 社群群組討論想法,針對未來計畫達成共識。