內容篩選

您可以透過多種方式在 Chrome 擴充功能中實作內容和網路篩選功能。本指南將概略說明擴充功能可用的內容篩選功能,以及 Chrome 擴充功能可使用的各種篩選方式、技術和 API。

篩選網路要求

在 Chrome 擴充功能中,篩選網路要求的主要方法是使用 chrome.declarativeNetRequest API。使用「宣告式網路要求」時,開發人員可以指定宣告式規則,以封鎖或修改網路要求。宣告式網路要求規則格式取決於多數廣告攔截器使用的篩選清單語法功能。

這些規則可執行以下作業:

  • 封鎖網路要求。
  • 將網址配置升級為安全配置 (http 到 https 或 ws 至 wss)。
  • 重新導向網路要求。
  • 修改要求或回應標頭。

Chrome 支援附加擴充功能的規則,以及動態更新的規則 (例如回應遠端設定或使用者輸入內容)。

將篩選器規則與擴充功能分類

擴充功能套件中的規則稱為「靜態規則」。安裝或升級擴充功能時,系統會安裝及更新這些規則。Chrome 會限制擴充功能可宣告的靜態規則數量。

針對靜態宣告式網路要求規則,Chrome 設有 300,000 條全域共用規則,已安裝的擴充功能組合皆可共用規則。此外,每個擴充功能可以保證允許 30, 000 個靜態規則。舉例來說,如果使用者只安裝單一內容篩選擴充功能,該擴充功能最多可使用 330,000 個靜態宣告式網路要求規則。為瞭解有多少規則,大多數廣告攔截器都使用的 EasyList 篩選器清單含有約 35,000 個聯播網規則。

靜態宣告式網路要求規則可分為不同的規則集。一個擴充功能最多可指定 100 個靜態規則集,而且一次可以啟用 50 個規則集。

在執行階段動態新增篩選器規則

部分規則無法與擴充功能搭配組合。因此,擴充功能必須在執行階段新增。這些規則稱為「動態規則」。

如果是動態宣告網路要求規則,Chrome 最多可允許每個擴充功能最多 30,000 項安全動態規則。大多數規則都視為安全規則:blockallowallowAllRequestsupgradeScheme。即使規則不安全 (例如 redirect),您仍可以動態方式新增規則,但上限為 5,000 個。因此,這項限制同樣會納入 30,000 個動態規則的上限。具體來說,清單項目篩選器清單中 98-99% 的規則為安全規則

內容篩選擴充功能可分別使用靜態和動態規則,將已知的篩選規則與擴充功能結合,並視需要從伺服器中更新含有內容篩選規則的擴充功能。

根據觀察到的請求調整規則

廣告生態系統不斷演進,內容篩選器也需要隨之更新。藉由結合 chrome.webRequest 和動態宣告式網路要求規則,您就可以分析網路要求可能違反隱私權的情況,並在日後封鎖這類要求。

基本做法如下:

  1. 使用 chrome.webRequest API 分析網路要求,並嘗試自動找出不符合隱私權規定的要求,例如使用機器學習技術。
  2. 為步驟 2 中找到的每項要求建立動態宣告式網路要求規則,方便日後封鎖類似要求。
  3. (選用) 將確認的「宣告式網路要求」規則傳回至您的伺服器,即可在下次更新擴充功能時,將該規則新增為靜態宣告式「網路要求」規則。

這個做法的優點在於分析是以非同步方式進行,不會對網站效能造成負面影響。

允許使用者自行定義篩選規則

您可以在擴充功能中提供篩選器設定 UI,讓使用者自行定義內容篩選規則。將這些使用者定義規則轉換為「宣告式網路要求」規則,並新增為動態規則。使用者仍可在瀏覽器工作階段和擴充功能升級期間繼續使用這些規則。透過這個方法,使用者最多可以新增 30,000 項自訂規則。

篩選網頁上的元素

在內容篩選過程中,篩選網路要求只是重要的一部分。另一項重點是直接從網頁移除不想要的內容。舉例來說,有超過 40% 的簡易清單篩選器清單規則會定義用戶端隱藏網頁元素的方式。

您可使用內容指令碼達成此目的。內容指令碼是在網頁環境中執行,且可以使用 DOM 進行變更。

Chrome 擴充功能不得執行遠端代管的程式碼。不過,如果是來自伺服器的資料要隱藏哪些元素,則不受這項設定影響;因此,這視為設定資料,因此元素規則可在執行階段隨時更新。

篩選已安裝政策的擴充功能中的網路要求

企業和教育機構的用途通常對內容和網路篩選設有極嚴格的規定,例如根據內容篩選要求。為了實現這些用途,已安裝政策的擴充功能提供了另一種篩選及封鎖網路要求的方式。您可以使用「封鎖」選項與 webRequest API 中的事件實作程式輔助內容篩選器,此篩選器會在每個要求中執行自訂邏輯,以判斷是否要封鎖要求。這項政策僅適用於政策安裝的擴充功能,因為這類擴充功能的信任程度較高。

攔截導覽要求

可使用宣告式網路要求規則,篩選導覽要求。舉例來說,您可以略過將使用者重新導向至指定目的地的追蹤網址。處理此情況的其中一種方法是將導覽要求 https://tracker.com?redirect=https%3A%2F%2Fexample.com 重新導向至擴充功能頁面 (需要設為可透過網路存取的資源),這樣系統就會執行指令碼,擷取重新導向目標,並使用 window.location.replace("https://example.com") 規避連結追蹤工具重新導向至目的地。