広告ブロック拡張機能の「uBlock Origin」がFirefox上で最適に動作する理由とは?
コンテンツフィルタリング用のブラウザ拡張機能「uBlock Origin」は、ほかの広告ブロック拡張機能などよりもメモリ使用率が少ないことで人気を集めています。このuBlock OriginはChrome、Microsoft Edge、Firefox、Operaなどのブラウザ上で使用可能となっているのですが、Firefox上で最適に動作する理由を開発者のレイモンド・ヒル氏がGitHub上で解説しています。
https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox
uBlock OriginがFirefox上で最適に動作する理由は、Firefoxでは「CNAMEレコード」を使ってファーストパーティを装ったサードパーティサーバーのクロークを解除することができるためです。これにより、Firefox上で動作するuBlock Originは、他のブラウザ上で動作するコンテンツフィルタリング拡張機能と比べても、最も効率的に動作するようになるとのこと。
以下のグラフはOpera、Chrome、Brave、Tor Browser、Firefoxという5つのブラウザで、uBlock Originを含む複数のコンテンツフィルタリング拡張機能を使用した場合のコンテンツ検知率を示したもの。緑色は「CNAMEレコードのクロークを解除せずにuBlock Originを使用した場合のコンテンツ検出率」で、赤色は「CNAMEレコードのクロークを解除してuBlock Originを使用した場合のコンテンツ検出率」を示しています。結果は一目瞭然で、FirefoxでCNAMEレコードのクロークを解除してuBlock Originを使用した場合のコンテンツ検出率がダントツ高く、驚異の100%近くとなっています。
uBlock OriginとFirefoxの組み合わせが最も効率的にコンテンツをフィルタリングできる理由はいくつかあります。
例えばuBlock Originのバージョン1.15.0以降とFirefoxのバージョン57以降を使用しているユーザーは、「HTMLフィルター」と呼ばれる機能が利用できます。この機能はブラウザが解析する前にHTMLドキュメントをフィルタリングするという機能です。HTMLフィルターによりブラウザが解析する前にHTMLドキュメント内の特定タグを削除することが可能となりますが、同機能は「webRequest.filterResponseData()」というAPIを用いているため、Firefox以外のブラウザでは利用不可能です。
さらにFirefoxの場合、ブラウザ起動時にuBlock Originが起動して機能する準備が整うのを待ってから、開いているタブからネットワーク要求が発生します。一方で、Chromiumベースのブラウザは、uBlock Originが起動する前から開いているタブのネットワーク要求を処理していくケースがあるとのこと。つまり、uBlock OriginをFirefoxで利用すると、すべてのコンテンツを確実にブロックしてもらうことが可能というわけ。ヒル氏は「サードパーティのリソースやJavaScriptにデフォルト拒否モードを使用している人にとっては特に重要です」と記しています。
他にも、Firefoxではデフォルトでプリフェッチが無効になっていますが、Chromiumベースのブラウザではユーザーが設定から自身の手でプリフェッチを無効にする必要があります。
Firefox版のuBlock OriginはコアフィルタリングコードパスにWebAssemblyコードを使用しています。一方でChromiumベースのブラウザの場合、拡張機能マニフェストで追加の権限が必要になるように設計されており、「Chromeウェブストアで拡張機能を公開するときに摩擦が生じる可能性がある」とヒル氏は述べています。
加えて、Firefox版のuBlock OriginはデフォルトでLZ4という圧縮形式を採用しています。これにより生のフィルターリスト、コンパイルされたリストデータ、メモリスナップショットをディスクストレージに保存可能となります。
一方で、LZ4を採用していないChromiumベースのブラウザの場合、フィルターリストなどのデータが常にリセットされるため、uBlock Originの動作は常に非効率になり、フィルターリストが古くなるという問題もあるそうです。
なお、Firefox版のuBlock Originは以下から入手できます。
uBlock Origin - Firefox Browser ADD-ONS
https://addons.mozilla.org/ja/firefox/addon/ublock-origin/