なんかいいフィルタないかなと思って検索したら何故かこのページが引っかかった。 あんな適当なまま放置しておくのも申し訳ないのでちょっと書き直してみます。
まずはフィルタの書き方を紹介してみます。
公式の説明を読みながら書いてみたのですが、英語は得意ではないので間違っている部分などがあったら教えてもらえると助かります...。
公式: 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.gif
やhttp://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.com
やwww2.example.com
といった特定のレベル以下のドメインを指定する場合、
www*.example.com
*.example.com
.example.com
などと記述することはできないので注意してください。 上の例を正しく記述したものは
example.com
となります。
Element hidingではid
とclass
だけでなく、他の属性の一致によって要素を隠すこともできます。
その場合の基本書式は
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/