uBlock Origin 提前在 Firefox 官方頻道上架 WebExtension 擴充套件

uBlock Origin 於今天凌晨在 Firefox 火狐官方網站的正式版更新頻道提前上架了 WebExtension 型態的擴充套件(add-on、擴展),也就是說擋廣告神器將從 1.14.0 版本開始,自官網安裝的將不再是傳統型(legacy)擴充套件了。
uBlock Origin(以下簡稱 uBO)的使用方式過去已經簡介過,故這篇將和「[Firefox] uBlock 和 uBlock0(uBlock Origin)的差別是?」相同,只做版本變更的介紹而不涉及使用方式。有興趣的話可以點下面兩篇閱讀:
- uBlock Origin:取代 AdBlocks 的 Firefox、Chrome 高效能擋網頁廣告擴充套件
- Anti-Adblock Killer Continued - 更進一步的「反反反廣告」方案
uBlock Origin 的不同型態
隨著 Firefox 版本逐漸靠近 57,由傳統型擴充套件過渡到強制使用 WebExtension 的動盪時期,uBO 開發者 gorhill 也有一套過度計畫,他將同時開發 uBO/Legacy(傳統型)、uBO/webext-hybrid(混和型)和 uBO/webext(WebExtension 型)三種型態的擴充套件,以分別對應不同的 Firefox 版本,參考下表:
火狐版本/uBlock型態 | Fx 24~5 | Fx 54~56 | Fx 57+ |
uBO/Legacy | 可用 | 可用 | 不可 |
uBO/webext-hybrid | 不可 | 可用 | 不可 |
uBO/webext | 不可 | 可用 | 可用 |
uBO/Legacy 即傳統型態的擴充套件,擁有最強悍的功能,採用的儲存格式是使用 ublock0.sqlite。Firefox 官方頻道上的最後一個版本是 1.13.8。儘管之後不在官網更新了,但是作者將持續開發,所以有需要的使用者依然可以從 uBO 的 Github 頻道安裝最新版本的傳統型態擴充套件。
2、uBO/webext-hybrid
uBO/webext-hybrid 是做為傳統版套件轉往 WebExtension 的過度型態,當安裝此型態 uBO 擴充套件後,會自動將 ublock0.sqlite 儲存格式轉換成 WebExtension 能夠讀取的 indexedDB 格式。當然本質上這還是傳統型態的擴充套件,在 Firefox 57 後會掛掉。
- 第一次安裝這個型態的 uBO 因為要轉換儲存格式的緣故,會有一小段遲滯(依訂閱規則和自訂規則數而定)
- 轉換後不會砍掉原先的 .sqlite 檔,想回頭用傳統版亦可。
- 延伸閱讀 Embedded WebExtensions
3、uBO/webext
uBO/webext 如前所述是指 WebExtension 型態的 uBO,官方版本的 Firefox 57 之後都強制採用這種型態的擴充套件。儘管我用這個版本一段時間,沒遇到什麼問題,但開發者本意是基於穩定性將到 Firefox 57 正式發佈之後,才將火狐官網更新改為 WebExtension。會提前完全是一個意外。
- 尚不具備傳統版 uBO 能訪問所有背景網路請求的能力,預計 Firefox 56 會修復。
- 其他不可避免的 WebExtension 共有缺陷。
提前上架 WebExtension 的原因
按照開發者原先計畫,官方 Firefox 55 的當下應該是採用 uBO/webext-hybrid 型態,但在火狐官網更新第一也是唯一一個 uBO/webext-hybrid 1.13.10 版時,即遇到了 Firefox 55 的 bug,造成部分人自訂的規則無法啟用或著套件乾脆就消失(部分人可以移除重裝找回,Firefox 56 會修復)。
在故障無法排除下,開發者建議 Firefox 32-bit 的使用者先退回 uBO/Legacy 1.13.8(官方更新頻道裡版本歷史裡可以找到) ,或著也可以試著安裝放在 github 上最新的 uBlock0.firefox.xpi(legacy)避免再度出錯。
因為計劃外的問題,所以開發者在 9 月 1 日凌晨,把火狐官網上的正式版本直接更改為 uBO WebExtension 1.14.0,也宣告了 uBO/webext-hybrid 的提前夭折。
結論
最後以使用者的狀況做個整理,對於使用 Firefox 54 之前所有版本、uBO 自訂規則多到放不下、Firefox 是 32-bit、偏好使用傳統擴充套件的使用者:
- 安裝官方頻道的最後一版的 uBO/Legacy 1.13.8,並停止更新。
- 自行到 uBO 的 github 安裝最新的 Legacy 版本,選檔案名稱 uBlock0.firefox.xpi 的即是。
對於隨著官方正式版本更新 Firefox 55.0.3 的新 uBO 使用者:
- 直接到 uBO 的 Firefox 官方頻道正式版點「新增至 Firefox」即可。
對於 Firefox 54+ 以上想用 WebExtension,且以前安裝過 uBO 有設定檔的使用者:
- 手動備份轉移規則,或是先到 uBO 的 Firefox 官方頻道裡歷史版本安裝 1.13.10 轉換為 indexedDB 格式,再安裝 Firefox 官方頻道正式版即可。(不是開發者版本)
- 自行到 uBO 的 Github 頻道安裝最新的 uBO/webext 擴充套件。(一樣要先轉移規則)