ウェブページ上の広告は確かにウザかったりもする。だから、それを非表示にしたい気持ちも解るのだけれど、つくる側としては「せめてサーバ代くらいは稼がせてくださいよ…」というのが本音でもある訳です。
先日、以下のようなニュース記事を見かけたのだけれど、
要は、AdBlockなどの機能拡張を有効にしているユーザに対してはコンテンツを表示しない。タダ見は許さんぜよ、という態度を表明したわけです。気持ちは解る。大手サイトでは広告ブロックの影響が無視できないレベルに来つつあるのかもしれないですな。
AdBlockなどはどのようにして広告をブロックしているのかというと、その仕組みは割とシンプルで、
- ブラックリストに登録されたサイト(広告配信サイト)からのデータを読み込まない。
- "advertisement.js" などの "広告表示スクリプト" っぽい名前のファイルを読み込まない。
- "adspace" などの "広告表示領域" っぽいクラス名が付けられた要素を非表示にする。
…と、こんな具合。
なので、単純に「広告ブロック機能をアクティブにしているユーザに対してコンテンツを見せない」ようにするには、その機能を逆手に取って、
- コンテンツ全体を "adspace" などの "広告表示領域" っぽいクラス名が付けられた要素で囲む。
と、これだけで実現できたりします。
さて前置きが長くなりましたが、本題は、うちのサイトでも広告ブロックをブロックする必要があるのかどうか…ということ。
まずは「AdBlockユーザがどのくらい居るのか」を把握するために、簡単なカウンタを設置してみます。
いくつかのファイルを作成。
- all.txt - すべてのページアクセス数を保存するファイル|初期値として "0" を入れておく。
"0" の後に改行は入れない。ファイルパーミッションは 666 にして、読み書き可な場所に置いておく。
- unblocked.txt - Adblockされなかったアクセス数を保存するファイル|初期値として "0" を入れておく。
"0" の後に改行は入れない。ファイルパーミッションは 666。
- allaccess.php - すべてのページアクセス数を捕捉する。
<?php
// allaccess.php
$file = 'PATH_TO_FILE/all.txt'; //
$c = file_get_contents($file);
$c++;
file_put_contents($file,$c);
?> - advertisement.js.php - Adblockされなかったアクセス数を捕捉する。
<?php
// advertisement.js.php
$file = 'PATH_TO_FILE/unblocked.txt'; //
$c = file_get_contents($file);
$c++;
file_put_contents($file,$c);
?>
で、ページから allaccess.php と advertisement.js.php を scriptタグで呼び出す。
- <head> 〜 </head> 内に以下を記述。
<script src="PATH_TO_SCRIPT/advertisement.js.php"></script>
<script src="PATH_TO_SCRIPT/allaccess.php"></script>
ふたつのPHPスクリプトは、呼び出される度にカウンタの数値を +1 します。
ただし AdBlock が有効ならば advertisement.js.php はブラウザ側でブロックされるので、その場合 unblocked.txt の数値は増えません。
ということで、allaccess.txt に保存されている数値と unblocked.txt の数値との差分を取れば、広告ブロック機能を有効にしてアクセスしてきたユーザ数がわかる…という仕組み。
これで広告を非表示にしているユーザの割合を把握して、対策すべきかどうか考えてみる。
コメント