WordPressでAdblockユーザーへ警告を表示したり、ユーザー数を把握することができます
AppleがCrystalを紹介して広告業界に激震が走ってから、はや2カ月が経ちました。
当サイトでも対策として「FuckAdBlockを利用して自由自在にAdblock対策をする方法」という記事を書きました。
Crystalはその後、広告事業者から金を受け取り普通に広告が表示されることになり、評価は地に落ちました。
しかし現在でもAdblock PlusやuBlockといったプラグインが一定の人気を得ています。
対策のためのプラグイン作成依頼をいただいたので、今回「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(ニューヨーク・タイムズ)は無料ユーザーをブロックし、課金を促すページを表示するようになりました。この動きは他のニュースメディアでも広がっています。
サイト製作者と利用者の間で、広告によってサイトを維持するのか、寄付によって維持するのか、月額の課金制にするのか。どれがお互いにとって最適な形かは、議論の別れるところだと思います。
ともかく、このプラグインによって利用者・製作者がより良い関係を築くきっかけになれば幸いです。
広告の品質に関するご意見は、各広告配信サービスにお願いします。
今のWeb広告ビジネスはマルウェア広告も当たり前の無法地帯です。
システムが整備されてクリーンにならない限り、広告ブロッカーはアンチウイルスソフトとしての一面も持ちます。
URLレピュテーション機能と何ら代わりありません。
闇雲に広告ブロッカーを解除させようとする仕組みは、スパマーやクラッカーの手助けをすることです。
広告ビジネスで儲けたいのであれば、広告ブロッカーのシグネチャに登録されないサービスを利用すればよいのです。
貴方のアドオンはオレオレ証明書の警告を無視させる行為と何が違うのでしょうか。
儲ればそれで良い、モラルなんて無いというのであれば、それは脱法ドラッグの販売とWeb広告ビジネス、全く同じ性質のものと言えます。
貴方のポリシーで貴方のサイトに仕組みを加えるのは貴方の自由ですが、配布する行為は加害者になり得ることをお忘れなく。
貴重なご意見ありがとうございます。
仰るとおり賛否あるのは前提のプラグインです。
その上で、このプラグインには広告を表示する機能はありません。
「広告を表示しないユーザーには、コンテンツを表示しない」という機能があるだけです。
広告の品質に関するご意見は、各広告配信サービスにお願いします。
このプラグインを自分のサイトに導入して、自分のブラウザ(Firefox)で自分のサイトを開くと、アドブロックは使用していないにも関わらずアドブロック使用者向けの画面が表示されます。 このプラグインは、インストールしているだけで有効にしていないアドブロックにも反応するのでしょうか?
Adblockだけでなく、ublock、Crystalなどのソフトに反応するようになってます。
ただ、広告をブロックしないと反応しないはずです。
良かったらサイトやブラウザなどの環境も教えていただけたら検証してみます。
サイト名は公表したくないのですが、ブラウザはFirefox 35.0.1でOSはWindows XPです。
ublock や Crystal などは使ったことがありません。
・Adblock をFirefox からアンインストールしてもEACは作動しました。
・Adblock Notify というプラグインもインストールしています。 EAC使用時は無効化していました。
・WPのバージョンは4.4.1(日本語版はまだ4.4.1にしていない)です。
・WPのテーマは Twenty Twelveですが、場当たり的に調べたノウハウだけで滅茶苦茶にいじりまくっています。
・参考になるかどうかわかりませんが、Check Copy Contents というプラグインを使用しています。
長らく起動していなかったWindows XPを起動して確認してみました。
Firefoxのバージョン9.0.1と10.0.2で確認しましたが、どちらも正常に動作しています。(メニューのヘルプからFirefoxについてで表示されるバージョン)
試しにChromeにもAdblockを入れて確認してみましたが、正常に動作しています。
Adblock以外の機能拡張を停止して、再度試してみてください。
また、プラグインとは関係ないことですが、XPのサポートは終了しています。実験的な使用を除いて、ご利用は辞めたほうが良いと思います。
アドブロックを削除しても同じ結果でした。 そしてアドブロック以外にFirefoxのプラグインは使用していません。
残念ですがEACの使用をあきらめます。
お手数おかけしました。
私の環境では状況を再現できないので、検証できませんでした。
残念です。
開発ありがとうございます。
先程インストールさせてもらいました。
その際こういったメッセージが表示され、前半の英字部分はインストール時だけでなくプラグインの設定画面でも常に表示されるのですが
(URL)
これは何か設定などを変えたほうが良いのでしょうか?
長文すぎたのか投稿できなかったためテキストファイルにしました。
詳しい知識がなく、自力で対処することが出来ません。
お手すきであれば助言をいただけると助かります。
ご利用ありがとうございます。
当該エラーですが、サーバ側でfile_get_contents()という関数が使えない設定になっている場合に表示されます。
php.iniの設定をallow_url_fopen = Offからonに設定すると解決します。
ただ、レンタルサーバなどでは設定を変更することは難しいと思います。
そこで別の関数で代用したバージョン1.3をアップロードしました。
よかったらアップデートして再度設定してみてください。
「警告を閉じる」ボタンを表示する、また、そのボタンに書いてある文章を自由に設定できる機能、のようなものがあればよかったのですが・・・自分でプラグインを編集して頑張ります。
このプラグインは「BlockUI」を利用しています。
詳しい使い方はリンク先をご覧ください。
解除ボタンですが、とりあえずサンプルとして、プラグインのメッセージの欄に以下のようにクラスを指定して
WordPressのheader部分に以下のjavaScriptを記述します。
すると、「ブロックを解除する」という要素をクリックすると解除することが可能です。
他の方からも要望があれば機能として実装するかもしれません。
開発ありがとうございます。こちらのプラグインは「280blocker」に対応することは技術的に可能でしょうか?
ご要望ありがとうございます。
浅学のため「280blocker」というソフトを初めて知りました。そのため可能かどうかお答えできません。
もし普及した場合は対応するかもしれません。
返信ありがとうございます。「280blocker」はiPhone向けに配信されているコンテンツブロッカーアプリです。こちらのプラグインでは「Crystal」にも対応しているようなので、もし可能であれば開発・対応して頂いたら有り難いです。
私が個人的にAndroidを利用してるという理由で、なかなか対応が難しい状況です。
要望が多いようなら対応します。
ほぼ確実にクリックしてしまうポジションに出てくる広告や、R18広告、マルウェアやウィルスなどメインのコンテンツを妨害している広告が蔓延してる環境でこういったものを出すのは少し浅はかだと思います。広告で成り立っているサイトやブログも多いのは知っています。ですが広告の出し方や内容を精査していない以上、保身のためにBlockソフトを使用をやむを得ない状況です。いずれBlockソフト側もこういったアドオンやプラグインの対策をすると思います。今現在お互いに違法性がないので鼬ごっこになると思います。
確かに広告に関する包括的な取り決めが必要な時期に来ているのかもしれません。
私個人の意見としては、一部に迷惑な広告を表示するサイトがあるからといって、すべてのサイトで広告を廃止するべきだという主張は、少し性急過ぎると思います。