[情報] 2023年一月將無法使用油猴類套件
相關的資料在 #1XiiUezf (Browsers) 等 Manifest V3 的相關帖子都有提到,
只是非開發者可能不會留意,所以換個比較能引起注意的標題。XD
2023 年一月開始 Chromium 將無法執行 Manifest V2 套件,
而 Manifest V3 套件禁止執行遠端腳本,
(所謂遠端腳本就是一切套件可以主動從遠端抓來的 JS 程式碼)
換言之所有油猴類自訂腳本的套件都會死掉,
包括 Greasemonkey、Violentmonkey、Tampermonkey 等等。
Google 對 MV3 套件有明確額外規範:
Additional requirements for Manifest V3
Extensions using Manifest V3 must meet additional requirements
related to the extension's code. Specifically, the full functionality
of an extension must be easily discernible from its submitted code.
This means that the logic of how each extension operates should be
self contained. The extension may reference and load data and other
information sources that are external to the extension, but these
external resources must not contain any logic.
Some common violations include:
* Including a <script> tag that points to a resource that is not
within the extension's package
* Using JavaScript's eval() method or other mechanisms to execute a
string fetched from a remote source
* Building an interpreter to run complex commands fetched from a
remote source, even if those commands are fetched as data
換言之,有些人想過的用 evaljs 或 WASM 等繞道方式,都會被視為違規。
Chromium 系列如此,那 Firefox 呢?
根據情報,Firefox 的 Manifest V3 也會跟進 Choromium 做法。
雖然 Firefox 目前還不支援 Manifest V3,
也尚未提出明確開始支援 MV3 和停止支援 MV2 的時程,
但長遠來看,結果一樣。
Firefox 和 Chromium 有個差別是 Firefox 本來就支援 user chrome JS,
但無法使用一般套件 API,
只能使用舊套件的類 XUL/XPCOM 技術,寫起來比較麻煩,且可能升級就不相容。
油猴類套件廢掉,短期內衝擊可能不小,
但長遠來看,我個人對此政策沒有太大意見。
禁止遠端腳本的理由很明顯,就是有被濫用的風險,
今天某套件可以下載一段遠端的腳本執行,
明天就會有攻擊者架設有惡意腳本的遠端網站,
且任何套件都有可能主動抓惡意腳本搞恐怖攻擊,
這對瀏覽器使用者的數位安全非常沒有保障。
技術上來說,所有油猴類腳本都可以改寫成套件,
而套件起碼會通過 Google、Firefox 站方審核和監管,
安全性比較有保障。
雖然說套件和油猴腳本相比,
開發上的確麻煩一點,效能也可能差一點,
但這就是未來的趨勢,除非有能力自己寫個全新瀏覽器來反壟斷。
開發者倒是可以抓緊時機,搶先把各種實用油猴腳本改寫成套件,
早發表早卡位早得流量。XD
除此之外,一些比較簡單的腳本,其實可以寫成書籤小工具。
或許未來會有人寫個簡單的書籤小工具管理套件。XD
順便在以下開放大家分享常用、實用的使用者腳本,
及可以替代的套件或書籤小工具(如果能找到),
也許可以得到使用者和一些開發者的關切:)
相關資料:
Violent monkey 的 issue:
https://github.com/violentmonkey/violentmonkey/issues/505
Tampermonkey 的 issue:
https://github.com/Tampermonkey/tampermonkey/issues/644
裡面有提到 Google 有計畫讓 power user 設定 user script 或 CSS,
但目前八字沒有一撇,也沒看到相關的 API 和文件。
其他討論:
https://groups.google.com/a/chromium.org/g/chromium-extensions/c/hQeJzPbG-js
各種使用者抱怨XD
--
《終結內容農場》瀏覽器套件
Chrome: http://bit.ly/CFTGC (桌機 & Kiwi Browser on Android)
Firefox: http://bit.ly/CFTFx (桌機 & Firefox for Android)
真相:http://bit.ly/CFTss1、http://bit.ly/CFTss2
詳細介紹:http://bit.ly/CFTinfo
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.60.81 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1643241171.A.243.html
推
01/27 08:04,
2年前
, 1F
01/27 08:04, 1F
推
01/27 08:26,
2年前
, 2F
01/27 08:26, 2F
→
01/27 08:27,
2年前
, 3F
01/27 08:27, 3F
→
01/27 08:51,
2年前
, 4F
01/27 08:51, 4F
推
01/27 08:54,
2年前
, 5F
01/27 08:54, 5F
更新資訊,
Manifest V3 有新 API 支援 inject/remove CSS:
https://developer.chrome.com/docs/extensions/reference/scripting/
所以 user CSS 類套件還是可以使用。
※ 編輯: danny0838 (59.115.60.81 臺灣), 01/27/2022 09:30:03
推
01/27 09:35,
2年前
, 6F
01/27 09:35, 6F
推
01/27 09:35,
2年前
, 7F
01/27 09:35, 7F
※ 編輯: danny0838 (59.115.60.81 臺灣), 01/27/2022 10:14:39
→
01/27 10:21,
2年前
, 8F
01/27 10:21, 8F
→
01/27 10:54,
2年前
, 9F
01/27 10:54, 9F
→
01/27 10:54,
2年前
, 10F
01/27 10:54, 10F
這類套件的主要功能就是從第三方網站下載腳本執行,
這就是所謂的執行遠端腳本啊,
有很難理解嗎?XD
更多資訊請爬本版 MV3 相關討論,
本文貼的幾篇 ref 也都有提到。
※ 編輯: danny0838 (223.140.102.60 臺灣), 01/27/2022 12:03:10
→
01/27 12:50,
2年前
, 11F
01/27 12:50, 11F
以套件的角度來說,
所有不是一開始包在套件裡的程式碼都在 MV3 禁止之列,
如果覺得「遠端」不精準,改成「外部」、「第三方」也可以,
問題的本質不會因此改變。
推
01/27 13:11,
2年前
, 12F
01/27 13:11, 12F
→
01/27 13:12,
2年前
, 13F
01/27 13:12, 13F
Imgur fix 現在還有需要嗎?
push count 應該前面討論的 PTT web enhanced 就有提供。
→
01/27 13:12,
2年前
, 14F
01/27 13:12, 14F
→
01/27 13:12,
2年前
, 15F
01/27 13:12, 15F
→
01/27 13:13,
2年前
, 16F
01/27 13:13, 16F
其實還好,簡單腳本就是個 content script,加個制式 manifest 就好。
推
01/27 13:17,
2年前
, 17F
01/27 13:17, 17F
→
01/27 13:17,
2年前
, 18F
01/27 13:17, 18F
→
01/27 13:19,
2年前
, 19F
01/27 13:19, 19F
※ 編輯: danny0838 (223.140.102.60 臺灣), 01/27/2022 13:32:54
→
01/27 13:56,
2年前
, 20F
01/27 13:56, 20F
→
01/27 13:57,
2年前
, 21F
01/27 13:57, 21F
我倒是沒想到這點,哈哈。
不然大家一起抵制 Google,只上架 Fx、Edge、Opera 吧XD
推
01/27 14:15,
2年前
, 22F
01/27 14:15, 22F
※ 編輯: danny0838 (223.140.102.60 臺灣), 01/27/2022 14:43:46
推
01/27 14:46,
2年前
, 23F
01/27 14:46, 23F
→
01/27 14:49,
2年前
, 24F
01/27 14:49, 24F
→
01/27 14:49,
2年前
, 25F
01/27 14:49, 25F
→
01/27 14:49,
2年前
, 26F
01/27 14:49, 26F
→
01/27 14:54,
2年前
, 27F
01/27 14:54, 27F
這問題不是這樣看的,
我們當然都知道 monkey 類套件有不錯的開放審核機制,
問題在於,只要套件 API 允許執行外部腳本,
就有可能被惡意套件濫用,
而且好套件壞套件要的都是同樣的「存取所有網站」權限,防不勝防,
而相關的 case 都會算在「套件漏洞」的鍋上,不是算在 user scripts 的鍋。
※ 編輯: danny0838 (223.140.102.60 臺灣), 01/27/2022 16:24:01
推
01/27 22:50,
2年前
, 28F
01/27 22:50, 28F
→
01/27 22:51,
2年前
, 29F
01/27 22:51, 29F
→
01/27 22:51,
2年前
, 30F
01/27 22:51, 30F
→
01/27 22:51,
2年前
, 31F
01/27 22:51, 31F
目前看到的是 API 拿掉,並不存在保留的一手。
Chromium 方面,除非 Google 未來有增加新 API,
有可能會像 webRequestBlocking 一樣必須用管理員設定登錄檔的方式才能安裝使用。
但是這條路超麻煩,也只能安裝發布在 Chrome 商店的套件。
Firefox 方面沒有類似先例(Fx 在 MV3 會保留 webRequestBlocking),
如果要我提議,
可以比照 Chromium 加入新 API 但必須在 manifest.json 加入特殊的設定值,
而該設定值一律不會在審核套件時給過,也就是只能用在未簽署套件的意思。
如果沒有,另一個選擇是走 userChrome JS 路線。
(如果只用到 content script 而不涉及套件 API,應該不會太複雜)
再不然,就是寫成私人套件。
這方面 Chromium 大概比較方便,用開發模式載入未打包套件就可以一直用;
還有一個我不曉得是不是 bug 的方式是,把套件拖放到管理頁面就能安裝。
Firefox 如果用開發模式載入未打包套件,瀏覽器重啟後會全部消失,
若要持續使用,
要嘛到 AMO 發布成非公開套件(現在沒太大疑慮的都是機器審核,速度很快),
要嘛包成未簽署的套件用 Beta/Developer/Nightly/ESR/Unbranded 發行版安裝。
※ 編輯: danny0838 (59.115.60.81 臺灣), 01/28/2022 00:23:51
推
01/28 02:57,
2年前
, 32F
01/28 02:57, 32F
→
01/28 14:35,
2年前
, 33F
01/28 14:35, 33F
→
01/28 14:36,
2年前
, 34F
01/28 14:36, 34F
→
01/28 14:36,
2年前
, 35F
01/28 14:36, 35F
→
01/28 14:37,
2年前
, 36F
01/28 14:37, 36F
→
01/28 14:38,
2年前
, 37F
01/28 14:38, 37F
→
01/28 14:38,
2年前
, 38F
01/28 14:38, 38F
→
01/28 17:55,
2年前
, 39F
01/28 17:55, 39F
→
01/28 19:37,
2年前
, 40F
01/28 19:37, 40F
→
01/28 19:38,
2年前
, 41F
01/28 19:38, 41F
推
01/29 03:25,
2年前
, 42F
01/29 03:25, 42F
推
01/29 16:56,
2年前
, 43F
01/29 16:56, 43F
→
01/29 16:57,
2年前
, 44F
01/29 16:57, 44F
→
01/29 23:52,
2年前
, 45F
01/29 23:52, 45F
推
01/31 05:41,
2年前
, 46F
01/31 05:41, 46F
推
01/31 23:53,
2年前
, 47F
01/31 23:53, 47F
Browsers 近期熱門文章
PTT數位生活區 即時熱門文章