uBlock Origin のフィルターに関する覚書です。 uBlock Origin (以降uBO) は、「広告ブロッカー」として導入している方がほとんどだと思います。ですが uBO は、広域スペクトルブロッカーです。これは、単なる「広告ブロッカー」としても動作することができる、より強力なブロッカーです。 uBO のフィルターは、UserScript や UserCSS に類するツールの一種であり、フィルターを理解して使用することでより良いウェブ環境を簡易に構築できます。 uBOのフィルターには、次の種類があります。 ※[対象URL]は、static extended filtering の[ドメイン名]とは大きく異なります。 リクエストを制限する ドメインで制限する Content-Security-Policy を設定する リダイレクトを設定する 例外フィルター用のオプション その他のオプション ※[ドメイン名]は、static network filtering の[対象URL]とは大きく異なります。 ※要素非表示は、対象要素に「 Google検索結果から、特定サイトを除外する専用の拡張機能もあります。 ※Bing/DuckDuckGoなどの他検索エンジンも合わせてブロックできます。はじめに
フィルターの種類
[対象URL] + ($ + [オプション])@@ + [対象URL] + ($ + [オプション])||example.com^@@||example.com^$document[ドメイン名(ホスト名)] + ## + [設定][ドメイン名(ホスト名)] + #@# + [設定]example.com##h1example.com,example.net#@#h1コメント - 共通
記号 概要 !コメント !#if [condition]!#if [condition] !#include [file name]!#include [file name] サンプル
! コメント
!#if false
ブロックコメント
!#endif静的ネットワークフィルター (static network filtering)
書式
[対象URL] + ($ + [オプション])@@ + [対象URL] + ($ + [オプション])
※[対象URL]は、||(domain name anchor)でドメイン名を指定できます。
※[対象URL]は、ドメイン名だけでなく、URLを指定できます。
※[対象URL]は、*(ワイルドカード)を使用できます。
※[対象URL]は、複数のURLを指定することはできません。
※[オプション]には、カンマ(,)区切りで複数のオプションを設定できます。主な記号の意味
記号 概要 ||ドメイン単位の指定(domain name anchor) @@例外ルール *すべてのURL ^区切り $オプション オプション
オプション 概要 document, docウェブページを制限する subdocument, frame埋め込みページを制限する image画像ファイルを制限する scriptスクリプトファイルを制限する stylesheet, cssCSSスタイルシートファイルを制限する fontフォントファイルを制限する mediaメディアファイルを制限する objectブラウザプラグインによって処理されるコンテンツを制限する xmlhttprequest, xhrXMLHttpRequest or Fetch API を制限する pingnavigator.sendBeacon()を制限するwebsocketWebSocketを制限する webrtcWebRTCを制限する popup, popunderポップアップウィンドウを制限する otherその他 (上記に含まれないリクエスト)を制限する オプション 概要 domain=指定したドメインにのみ適用されるようにフィルターを制限する first-party, 1pファーストパーティのリクエストを制限する third-party, 3pサードパーティのリクエストを制限する strict1p厳格なファーストパーティのリクエストを制限する strict3p厳格なサードパーティのリクエストを制限する denyallow=default-deny / allow-exceptionally 機能 オプション 概要 csp=CSPを設定する inline-scriptCSPを設定して、インラインスクリプトを無効化する inline-fontCSPを設定して、インラインフォントを無効化する オプション 概要 redirect=リダイレクトを作成する redirect-rule=静的なリダイレクトを作成する match-case$redirect=と共に設定すると大文字小文字を区別するredirect用の資源 概要 noneリダイレクトを無効にする empty空の応答にリダイレクトする click2load.html埋め込みページ用。クリックすると元ページが読み込まれる 1x1.gif2x2.png3x2.png32x32.pngnoop.htmlnoop.jsnoop.txtnoop-0.1s.mp3noop-1s.mp4オプション 概要 elemhide, ehide対象ページのすべてのコスメティックフィルタリングを無効化する specifichide, shide対象ページの一致するコスメティックフィルタリングを無効化する generichide, ghide一般的な一致するコスメティックフィルタリングを無効化する cnameオプション 概要 all$popup,document,inline-font,inline-scriptと同等badfilter既存のフィルターを無効化する important他の例外フィルターを無視する removeparam=ネットワーク要求前にクエリ文字列からパラメータを削除する header=応答ヘッダーを確認して制限する サンプル
! 例:ドメイン単位の指定
||example.com^
||192.168.1.1^
! 例:例外ルール
@@||example.net^
! 例:すべてのURL
! すべてのサードパーティリクエストをブロックする
*$third-party
*$script
*$script,inline-script
! 例:ファイル名
^example.html^
^example.js^
! 例:URLの指定
http://example.com^
https://example.com/^
https://example.com/test.html^$document
! ※トップページ以外のページは、オプションを明示的に指定する必要があります
! 例:HOSTSファイル
example.com
! 例:ページリクエストを制限する
||example.com^$document
! 例:サードパーティリクエストを制限する
||example.com^$third-party
! 例:スクリプトとインラインスクリプトを制限する
||example.com^$script,inline-script
! 例:ワーカーをCSPを介して制限する
||example.com^$csp=worker-src 'none'静的拡張フィルタリング (static extended filtering)
書式
[ドメイン名(ホスト名)] + ## + [指定][ドメイン名(ホスト名)] + #@# + [指定]
※[ドメイン名]は、URL(特定のページだけ)を指定することはできません。
※[ドメイン名]は、カンマ(,)区切りで複数指定できます。
※[ドメイン名]は、一部の機能を除いて*(ワイルドカード)を使用できます。
※[ドメイン名]は、サブドメインを省略でき、サブドメインにも適用されます。
※[指定]には、[CSSセレクタ]/[化粧品フィルター]/[アクション演算子]/[スクリプトレットインジェクション]を指定できます。主な記号の意味
記号 概要 ##要素非表示 #@#要素非表示の例外ルール ##^HTMLフィルター #@#^HTMLフィルターの例外ルール ##+jsスクリプトレットインジェクション(スクリプト挿入) #@#+jsスクリプトレットインジェクションの例外ルール display: none !important;」のCSSを適用します。
※HTMLフィルターは、対象要素をブラウザ解析前にドキュメントから要素を削除します。
ブラウザ解析後、動的に要素を作成した場合、要素は削除されません。
※スクリプト挿入は、特定のJavaScriptコードをページに挿入します。
自由なJavaScriptを挿入できるわけではありません。
挿入可能なコードは、リソースライブラリ から確認できます。サンプル
! 例:要素非表示
example.com##h1
! 例:要素非表示の例外
example.com#@#h1
! 例:CSS セレクタを指定する
example.com###target
example.com##.target
example.com###parent .target
! 例:HTMLフィルター
example.com##^h1
example.com##^#target
example.com##^.target
! 例:コスメティックフィルター
example.com##body > div:has-text(Sponsored)
strikeout.me##body > div:has(img[alt="AdBlock Alert"])
! 例:スクリプトレットインジェクション
example.com##+js(noeval)広告ブロック以外の使用例
! Google検索結果から、特定サイトを除外
www.google.com,www.google.co.jp###search .g:has(a[href*="://example.com/"])
! スクリプトの実行阻止
||example.com^$script,inline-script
! ワーカーの実行阻止
||example.com^$csp=worker-src 'none'
! サードパーティリクエストの制限
||example.com^$third-party
! 個別要素の非表示
! ポップアップ全般
! GDPR関連
! Twitterのプロモーションを非表示
! 特定サイトへのリンクを非表示
! コピペガードの無効化
! アンチAdBlocker対策備考
uBlocklist
公式な解説ページ(英語)
他の解説ページ
uBlock Origin フィルター覚書(書き方・サンプル)
投稿日 2021/09/12 更新日 2021/09/14