Muses Factory

Menu

Calendar

September 2007
SuMoTuWeThFrSa
1
2345678
9101112131415
16171819202122
23242526272829
30

Archives

Categories

Syndicate this site

RSS 1.0 Feed

Powered by

Powered by rNote 0.9.7.5

XREA-ad

xreaad

Weblog

[Web]

Adblock Plus フィルタ / 2007/09/29 (土)

なんかいいフィルタないかなと思って検索したら何故かこのページが引っかかった。 あんな適当なまま放置しておくのも申し訳ないのでちょっと書き直してみます。

まずはフィルタの書き方を紹介してみます。 公式の説明を読みながら書いてみたのですが、英語は得意ではないので間違っている部分などがあったら教えてもらえると助かります...。
公式: Adblock Plus: Writing Adblock Plus filters

基本書式

http://example.com/ads/banner123.gifという画像をブロックする場合について考えます。

まず、このアドレスをそのまま書いたものが最も単純なフィルタとなります。

  • http://example.com/ads/banner123.gif

またAdblock Plusのフィルタは部分一致をとるため、

  • example.com/ads
  • example.com
  • example
  • ads/
  • banner123.gif

のようなフィルタを記述してもhttp://www.example.com/adbanner.gifをブロックできます。 ただし、上の例でのexampleなどの一般的な単語をフィルタにしてしまうと広告でない要素までブロックしてしまう可能性があるので注意してください。

また、Adblock Plusではワイルドカードが使用できます。

  • http://example.com/ads/banner*.gif

と記述するとhttp://example.com/ads/banner123.gifだけでなく、http://example.com/ads/banner001.gifhttp://example.com/ads/bannerABC.gifなどもブロックできます。 広告の中には表示のたびにアドレスが変わるものもあるので有効に活用してください。 ただし、ワイルドカードを使用したフィルタがあまりにも多いと動作が遅くなるようです。

ホワイトリスト

ホワイトリストに一致したアドレスは、フィルタに一致した場合でもブロックされません。 フィルタを記述する際、先頭に@@を付けるとホワイトリストとして扱われます。 例えば、

  • adv

というフィルタがhttp://example.com/advice.gifをブロックするのを止めたい場合、

  • @@http://example.com/
  • @@example.com
  • @@advice

などと記述してください。

コメント

!から始まるフィルタはコメントとして扱われます。

前方一致・後方一致

|をフィルタの先頭・末尾に付けると前方一致・後方一致として扱われます。 例えば、

  • swf|

と記述すると後方一致によりhttp://example.com/swf/index.htmlはブロックされずに、 http://example.com/annoyingflash.swfはブロックされます。

フィルタオプション

フィルタの末尾に$を付けると、それに続けてフィルタオプションを指定できます。 複数のフィルタオプションを使用する場合はカンマで区切ってください。

要素の種類によってブロックするかどうかを決めるオプション群をまとめてタイプオプションと呼びます。 使用できるタイプオプションは以下の通りです。

script
外部スクリプト。
image
画像。
background
背景画像。
stylesheet
外部スタイルシート。
object
FlashやJavaなどのオブジェクト要素。
link
画像のリンク先アドレス。"バナーのリンク先をチェックする"が有効の場合のみ適用されます。
subdocument
フレームなどから呼び出される外部ドキュメント。
document
ページ本体。このタイプオプションはホワイトリストのみで適用されます。Adblock Plusでは表示するページ本体のアドレスがホワイトリストに一致した場合、そのページ内の要素すべてがホワイトリスト扱いとなります。
other
その他の要素 (XBLのbindings, XMLHttpRequests, objectが呼び出すdata, など)

例えば、タイプオプションを用いて拡張子が.cgiの画像をブロックしたい場合は

  • .cgi|$image

と記述できます。

タイプオプションの先頭に~を付けると逆タイプオプションとなり、指定された種類以外の要素をブロックします。 例えば、

  • adv|$~script,~stylesheet

と記述することで、advの文字が含まれているスクリプトとスタイルシート以外の要素をブロックできます。

大文字小文字の区別をする場合はmatch-caseオプションを使用します。例えば、

  • */BannerAd.gif$match-case

http://example.com/BannerAd.gifをブロックしますが、http://example.com/bannerad.gifはブロックしません。

collapseオプションを使用すると"ブロック要素を隠す"の設定に関わらず、 フィルタごとに要素を隠すかどうか決めることができます。 隠す場合はcollapseを、隠さない場合は~collapseを指定します。

正規表現

/から始まって/で終わるフィルタは正規表現として扱われます。 書き方の規則はJavaScriptの正規表現と同じです。 ワイルドカード同様、動作を遅くする可能性があるので使いすぎには注意してください。

Element hiding

これはアドレスではなくページの各タグに対して適用されるフィルタです。 このフィルタは一致した要素を隠すので、主にテキスト広告に対して使われます。 フィルタの記述には簡単なHTMLの知識が必要となります。

Element hidingの基本書式は

  • domain#tag(id/class)

です。ドメイン名を記述しないとすべてのドメインに対して有効になり、タグ名を*とするとすべてのタグに対して有効になります。 例えば、http://example.com/に次のようなテキスト広告が掲載されているとします。

<div id="textad">
Really cheap tofu, click here!
</div>

この広告を非表示にするためには

  • example.com#div(textad)
  • example.com#*(textad)

などと記述してください。 上の例では要素のidの一致をとっていますが、classの一致によってもElement hidingは有効になります。 例えば、上のフィルタは

<div class="textad">
Cheapest tofu, only here and now!
</div>

のような広告も隠します。 また、上のフィルタではドメインをexample.comに限定していますが、 すべてのページに対してフィルタを有効にしたい場合は

  • #div(textad)
  • #*(textad)

と記述すればよいでしょう。 ドメイン名はワイルドカードで表現することはできず、またドット文字から始めることもできません。 したがってwww.example.comwww2.example.comといった特定のレベル以下のドメインを指定する場合、

  • www*.example.com
  • *.example.com
  • .example.com

などと記述することはできないので注意してください。 上の例を正しく記述したものは

  • example.com

となります。

Element hidingではidclassだけでなく、他の属性の一致によって要素を隠すこともできます。 その場合の基本書式は

  • domain#tag(属性名=属性値)(属性名=属性値)...

のような形になります。複数の( )を記述した場合、すべての条件に一致する要素のみが隠されます。 条件は完全一致の他にも使えるものがあります。例えば、

  • #div(title*=adv)
  • #div(title^=adv)(title$=ert)
  • example.com#table(width=80%)(bgcolor=white)

などはどれも正しいフィルタとして動作します。 属性名と属性値を結ぶ記号については以下の通りです。

  • =
完全一致
  • *=
部分一致
  • ^=
前方一致
  • $=
後方一致

サンプルフィルタ

ここで、俺が普段使っているフィルタを紹介してみます。 まともに表示できないページがあっても、ホワイトリストに入れて開き直すというスタイルでブラウジングしているので、 他所のフィルタと比べて誤爆率が高いかもしれません。

  • ?$image

引数をとるすべての画像をブロックします。 広告だけでなく、アクセスカウンターやアクセス解析もブロックしてくれることもあります。 強力な分、誤爆も多いです。

  • /\/ad[isv]?[\.\/]/
  • adframe
  • adserve
  • advert

advertisementに関連する語のフィルタです。

  • click.
  • value.
  • affiliate
  • banner/

これらの単語も広告に含まれていることが多いようです。

このほか、よく見かける広告はピンポイントでブロックしています。

  • amazon

Amazonの広告をブロックします。これは個人のWebサイトやBlogでよく見かけます。 Amazonのサイトを利用する方は下で紹介するホワイトリストもあわせて使用してください。

  • rd.rakuten.co.jp
  • grp*.ias.rakuten.co.jp
  • hpad.www.infoseek.co.jp
  • topics.news.www.infoseek.co.jp

infoseek iswebで表示される広告です。

  • aaa.livedoor.jp#form(name=aaasearch)

AAA! CAFEで表示される広告と検索フォームです。

  • tok2.com#*(id$=-SEO)
  • tok2.com#*(id^=TOK2-)

TOK2.COMで表示される広告と検索フォームです。

  • img.ads.mixi.jp

mixiで表示される広告です。

表示できないページは適宜ホワイトリストに加えていくと良いでしょう。

  • @@wiki$image
  • @@|http://*.google.co.jp/
  • @@|http://*.google.com/
  • @@|http://*.microsoft.com/
  • @@|http://*.youtube.com/
  • @@|http://www.amazon.co.jp/$document
  • @@|http://img.mixi.jp/

Category:Home/Web (Total 5 items)

≪ スタイルシート | Firefoxでcheckloaduri.enabledの設定が反映されない ≫