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##h1
example.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, css
CSSスタイルシートファイルを制限する font
フォントファイルを制限する media
メディアファイルを制限する object
ブラウザプラグインによって処理されるコンテンツを制限する xmlhttprequest, xhr
XMLHttpRequest or Fetch API を制限する ping
navigator.sendBeacon()
を制限するwebsocket
WebSocketを制限する webrtc
WebRTCを制限する popup, popunder
ポップアップウィンドウを制限する other
その他 (上記に含まれないリクエスト)を制限する オプション 概要 domain=
指定したドメインにのみ適用されるようにフィルターを制限する first-party, 1p
ファーストパーティのリクエストを制限する third-party, 3p
サードパーティのリクエストを制限する strict1p
厳格なファーストパーティのリクエストを制限する strict3p
厳格なサードパーティのリクエストを制限する denyallow=
default-deny / allow-exceptionally 機能 オプション 概要 csp=
CSPを設定する inline-script
CSPを設定して、インラインスクリプトを無効化する inline-font
CSPを設定して、インラインフォントを無効化する オプション 概要 redirect=
リダイレクトを作成する redirect-rule=
静的なリダイレクトを作成する match-case
$redirect=
と共に設定すると大文字小文字を区別するredirect用の資源 概要 none
リダイレクトを無効にする empty
空の応答にリダイレクトする click2load.html
埋め込みページ用。クリックすると元ページが読み込まれる 1x1.gif
2x2.png
3x2.png
32x32.png
noop.html
noop.js
noop.txt
noop-0.1s.mp3
noop-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