CoinhiveとWeb広告を切り替えてAdBlock対策すれば完璧という話

2018-06-14

Web開発

Webサイト上で、Coinhiveを訪問者の許可なく動作させたということで検挙されたことが話題になっていますね。
検挙された方がブログで過程と現状を綴られています。
とはいっても、CoinhiveはWeb広告を置き換える力を秘めているのは間違いありません。それをすぐに見捨ててしまっていいのでしょうか。

今回はそんなCoinhiveを活用して、アドセンス広告を置いている状態からさらに収益を上げる方法を提案したいと思います。
実際にテストしたどころか作ってすらいない構想の段階ですが、実装できるのは間違ありませんので最後までお付き合いください。

Coinhiveとは

Coinhiveを知らない方のためにご説明いたします。もう知ってるよという方は読み飛ばしてください。

Coinhiveは、ブラウザ上で動作する仮想通貨マイナーです。JavaScriptで動作し、Moneroという仮想通貨をマイニングします。
今までの場合はWebサイトの運営費を賄うため、Webサイトのデザインを損なってしまうのと引き換えにWeb広告を表示せざるを得ませんでした。

そこで、Web広告の代わりにCoinhiveを設置することで、訪問者のデバイスのCPUを使って仮想通貨をマイニングをすることができます。これによって収益を得られるという仕組みです。
最大CPUパワーのうちどの程度のパワーを使ってマイニングを行うかや、スクリプトを読み込んだら自動でマイニングを開始するかなどを細かく設定できるのも特徴です。

しかし、仮想通貨をマイニングするにはある程度のCPUパワーが必要なため、他のアプリケーションの動作が遅くなったり、バッテリーの消費が激しくなったりしてしまうという問題があります。
そのためCoinhiveを嫌う人が多く、ほとんどのセキュリティソフトでブロックされてしまいます。

さらに、Coinhiveを設置したとしてもその収益はGoogle Adsense広告の1/10以下だといわれて、あまりメリットがないというのが現状です。

アドセンス広告とCoinhiveの切り替え


さて、現在の日本ではCoinhiveを動作させるには利用者の許可を得ないといけないことが今回の事例によってわかりました。そのためにCoinhiveを動作させるという許可を求めるポップアップを出すようにしたとしましょう。
Webサイト側としては収益を得ることが目的であるため、訪問者に与えられる選択肢は「許可」と「離脱」の二つということになります。
これでは離脱率が高まってしまい、結果としてCoinhiveの導入には失敗したことになりますね。

では、訪問者に与える選択肢を「Coinhiveを動作」と「Web広告を表示」、そして「離脱」の三つに変更しましょう。
Coinhive嫌いな多くの訪問者は、読みたければWeb広告を表示させるはずです。
しかし、ポップアップが出ることによって離脱率が高まるというのは非常によく聞く話です。なぜなら、訪問者はポップアップが出ることを期待しておらず、邪魔だと感じてしまうからです。

そこで提案したいのが「アドセンス広告とCoinhiveの切り替え」です。
先の例と何が異なるかというと、デフォルトでアドセンス広告が出るようにします。
これによってポップアップをなくすことができますね。さらにもう一つ、Coinhiveの収益率の悪さを補うことができます。
Coinhiveに限定していることで非常に厄介な問題が複数出てくることは既に理解されていると思います。そのすべてを解決できるのが切り替えなのです。

動作の流れ

まず、訪問者が初めて自分のWebサイトを訪問したとします。
デフォルトでGoogle Adsenseの広告を設置し表示させます。
ここで、訪問者の目につくところ(例えばタイトル下のSNS共有ボタンの近くなど)に「広告を非表示 のようにトグルスイッチを置きます。
訪問者がもし広告を無視するような人だとしたら、広告は表示するだけ無駄ということになります。そんな人に向けて広告を非表示にするトグルスイッチを提供します。
トグルスイッチが押されると、「Coinhiveを動作させて広告を消す」旨のポップアップを表示し、動作の許可を促します。Coinhiveが嫌な人はポップアップを閉じるでしょう。
このポップアップによって、Coinhiveの動作について訪問者から許可を得ることができます。このオプションとして提案する流れが重要なのです。

ここでポイントとなるのは、自分の意志でポップアップを表示したためポップアップを閉じることに対するストレスは少ないということです。
自動で表示されるポップアップは自分の意思に反しているわけですから、閉じることを億劫に感じるのです。
トグルスイッチがいいと言いましたが、これはユーザーが気軽に押すことを促すためのもので、トグルスイッチを押すとポップアップが出るのは少し期待していた動作と異なります。UXを求めるのであれば、ボタンがいいでしょう。

「Coinhiveを動作する」が選択されたら、広告を全部消してCoinhiveを動かします。
もちろん、使用するリソースは少なめにしましょう。動作が重たいだとか、バッテリーの消費が早いだとか、熱が発生しているだとか、訪問者がわかるレベルでリソースを使うと離脱に繋がります

さて、もう一つ対応すべきものがあります。それはAdblockerです。Adblockerは広告を自動で排除するツールで、訪問者の多くが入れていることでしょう。
Adblockerを有効にしている訪問者は「広告を非表示 なんていうボタンは気にしません。広告は既に非表示なのですから当たり前ですね。
広告が表示されないのであれば、そこから収益が発生することはありません。

そこで、広告が非表示状態であることを検知したら、Coinhiveを有効化する旨のポップアップを表示します。
Coinhiveさえも嫌がるような訪問者はどちらにしろ収益が発生しないのですから、離脱しても構わない訪問者であると判断できます。SNS共有から広がることは考えられますが、ここで離脱するような訪問者は記事の内容に対して強い関心があるわけではなさそうですから、SNSで共有することはないでしょう。

これによって、今まで収益を上げられていなかったAdblocker使用者を、良心的で効果的な方法によって、収益化することができます。
収益モデルとしては最高峰なのではないでしょうか。
しかし、このままではいくつかの問題があります。実装の例と一緒に見ていきましょう。

広告とCoinhiveの切り替えの実装

Google Adsenseの広告をdisplay: nonevisibility: hiddenで隠すことは規約によって禁止されています。
さらに、Coinhiveのスクリプトコードcoinhive.min.jsをhead内でロードしただけで、セキュリティソフトが警告を出してきます。

これらに対応するため、Adsense広告であればAdsense広告だけを、CoinhiveであればCoinhiveだけを出力し、そうでないものは出力しないようにしましょう。
例えば、Cookieを使ってCoinhiveにするのかそれともAdsense広告にするのかを保存しておきます。設定されていなければAdsense広告を表示するようにします。
これはPHPで実装することができます。Cookieの使い方については別途お調べください。

Adblockの検知

Adblockの検知はJavaScriptを使って簡単に行うことができます。今回はjQueryでさわりだけ紹介します。


$(function () {
  if (!$('.adsbygoogle > ins').length) {
    $('#warn').text('Disable AdBlock')
  }
})

Googleから提供されるスクリプトにはadsbygoogleクラスが付いたins要素がくっついています。この中にさらにins要素が追加され、そこに広告を表示するiframeが置かれます。
ということは、.adsbygoogle > insが存在しているか否かを調べれば、AdBlockerが機能しているかどうかがわかります
その要素数が0であったらならばAdBlockerが機能しているため、モーダルウィンドウを表示してCoinhiveモードへ誘導します。
先ほど提示したソースコードでは、idにwarnを持つ要素の内部をDisable AdBlockというテキストに置き換えるという動作だけを行います。実際に試してみてください。

ここで注意しなければならないのは、adという文字列が入っているスクリプトファイルやDOM要素は全てAdBlockerによってブロックされてしまう可能性があることです。
スクリプトファイル名やモーダルウィンドウのIDは関係なさそうな単語を並べる必要があります。
これさえも非表示にされたら元も子もありませんからご注意ください。

また、モーダルウィンドウは閉じられるようにした方が良いでしょう。
というのも、CoinhiveもブロックするAdBlockerが出てきているようで、それを使っている訪問者はSNS共有する可能性があっても閲覧することができなくなってしまいます。
ここで離脱する訪問者はSNS共有しないでしょうけれど、記事を読みたい訪問者には記事を提供することがおすすめです。


少し実装は面倒ですが、Coinhiveを有効活用して、法律に引っかかることなく、収益を最大化することができます。
これはWebサイト制作者と訪問者のどちらにとっても有益であると思います。

Coinhiveに可能性を感じていたけれど今回の件であきらめていた方、このような形で再検討してみてはいかがでしょうか。