OXY NOTES

Adblock対策プラグイン「End of Adblock Cycle」を作成しました

WordPressでAdblockユーザーへ警告を表示したり、ユーザー数を把握することができます

AppleがCrystalを紹介して広告業界に激震が走ってから、はや2カ月が経ちました。
当サイトでも対策として「FuckAdBlockを利用して自由自在にAdblock対策をする方法」という記事を書きました。

Crystalはその後、広告事業者から金を受け取り普通に広告が表示されることになり、評価は地に落ちました。

しかし現在でもAdblock PlusuBlockといったプラグインが一定の人気を得ています。

対策のためのプラグイン作成依頼をいただいたので、今回「End of Adblock Cycle」というプラグインを作成しました。


End of Adblock Cycleの機能

End of Adblock Cycleの機能は大きく分けて2つです。

広告ブロックソフトが有効なユーザーに対して警告を行う

以下のように画像やメッセージを用いて警告を行います。
背景色で塗りつぶすことで広告ブロックソフトが有効な場合、サイトを閲覧できなくします。

広告ブロックソフトが有効なユーザーと、一般ユーザーをカウント

広告ブロックソフトを利用しているユーザーと、一般のユーザーをカウントすることができます。カウントのログは「設定 > End of Adblock Cycle」で見ることができます。

以前紹介したスパム対策のプラグイン「Simple AntiSpam」と同じように、グラフはamChartsを利用しました。

今回は割合がわかればいいので、ドーナツ状の円グラフのみです。
あまり活用する機会もないと思いますが、せっかく付いている機能なので、右上の矢印をクリックするとグラフをダウンロードできる機能も付けておきました。


End of Adblock Cycleの設定

使いやすさを重視して設定できる項目を絞りました。
(要望があったので、警告とカウントの有効・無効を選択できるようにしました。以前のバージョンからアップデートした方は再度設定してください。)

警告の設定

この項目にチェックを入れると、広告ブロックユーザーに対して警告を行います。

メッセージ

警告時に表示するメッセージです。
HTMLのタグが使用可能です。強調したい文字に色を付けたり、aタグを付けて別のサイトへ誘導したり、といったカスタマイズが可能です。

画像のURL

警告に使用する画像のURLを入力します。画像のURLはフルパスで入力してください。
画像を使わない場合は空欄にしておいてください。

塗りつぶしの背景色

ページを塗りつぶす色を入力します。色の指定はWebカラーで入力してください。(例:#FFF, #FFFFFF)

背景の透明度

塗りつぶしの背景色」に指定した色の透明度を指定します。入力は0~100の整数を入力してください。0が透明で、100が「塗りつぶしの背景色」で指定した純色になります。

カウントの設定

この項目にチェックを入れると、広告ブロックユーザーをカウントします。

サンプリングレート

サンプリングレートは、大量のアクセスがあるWebサイト向けの負荷対策です。

デフォルトでは全てのPVをカウントし、「1」をプラスします。
サンプリングレートを「10」にすると、10PV時にカウントし、「10」プラスされます。
(10人目を正確にカウントするわけではなく、1/10の確率でカウントします)

数字を増やせばサーバへの負荷は減りますが、正確性も損なわれます。ただ、広告をブロックしているユーザーの割合を調べるだけなら、全てのPVをカウントする必要はありません。

推奨値はサイトのPVによって変わりますが、10~100程度が現実的な数字だと思います。


End of Adblock Cycleの注意点

動作の正確性について

現状では「Adblock Plus」「uBlock」「Crystal」のユーザーはカウントできます。

またAdblockへの警告を行う「Anti Adblock」への対策として有名な「Anti Adblock Killer」や「Disable Anti-Adblock」などは対策をしたので警告、カウント共に問題なく動作します。

イタチごっこに巻き込まれないための対策もしたつもりですが、いつまで有効かは未知数です。

また、上記の対策のために、プラグインのjsフォルダへの読み込みと書き込みの権限が必要です。fuckadblock.jsへアクセスできず503エラーが出る場合は、権限のエラーが考えられます。レンタルサーバ等では読み込みしか許可していない場合はご利用になれません。

プラグイン等を利用してJavaScriptの圧縮や難読化を行っている場合も動作しないことがあります。全てのツールに対応するのは困難なので、サポート対象外とさせていただきます。

JavaScriptが必須

全ての動作にJavaScriptを利用しているので、JavaScriptが無効な環境では動作しません。
また、functions.php等でJavaScriptを呼び出している場合は、呼び出し順について注意してください。全てのjQuery Pluginに言えることですが、二重に呼び出してjQueryが後に呼び出されると正しく動作しません。

ページキャッシュを1日以上に設定している場合は注意が必要

カウントは悪意のある操作の対策としてWordPress Nonceを利用しています。
nonceの有効期間はデフォルトで1日なので、ページキャッシュやリバースプロキシ等で1日以上ページを保存している場合、正しくカウントできません。
ページキャッシュの期間を短くするか、nonceの有効期限を環境に合わせて設定してください。

nonceの有効期限を変更する場合は「WordPress Popular Postsでページビューがカウントされない場合に試す4つのこと」を参考にしてみてください。

また、headerにJavaScriptを追加し、ajaxを利用してカウントしているため、サンプリングレート等を変更した場合はページキャッシュも更新してください。


利用したライブラリやプラグイン

End of Adblock Cycleでは以下のライブラリやプラグインを利用しています。

この場を借りてお礼をさせていただきます。


プラグイン作成後記

当サイトでカウントしてみたところ、約12%のユーザーが何らかの広告ブロックソフトを利用していました。

角の立つ表現ですが、広告を非表示にする権利は閲覧者にありますが、広告を非表示にしたユーザーにコンテンツを提供しない権利はサイト製作者にあります。
それ以外の対策となるとサイトを有料制にすることくらいしか思い浮かびません。

2016年3月にアメリカの大手新聞社The New York Times(ニューヨーク・タイムズ)は無料ユーザーをブロックし、課金を促すページを表示するようになりました。この動きは他のニュースメディアでも広がっています。

サイト製作者と利用者の間で、広告によってサイトを維持するのか、寄付によって維持するのか、月額の課金制にするのか。どれがお互いにとって最適な形かは、議論の別れるところだと思います。

ともかく、このプラグインによって利用者・製作者がより良い関係を築くきっかけになれば幸いです。


広告の品質に関するご意見は、各広告配信サービスにお願いします。