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


投稿日:2015年11月14日
  • 2
  • 1
  • 10



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

eoac

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

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

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

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


End of Adblock Cycleの機能

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

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

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

eoac03

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

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

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

eoac02

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


End of Adblock Cycleの設定

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

eoac01

警告の設定

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

メッセージ

警告時に表示するメッセージです。
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%のユーザーが何らかの広告ブロックソフトを利用していました。

eoac05

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

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

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

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


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



現在のページを共有する



現在のページに関連する記事


おすすめの記事


いただいたコメントなど

  1. 匿名 のコメント:

    今のWeb広告ビジネスはマルウェア広告も当たり前の無法地帯です。
    システムが整備されてクリーンにならない限り、広告ブロッカーはアンチウイルスソフトとしての一面も持ちます。
    URLレピュテーション機能と何ら代わりありません。
    闇雲に広告ブロッカーを解除させようとする仕組みは、スパマーやクラッカーの手助けをすることです。

    広告ビジネスで儲けたいのであれば、広告ブロッカーのシグネチャに登録されないサービスを利用すればよいのです。
    貴方のアドオンはオレオレ証明書の警告を無視させる行為と何が違うのでしょうか。

    儲ればそれで良い、モラルなんて無いというのであれば、それは脱法ドラッグの販売とWeb広告ビジネス、全く同じ性質のものと言えます。

    貴方のポリシーで貴方のサイトに仕組みを加えるのは貴方の自由ですが、配布する行為は加害者になり得ることをお忘れなく。

    • oxy のコメント:

      貴重なご意見ありがとうございます。
      仰るとおり賛否あるのは前提のプラグインです。

      その上で、このプラグインには広告を表示する機能はありません。
      「広告を表示しないユーザーには、コンテンツを表示しない」という機能があるだけです。

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

  2. 匿名 のコメント:

    このプラグインを自分のサイトに導入して、自分のブラウザ(Firefox)で自分のサイトを開くと、アドブロックは使用していないにも関わらずアドブロック使用者向けの画面が表示されます。 このプラグインは、インストールしているだけで有効にしていないアドブロックにも反応するのでしょうか?

    • oxy のコメント:

      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 というプラグインを使用しています。

    • oxy のコメント:

      長らく起動していなかったWindows XPを起動して確認してみました。
      Firefoxのバージョン9.0.1と10.0.2で確認しましたが、どちらも正常に動作しています。(メニューのヘルプからFirefoxについてで表示されるバージョン)
      試しにChromeにもAdblockを入れて確認してみましたが、正常に動作しています。

      Adblock以外の機能拡張を停止して、再度試してみてください。

      また、プラグインとは関係ないことですが、XPのサポートは終了しています。実験的な使用を除いて、ご利用は辞めたほうが良いと思います。

  3. 匿名 のコメント:

    アドブロックを削除しても同じ結果でした。 そしてアドブロック以外にFirefoxのプラグインは使用していません。
    残念ですがEACの使用をあきらめます。

    • oxy のコメント:

      お手数おかけしました。
      私の環境では状況を再現できないので、検証できませんでした。
      残念です。

  4. 匿名 のコメント:

    開発ありがとうございます。
    先程インストールさせてもらいました。

    その際こういったメッセージが表示され、前半の英字部分はインストール時だけでなくプラグインの設定画面でも常に表示されるのですが
    (URL)
    これは何か設定などを変えたほうが良いのでしょうか?
    長文すぎたのか投稿できなかったためテキストファイルにしました。

    詳しい知識がなく、自力で対処することが出来ません。
    お手すきであれば助言をいただけると助かります。

    • oxy のコメント:

      ご利用ありがとうございます。
      当該エラーですが、サーバ側でfile_get_contents()という関数が使えない設定になっている場合に表示されます。
      php.iniの設定をallow_url_fopen = Offからonに設定すると解決します。
      ただ、レンタルサーバなどでは設定を変更することは難しいと思います。

      そこで別の関数で代用したバージョン1.3をアップロードしました。
      よかったらアップデートして再度設定してみてください。

  5. 匿名 のコメント:

    「警告を閉じる」ボタンを表示する、また、そのボタンに書いてある文章を自由に設定できる機能、のようなものがあればよかったのですが・・・自分でプラグインを編集して頑張ります。

    • oxy のコメント:

      このプラグインは「BlockUI」を利用しています。
      詳しい使い方はリンク先をご覧ください。

      解除ボタンですが、とりあえずサンプルとして、プラグインのメッセージの欄に以下のようにクラスを指定して

      <p class="unblock">ブロックを解除する</p>
      

      WordPressのheader部分に以下のjavaScriptを記述します。

      <script type="text/javascript">
      jQuery(function($){
          $('.unblock').click(function(){
              $.unblockUI();
          });
      });
      </script>
      

      すると、「ブロックを解除する」という要素をクリックすると解除することが可能です。
      他の方からも要望があれば機能として実装するかもしれません。

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。