2009年12月04日

やってはいけない:10のAdblockのフィルタルール

2009年12月04日(金)

Adblockのフィルタを自分なりにカスタマイズする際の「やってはいけない」例を備忘録代わりにいくつか紹介しておこう。

1.http://ad, ##div[id^="ad"], ##div[id*="ad"]
Mozzilaのアドオンページid="addons"で死亡。

2.##div[class$="ad"], ##div[class*="ad"]
誰もが通る道? class="head"で容易に誤爆死。

3.##div[class$="ads"], ##div[class*="ads"]
Appleのダウンロードページclass="downloads"が使われているため爆死。

4.##div[id^="ad_"], ##div[id*="ad_"]
CNETZDNETのdivで何故かid="ad_elu_hori"なる謎のIDが使われているため爆死。

5.ad.
ad.jpというドメインが存在するため死亡。

6..ad
www.adobe.comで死亡。

7.adv
adviceやadventureなども引っ掛かるため、使うなら非表示要素フィルタのidやclassでのみ使用すること。*/adv/*とかもアドベンチャーゲームを表す略記ADVで誤爆しやすい。

8.traking
日本郵便の郵便追跡サービス(http://tracking.post~)で爆死。

9.http://ecx.images-amazon.com/images/
アマゾンのアフィリエイト画像をブロックしたと思ったら、Amazonでの商品画像も一部消えてて爆死。一部の画像しか消えないので誤爆したことに気付き難い。http://images-jp.amazon.com/images/についても同上。

10.ホワイトリスト
フィルタ複雑化と重量化の元。絶対使うなとは言わないが、別に使わなくても誤爆のないフィルタは書ける。「zshare等のAdblock対策スクリプト」対策? んなもんほっとけ。ユーザがAdblockでWeb広告を拒否する権利がある代わり、プロバイダはWeb広告を拒否するユーザにコンテンツを見させない権利がある。

あとは言わずもがなだから数には入れてないけど、複雑な正規表現もよくない。Schuzak's Universal Filterなんかは悪い書き方の代表例。誰かが見ても何をブロックしているのかサッパリ解らない。製作者本人すら読めなくなることもしばしば。そうなると、メンテやカスタマイズ、アドバイスを誰もやらなくなってしまう。せめて、コメントで凡例を記しておくべき。

以上、フィルタリスト作りの参考になれば幸いです。

[おまけ]
1.mixiの広告をブロックしようと、"http://img.ads.mixi.jp/"、"http://n3.ads.mixi.jp/"をフィルタに書き加える
2.共通要素の"ads.mixi.jp"(もしくは"||ads.mixi.jp")でフィルタを置き換える
3."http://ads."をフィルタに加える
4."http://ads."があるなら"ads.mixi.jp"要らないんじゃね? と思ってフィルタを消す
5.あれー、mixiの広告ブロックできてないじゃん
6.以下(1)に戻ってループ

よくある話です(^^)