【広告非表示】Adblock Plus はクラス名だけで消せるか実験してみた
Adblock Plus などの広告非表示系のプラグインやアプリがクラス名だけで消せると言う噂を、某2ちゃんねるで見た。
それを見た時は (ヾノ ・∀・`)ナイナイ と思ったが、本当かどうか念の為に調べてみることにした。
Google検索をしてみたところ、一部の広告非表示系のプラグインやアプリやアドオンは、本当にクラス名にそれっぽいのを付けるだけで対策できるようだった。
広告非表示系のアドオンやプラグインが広告を消す仕組み
広告非表示系のアドオンやプラグインは、広告に使われているJavaScriptファイルやCSSのクラス名などを見て、その要素を消すかどうか判断しているようだ。
ちなみに、広告非表示系のiPhoneのアプリの Crystal でも、同様のやり方でその要素を消すかどうか判断しているようだ。
(2016年6月現在)
恐らくだが、JSファイルのファイル名やクラス名を見てその要素を消すかどうか判断した後、ブラウザプラグインやアドオンの方で、強制的に特定のCSSのクラス名を display:none; したり、読み込まないようにしてしまうことで、非表示にしているようだ。
当初、JavaScriptファイルかどうかくらいは判断しているのだろうと思ったら、そんな複雑なことは特にしていないらしく、adsbygoogle.js と言うファイル名の入っている要素を非表示にする場合、adsbygoogle だけ判断して非表示化してしまっているらしい。
(だから、adsbygoogleと言うクラス名さえつけてしまえばOK)
なので、クラス名にそれを入れてしまえば、そのクラス名を割り当てられたタグ内のものは、尽く非表示化されてしまうと言うわけだ。
(もっと複雑なのかと思ったら。( ̄m ̄))
通常の仕組み
広告非表示系のソフト
<script async src="adsbygoogle.js"></script> の Scriptファイルの adsbygoogle と言うファイル名に反応する
↓
広告非表示系のソフト
消さなきゃ!消さなきゃ!ヽ(´Д`;)ノ
↓
広告非表示系のソフト
<script async src="adsbygoogle.js"></script>を全部非表示化する!(`・∀・´)
↓
閲覧中のユーザー
よし!(`・∀・´)
誤反応した時の仕組み
広告非表示系のソフト
<div class="adsbygoogle"></div>のクラス名のadsbygoogleに反応
↓
広告非表示系のソフト
消さなきゃ!消さなきゃ!ヽ(´Д`;)ノ
↓
広告非表示系のソフト
<div class="adsbygoogle"></div>を全部非表示化する!(`・ω・´)
↓
閲覧中のユーザー
え?(´゚д゚`)
なので、これを利用すると、アンチアドブロックのようなスクリプトを使わずとも、簡単にアンチAdblockできてしまうというわけだ。
もちろん、何を消すかをちゃんと判断して広告を消しているソフトもあるようで(有料ソフトでそう言うのがあるっぽい)、この手の対策法が効かない場合も存在する。
ただ、少なくとも無料でインストールでき、多くの人が利用している Adblock plus や、iOS で利用できる Crystal のような広告非表示ソフトは、これで消せてしまうようだ。
なので、2016年6月現在はこの程度の対応で十分だったりする。
(Scriptファイルかどうかなどをしっかり見るようになれば、別の方法が必要になるかもしれない)
スクリプトで対処するか、クラス名で対処するか
CSSのクラス名で対処している場合、Adblockを入れている方々が自分らで勝手に非表示にしているだけであり、スクリプトを作動させてAdblockを入れているユーザーを非表示にしているわけではないので、処理が重くないのが一番のメリット。
(↑これ重要)
元々が低価格のキツキツのサーバーなのに、さらにScriptで動く Adblock 対策用のプログラムを走らせるとなると、結構大変なことになると思うので、この方法で勝手に非表示化してくれていると、サイトオーナーの方としても嬉しい。
この他、アンチアドブロックなどのネットで拾ってきた 『 安全性が確実でない 』 とか 『 セキュリティに穴があるかどうかの判別がつかない 』 ようなスクリプトをむやみに表示するのは危ないと思うので、クラス名で対処できるのであれば、できるだけクラス名で対処する方が良いように思う。
どのようにクラス名に突っ込むか
<body> 直下から </body> 直前までに以下のクラス名の<div>タグを突っ込めば、ページの全部が消える。
何もしていない場合
ページ全部を真っ白けにする
<body>
<div class="ad"><div class="ads-area"><div class="img_ad"><div class="ad_image"><div class="adsbygoogle">
<!-- 消える部分 -->
ヘッダー
本文本文本文本文本文本文本文
サイドバー
フッター
<!-- 消える部分 -->
</div></div></div></div></div><!-- ad|ads-area|img_ad|ad_image|adsbygoogle終了 -->
</body>
本文部分だけ真っ白けにする
<body>
<head></head>
ヘッダー
<div class="ad"><div class="ads-area"><div class="img_ad"><div class="ad_image"><div class="adsbygoogle">
<!-- 消える部分 -->
本文本文本文本文本文本文本文
<!-- 消える部分 -->
</div></div></div></div></div><!-- ad|ads-area|img_ad|ad_image|adsbygoogle終了 -->
サイドバー
フッター
</body>
本文の一部だけ真っ白けにする
<body>
<head></head>
ヘッダー
本文本文本文
<div class="ad"><div class="ads-area"><div class="img_ad"><div class="ad_image"><div class="adsbygoogle">
<!-- 消える部分 -->
本文本文
<!-- 消える部分 -->
</div></div></div></div></div><!-- ad|ads-area|img_ad|ad_image|adsbygoogle終了 -->
本文本文本文
サイドバー
フッター
</body>
どれでもいいとは思うが、クラス名に反応して消すアドオンやプラグインやアプリの場合、特定のクラス名で囲われると、その範囲内が綺麗さっぱり非表示にされてしまうため、『 ページ全部が真っ白け 』 だと 『 何かのエラー 』 に見えてしまう。
また、『 本文の一部だけ非表示 』 だと、『 元々書かれていないもの 』 と思われてしまう可能性があるので注意が必要かもしれない。
なので、非表示化された場合には、すぐ目につくところに 『 広告を非表示にするアプリ・プラグイン・アドオンなどを入れている場合、正常に表示されない可能性があります 』 などの文言を入れておくとよいと思う。
やるべきかやらざるべきか
広告非表示系のアプリやアドオンやプラグインに対するこう言った対策をやるべきかやらざるべきかと言う話になると、やるべき、やらざるべきと言う話でもめやすい。
収入が低い中で低予算のサーバーを借りて、なんとかサイトやブログ運営している中で、無料で、何も収益を生み出さない人から閲覧されても困ると言う場合もあるだろう。
さりとて、そう言う収益を生み出さない人がSNSやブックマークなどで自分の情報拡散の手助けをしてくれる可能性もあるし、Amazonアソシエイトなどから物品を購入してくれるかもしれない。
私は、個々の事情や思惑があるのでどっちがどうとは言えない、如何とも言いがたいのが事実なのだと思う。
私は一応 <div> のクラス名に Adblock がビンビン反応するクラス名を入れているが、あまり深くは考えていないので、そのうち止めてしてしまうかもしれない。
(テンプレートを一部書き換えるだけなので、変更するにしてもそんなに時間はかからない)
そのようなわけで、サイトを訪れる人々の様子と反応を観察しながら、ウェブマスターのみなさんが、ご自分の好きなようにやって、ダメなら元に戻すなりすればいいと思う。
(そんなに深刻にならずに、気楽に試行錯誤しよう)
広告