博客 / 詳情

返回

Chrome瀏覽器插件Manifest V3 簡介

隨着互聯網的快速發展,瀏覽器插件成為了許多用户提升瀏覽器功能和個性化體驗的重要工具。Chrome瀏覽器作為全球最受歡迎的瀏覽器之一,其插件生態系統也日益壯大。為了保證插件的安全性和性能,Chrome團隊推出了Manifest V3,這是一種新的插件開發規範。

A step in the direction of security, privacy, and performance.

向安全性、隱私性和性能方向邁出了一步。

Manifest V3是Chrome瀏覽器插件開發的一種新的規範和架構。它旨在提供更高的安全性、更好的性能和更好的隱私保護。Manifest V3引入了一些新的概念和功能,以幫助開發者更好地構建和管理插件。

擴展清單(Extension Manifest)向瀏覽器提供有關擴展功能和它使用的文件的信息。可供擴展使用的功能由當前清單版本定義。Manifest V3引入了擴展安全性、隱私性和性能的增強,並允許擴展使用開放Web技術,如service worker和promises。

Chrome 應用商店不再接受新的Manifest V2 插件(擴展)

  • 2022年1月,Chrome網上應用商店停止接受新的Manifest V2擴展程序,並將原有的V2其可見性設置為“公開”或“未列出”。同時,將Manifest V2擴展從“私人”更改為“公共”或“未列出”的功能已刪除。
  • 2022年6月,Chrome網上應用商店停止接受新的Manifest V2擴展,並將原有的V2擴展可見性設置為“私人”。

功能摘要

使用Manifest V3的擴展有許多新特性和功能更改:

  • Service workers 替換 background pages.
  • 使用新的declarativeNetRequest API 進行網絡請求修改
  • 不再允許遠程載入的代碼,擴展只能執行包含在其包中的JavaScript
  • Promise支持已經被添加到許多方法中,儘管回調仍然被支持作為替代方案(Chrome 最終將支持所有合適的方法上的Promise能力)
  • Manifest V3中還引入了許多其他相對較小的特性變化

主要特點

Service workers

Manifest V3將後台頁面(background pages)替換為Service Worker。

與其網頁對應物一樣,擴展 Service Workers 偵聽並響應事件,以增強用户的體驗。對於Web Service Worker,這通常意味着管理緩存,預加載資源和啓用離線Web頁面。雖然擴展 Service Worker 仍然可以完成所有這些工作,但擴展程序包已經包含了一組可以離線訪問的資源。因此,擴展 Service Worker 傾向於專注於響應由擴展API公開的瀏覽器事件。

修改網絡請求

擴展程序修改網絡請求的方式在Manifest V3中發生了變化。有一個新的declarativeNetRequest API chrome.declarativeNetRequest - Chrome Developers,它可以讓擴展程序以保護隱私和高性能的方式修改和阻止網絡請求。這個API的本質是:

  • 擴展程序不再攔截並以程序化方式修改請求,而是請求Chrome代表其評估和修改請求。
  • 擴展程序聲明一組規則:用於匹配請求的模式和匹配時執行的操作。然後瀏覽器根據這些規則修改網絡請求。
    採用這種聲明性方法大大減少了持久主機權限的需求。
某些擴展程序可能仍然需要廣泛的主機權限來滿足特定的用例(例如重定向請求)。有關詳細信息,請參閲條件權限和declarativeNetRequest。

webRequest API的阻止版本在Manifest V3中僅限於強制安裝的擴展程序。這是由於阻止web請求方法存在的問題:

  • 隱私

    需要過多地訪問用户數據,因為擴展程序需要讀取用户發出的每個網絡請求。

  • 性能

​ 在多個進程跳躍和C++/JS邊界之間進行數據的序列化和反序列化會累積。

  • 兼容性

​ 與基於事件的後台執行不兼容,因為它需要服務工作者在處理每個請求時運行。

這意味着開發人員可以實現許多常見的用例,例如內容阻止,而無需任何主機權限。

託管遠程代碼

Manifest V3 中的一個關鍵安全改進是擴展無法加載 JavaScript 或 Wasm 文件等遠程代碼。這使擴展程序提交到 Chrome 網上應用店時更可靠、更高效地檢查擴展程序的安全行為。具體來説,所有邏輯都必須包含在擴展包中。

官方建議使用遠程配置文件,而不是遠程代碼。請參閲遷移指南以獲取更多信息。

Promise

Manifest V3 為 Promise 提供一流的支持。現在許多流行的 API 支持 Promise,Chrome最終決定將支持所有適當方法的 Promise。還支持Promise鏈、異步和等待。某些 API 功能(例如事件偵聽器)仍然需要回調。

為了向後兼容,許多方法在添加 Promise 支持後繼續支持回調。請注意,不能在同一個函數調用中同時使用兩者。如果傳遞迴調,該函數將不會返回 Promise,如果希望返回 Promise,則不要傳遞迴調。

有關使用 Promise 的信息,請參閲MDN 上的 Promise。有關將回調轉換為 Promise 以及在擴展中使用它們的信息,請參閲文章。

結語

相對的,Manifest V3也引發了一些爭議。一些開發者擔心Manifest V3的新權限模型和事件頁模型會限制插件的功能和靈活性。他們擔心這可能會影響到已有的插件,並給開發者帶來額外的工作量。此外,一些開發者還擔心Manifest V3的改變可能導致插件生態系統的不穩定和插件的兼容性問題。

總之,Manifest V3是Chrome瀏覽器插件開發的一次重要改進。它引入了新的權限模型、事件頁模型和消息傳遞機制,提供了更高的安全性、更好的性能和更好的隱私保護。然而,Manifest V3也引發了一些爭議,開發者們對其功能和靈活性的限制表示擔憂。無論如何,Manifest V3的推出將進一步推動Chrome瀏覽器插件生態系統的發展和創新(Chrome 可越來越像操作系統了)。

參考:

  • Chrome Extensions Manifest V2 support timeline - Chrome Developers
  • Welcome to the Chrome Extension Manifest V3 - Chrome Developers
  • Chrome 擴展清單 V3 概述 - Chrome 開發者
  • chrome.declarativeNetRequest - Chrome Developers --- chrome.declarativeNetRequest - Chrome Developers
user avatar uncletong_doge 頭像 zhangxishuo 頭像 tingzhong666 頭像 fengshuan 頭像 beilee 頭像 tufeiyuan_5d9f0a380c30e 頭像 ipromise 頭像 yxaw 頭像 hexuan_5ea1a9d57db1a 頭像 zuckjet 頭像 liuxuan_5845129fbf248 頭像 yangzw 頭像
15 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.