広告プラグイン「Cordova Admob」が収益の30%を盗んでいたという報告

Levan Kvirkvelia氏は5年前にCharles ProxyというHTTPデバッガーを使ってアプリのデバッグ作業をしていた際に奇妙なリクエストを発見。詳しく調査したところ、利用していた広告プラグイン「Cordova Admob」に収益の30%が取られていたことが分かったそうです。

An ad plugin was stealing 30% of the revenue for a year and I didn’t even notice
https://kvirkvelia.com/ads-plugin-steals-30-of-your-money/

Kvirkvelia氏が発見した奇妙なリクエストは以下。

このリクエストを見たKvirkvelia氏は、リクエストの中にあるIDがGoogleの広告ユニットIDに見えることから、「アプリが未知のサーバーにリクエストを送信し、広告収益を誰が受け取ったかを判断するための識別子を受け取っていた」ことに気づきました。

当時Kvirkvelia氏が運営していたアプリはHTML5モバイルアプリを作るためのフレームワークであるCordova(Ionic)上に構築されており、CordovaではJavaScriptを介してiOSやAndroidAPIに直接アクセスすることができないため、アプリに広告を表示させるために「Cordova AdmobPro」というプラグインを入れていました。そして、このプラグインが前述のリクエストを送っていることが分かったそうです。

そこでKvirkvelia氏がCordova AdmobProの規約を確認したところ、「1000ドル以上の収益を得ているのであれば、20ドルの商用ライセンスを購入するか、支払わなくて良い代わりに2%の広告トラフィックを共有してください」という記述を発見。

Kvirkvelia氏はこの規約を確認しておらず、2%の広告トラフィックをプラグインの作成者と共有していることもその時に知ったそうですが、「商用ライセンスを購入していないから、このリクエストで広告トラフィックが共有されているんだな」と奇妙なリクエストが送られている原因が分かったことで一度は落ち着きました。

しかし、Kvirkvelia氏は「リクエストの中にあった『r』の値は広告トラフィックの共有率なのではないか?」という仮説を立てており、APIリクエストのアプリIDプロパティをランダムなものに変更して「r」の値をゼロに設定してみたところ、実際には2%ではなく30%も広告トラフィックが共有されていたことが分かったそうです。

Kvirkvelia氏がプラグインの作成者へ「収益の30%が奪われている」旨を連絡したところ、プラグインの作成者から以下のような返信がありました。

「あなたのアプリは高い料率が適用されるブラックリストの中にあります。通常、偽のライセンスキーを使っている、異常なリクエストを送っているといった場合に、クラックを防ぐためにアプリがブラックリストに登録されます。今手動でブラックリストから外したので、現在は通常の料率に戻っています。あなたが落ち着いて誠実に対応していただけるのであれば、返金にも応じます。

始めに明確にしないといけないのは、『盗む』という言葉は絶対的に間違っているということです。ライセンス条項に『1000ドル以上収益化している場合は有効なライセンスを適用するか、広告を共有する』と記載していますし、あなたが私のコードをアプリで使用しているということは、この条項に同意したということです。

そして、広告の共有率に関するあなたの推測も間違っており、新しいアプリの広告共有率は2%ではなく0%から始まります。収益が1000ドルを超えたことをシステムが検知し、その時にライセンスキーが有効になっていない場合、2%の広告共有が始まります。しかし、異常なリクエストを検知すると、広告の共有率が少しずつ上がり、最大で30%まで上がります」

この返信を見たKvirkvelia氏は、プラグインのリクエストを変更できるのならそれを削除するだけだが、プラグインを変更できないならサーバーでライセンスキーが検証されるので不正行為を行う方法はないということで、この返信内容を全くのうそであるとしました。

メールには「いつからブラックリストに登録されているかを調べてこれまでにシェアされた収益額を確かめるために、今日までの収益グラフを送って下さい」というものがあったため、Kvirkvelia氏は以下のグラフを送付。

すると、プラグインの作成者からは、「2017年の収益のピークは2016年未満です。おそらく、実際のユーザーが少ないか、広告の共有が原因です。 約2/3になっていて、これは2017年のある日からの広告共有率の上昇が原因だと推測できます。あなたの2017年の収益は4371.80ドルなので、最大で1873ドルまで共有したと推定されます。『収益が1000ドルを超えているがライセンスを購入しなかった』『サーバーを意図的にハッキングしようとしなかった』という点を考慮し、1873ドルの一部をPayPalを通して返金することができます。妥当だと思う金額はいくらですか?」といった内容の返信がありました。

Kvirkvelia氏は、これを「非常に分かりやすくもっともらしい説明」だとしつつも、このような収益の低下はロシアでは日常的であるとして、「実際にブラックリストに登録された日」を調べるため、広告データとは無関係かつ相関性の高いデータを見つけて、その相関がいつなくなったかを調べることにしました。

そしてKvirkvelia氏が作った式が以下。

広告のインプレッション数=セッション数×平均セッション継続時間×広告表示時間

Kvirkvelia氏のアプリの平均セッション継続時間は常に約3分で、広告表示時間が一定で1分に相当することから、上の式を簡略化し以下の式を導き出しました。

セッション数× 3 =広告のインプレッション数

Kvirkvelia氏はこの「3」という定数部分を「factor」とし、各月のセッション数と広告のインプレッション数からfactorを算出し、各月の「factor」がどれだけ「3」と離れているかを見ることで、いつから広告が共有されていたかを確認することにします。

その結果が以下。

日付セッション数広告のインプレッション数factor
2016年9月12日24000550002.2
2016年9月20日37000920002.4
2016年10月10日570001200002.1
2016年10月11日620001310002.1
2016年10月20日700001470002.1
2016年2月13日840001830002.1

Kvirkvelia氏は「3と2.1はかけ離れている。そして、興味深いことに3から正確に30%引いた値であり、私が1年間収益の30%を失っていて、それに気づかなかったことの確かな証拠です」として、この証拠を送ることで、プラグインの作成者から4000ドルを送ってもらったとのことです。

今回のケースは広告を掲載するメディア側の話ですが、バナー広告などのデジタル広告にはこういった分かりにくい規約や、パッと見ではよく分からないデータがつきまとい、日頃からデータに触れていないと「結果がいまいちだけど、原因が分からない……」ということになりかねません。また、その原因を調査するだけでも多くの時間を必要とします。

対して、発注するだけであとは記事作成のプロが記事を作成する記事広告であれば、掲載後には明確なデータに基づいた分かりやすいレポートが届き、その後の戦略にも役立てることができます。

記事広告の特長・目的・デメリット・メリットについて徹底的に解説 | GIGAZINE.BIZ

以下の記事広告媒体資料のパスワードを入手するにはここをクリック


分かりづらい広告・アドテク・マーケティング用語の解説ページはここから