なげやりろぐ

フテイキコウシン

 ページ内の広告を非表示にするアレコレ


いろんな方のブログを閲覧して回っているとよく目につくのがページ内に設置されたアフェリエイト関連のアレ。


ブログの管理者がレイアウトを吟味して上手い具合に見せてくれているならさほど気にはならないわけです。
・・・んがしかし!! (笑)


故意なのかよくわからずにやってしまっているのかは不明ですが、エントリーの本文の途中にナンの脈絡もなく突然現れたりすると(`皿´)ウゼーことこの上ないわけでして・・・
ていうか途中にそんなの突っ込むなよと小一時間(ry


中でも気になるのがads by google
多少は関連性のあるモノを表示してくれているようですが邪魔なことにはかわりがないワケですね〜。
どうせ見たくないモノだしどこを訪れても一括で非表示に出来るようにとつい最近までhostsファイルを直接弄って参照先を変更していました。
この方法は簡単で効果てきめんなんですが、セキュリティソフトによってはhostsファイルの書き換えを監視しているモノがあったりして万人向けではないかなと。
ちなみにやり方を簡単に記しておくとXPの場合はWINDOWS\system32\drivers\etcフォルダにhostsファイルがあるのでテキストエディタで開いて以下のように本来DNSで名前解決されるところをローカルPCそのものを参照させてしまうというもの。

  • たとえばGoogle AdSenseを表示させたくないときはhostsにこんな感じで記述。
127.0.0.1 pagead2.googlesyndication.com

こうしておくとpagead2.googlesyndication.comがブラウザで表示されるときにDNSサーバよりhostsの内容が優先されるので自分のPCそのものを参照しちゃうことになるわけですね。
この方法は一般的ではありませんが、HostsEditのようなアプリを使うことで気軽に試せるかも。


ちなみにhostsの編集後はブラウザを再起動させないと反映されません。


個別にCSSを指定できるなら・・・


hosts弄る以前はオミトロン使って排除していましたが、Sleipnirだけで完結できれば管理もラクだしこの上ないわけで、ポップアップブロック以外にもナニか気の利いた広告ブロック・もしくは非表示機能をつけてくれないだろうかと思っていたのですが、つい最近スタイルシートをサイト別に適用可能なUserStyleSeet.user.jsというすばらしいスクリプトが公開されたこともあり、オミトロンjavaScriptなどに頼らずともCSSを利用して不要な要素を非表示にさせることが出来るようになりました。
このスクリプトの利用法と応用に関してはXeno(,,・`ω・)さんとこのこことかここが参考になります。


で、ワタシ的に本来の目的であるCSSを使った広告の非表示なのですが、たとえば先に取り上げたGoogle AdSenseを表示させないだけならばabout:cssconfigのURL欄にwild cardでhttp://*を指定し、CSSファイルをドロップダウンメニューの新規作成からエディタ画面を出して以下のように記述し登録するだけです。

iframe[src*="googlesyndication.com"] {
	display: none !important;
}

こうすることでads by googleの部分は非表示になりますが、サイト側のレイアウトによっては見た目が著しく崩れてしまう場合があります。
そういう崩れが気になる場合は上記のwild cardを使用せずに個別のURLを指定してドメイン以降にwild cardを使い、display: noneの部分をvisibility: hiddenに変更し、消すのではなく見えなくするという方法で回避可能です。
同様の方法で他の広告でも消せるモノがあります。

  • たとえば楽天のバナー広告だとこんな感じ。
iframe[src*="dynamic.rakuten.co.jp"] {
	display: none !important;
}


個別のリンクや画像を消したい場合にも以下のようにすればOK。

  • 画像やリンク先を決めうちで非表示にする。
/* イメージサイズが固定されているモノにたいして有効 */
[src][width="728"][height="90"] {
	display: none !important;
}


/* イメージのファイル名決め打ちで非表示 */
img[src*="exsample.org/blog/images/exsample.gif"]{
	display: none !important;
}


/* リンク先のドメイン決め打ちで非表示 */
a[href*="www.exsample.com"]{
	display: none !important;
}


これらを組み合わせていくつかのパターンを作っておけばたいていの広告は非表示に出来るようです。
Flashの広告にもちょっとした応用で有効になりますので結構使えるのではナイかなと。


いや、それにしてもホントに便利なスクリプトを公開してくれたあの御方*1に感謝・感謝!

*1:まんず ◆maNZRIy.Xk