Adblock Plusアドオンの自作フィルターのすすめ

FirefoxでAdblock Plusアドオンを使い出したが中々良い。アフィや広告を見なくて済むし、アクセスしにいかないから読み込み速度も早くなる

アドオンの場所は ttps://addons.mozilla.org/ja/firefox/addon/adblock-plus/ 。

フィルタ設定(Ctrl-Shift-E)の画面で「控えめな広告を許可」というのがあるが、設定内容を参照すると@@||googleやamazonと書いてあって遮断しない設定になるから、許可を外しておこう。@@は例外ルールという意味。

フィルタ購読で誰かが作ったフィルタを使うこともできるが、自作フィルターを作るのが良い

 

フィルターの作り方

「フィルタ設定(Ctrl-Shift-E)>自作フィルタ>フィルタを追加」でフィルターを追加すれば有効になる。

英語だけど公式サイトの ttps://adblockplus.org/en/filters にフィルターの書き方が書いてある。分からないことは辞書を片手に解読するか、翻訳サイトを通すかして何とか読もう。(追記)「Writing Adblock Plus filters」で検索すれば日本語訳サイトが見つかるが、websocketが載ってないなど、ほんの少しだけ古い。

フィルター例 解説
##a[href*="amazon"] 自作フィルターその1。##aは<a href="http://amazon.co.jp/xxx">があった時の<a>タグに適用するという意味。全体としてhrefがamazonという文字を含む(*=)と遮断するという意味。つまり、amazonへのリンクがあるものが全部遮断される。
@@||amazon.co.jp^$document 自作フィルターその2。直接amazon.co.jpのページを見た場合に普通に見れるようにする。@@は例外ルールの意味。||はhttp://とhttps://の両方という意味。^はamazon.co.jp.comというサイトが万一あった場合に外すために最後尾に付けた区切り文字。$以下はオプションの意味。documentはページに合致した場合に他の全フィルターを適用しないようにするという意味のようだ。最初よく分からなかったが、このオプションを外して再読み込みをして、ブロック可能項目一覧を開く(Ctrl-Shift-UもしくはCtrl-Shift-V)の結果を見比べたら何となく分かった。自作フィルター1と2を入れるだけで広告が大きく減るのが実感できるはず。
||shinobi.jp^$third-party 最初から購読されているフィルタEasyListに入ってる。ホスト名を書くやり方が標準的だと思うので、解説用に取り上げた。shinobi.jpというサイトを遮断するという意味。third-partyオプションは見てるページのURLと別のURLを見に行く場合に遮断するという意味。直接shinobi.jpのURLを開いた場合に適用されない。
||google-analytics.com^ 自作フィルターその3。googleに追跡されないようにする(笑)。

以下、追加。

追加フィルター例 解説
||cdn.pushcrew.com^$third-party 他作フィルターその1。産経などのニュースサイトで見かけるプッシュ通知を表示しないようにする。
syosetu.com##div[id="container"] div.koukoku_728
もしくは
syosetu.com##.koukoku_728
もしくは
syosetu.com###container div[class="koukoku_728"]
他作フィルターその2。解説用。小説になろう(syosetu.com)のclass="koukoku_728"の文書要素をフィルター。##以下がjavascriptのquerySelectorAllに対応している。Webコンソール(Ctrl-Shift-K)を開いてdocument.querySelectorAll('div[id="container"] div.koukoku_728')とタイプすれば文書要素が返ってくる。左の3番目の例は#containerid="container"に対応していることを示す。###に意味がある訳ではない。
要するに##以下はCSSセレクタと同じなので#とか>とか+とか:not()とかも使えて非常に柔軟にフィルターできる。
少し不便ではあるが、##を使う場合、||や$third-partyなどのオプションが一緒に指定できなくなるようだ。
$script,xmlhttprequest,ping,websocket,domain=sankei.com 自作フィルターその4。産経(sankei.com)から読み込まれたスクリプト群を遮断(※1)して、通信を完全遮断する例。産経のサイトでHttpFoxを使えばapplication/jsonで延々と通信していることが分かる。scriptオプションだけ使えば十分ではあるが解説用にオプションを付け足した。
domain=は指定ドメインから読み込まれたページ群にフィルターを適用するというオプション。scriptはscriptタグでロードされた外部スクリプトをフィルターするというオプション。xmlhttprequestはhttp通信するオブジェクトをフィルターするオプション。pingは <a ping>やnavigator.sendBeaconをフィルターするオプション。websocketはWebSocketオブジェクトをフィルターするオプション。

※1 外部スクリプトをロードする以外の方法で動くスクリプトは無効化されない。完全にjavascriptを停止させるにはYesScriptのようなアドオンを使う必要がある。

 

 

これを使いこなすにはページのソースを見ないといけない。そのためのショートカットキーと技を紹介。

  • Ctrl-Uでページのソースを表示。
  • ページの調べたい要素を右クリック>要素を調査(Q)でその要素が選択された状態で開発ツールが立ち上がる。
  • ページの要素を右クリックしてAdblock Plus:画像をブロックを使う。
  • Ctrl-Shift-UもしくはCtrl-Shift-Vでブロック可能項目一覧を出して、アドレスを選択すればその要素の外枠が点滅する。また、ここで赤文字になった要素がフィルターの条件に合致したものと分かる。
    (Tab Mix Plusを使っている場合、Ctrl-Shift-Uが動かないので、TMPオプションのメニュー>ショートカット>ウィンドウ同士をマージする、を空白にする必要があった。筆者の環境では、ブロック可能項目一覧のショートカットがCtrl-Shift-UとCtrl-Shift-Vのどちらに割り当てられるか安定しない。)
  • Ctrl-Shift-KでWebコンソールを開いてCtrl-Shift-Rでキャッシュ上書き更新すれば要素ごとの読み込み時間が分かる。
  • FirefoxのアドオンのHttpFoxが外部通信の状況を見定めるのに使える。ツール(Alt-T)>Web開発(W)>HttpFoxで起動。

フィルター作ったのはいいが、このページはフィルターなしで見たいと思ったら、アドオンバーのアイコンから無効化できる。

(2017/01/27 ショートカットキーが執筆時と大きく変わっていたので修正。追加フィルター例などを加筆。)

posted at 2012年05月22日 07:17 | Comment(0) | パソコン
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。