AdSense配置ページをCDN配信すると収益が減るのか?

はじめに

Google先生で検索していたらなんとも不穏な検索結果が出てきたので、情報の真偽について考えてみます。見つけたのは、次の記事です。

当ブログでは、CloudflareとAdSenseを共に利用しています。上記の記事内容が正しいとすれば、大きな問題となります。

問題の本質はなにか?

最大の問題は、「GoogleAdSenseの収益が減ること」です。ではなぜ減るのか、それはCloudflareから「元の訪問者IPがサーバーに返されていない」ためです。なので、元の訪問者IPアドレスをGoogleAdSenseが取得できれば問題ないと考えて良いでしょう。

※GoogleAdSenseは、元の訪問者IPアドレスなどを利用してユーザーに合わせた広告を配信することで、収益を上昇させていると考えられています


ここで、「元の訪問者IPがサーバーに返されていない」ことは事実でしょう。次のページで「X-Forwarded-For」および「CF-Connecting-IP」ヘッダーに元の訪問者IPアドレスを含めると記載されています。元IPアドレスは、Cloudflareのものに置き換えられてしまっています。

GoogleAdSenseは元の訪問者IPを取得できるのか?

GoogleAdSenseが元の訪問者IPアドレスを取得する方法について考えます。まず、GoogleAdSenseはJavaScriptで書かれたスクリプトをページに読み込むため、JavaScriptでのIPアドレス取得について考えます。

これは不可能です。なぜなら、JavaScriptからIPアドレス取得する方法はありません。


次に思いつくのは、サーバーへのアクセス時です。GoogleAdSenseのスクリプトを読み込むため、もしくはスクリプトでサーバーとの通信処理を実施した際に、サーバー側でのIPアドレス取得について考えます。

こちらは、可能でしょう。サーバーへのリクエスト元の訪問者IPアドレスをGoogleAdSenseが正常に取得できていれば問題ありません。

では、サーバーへのリクエスト元の訪問者IPアドレスを正常に取得できるのでしょうか?結論から言えば、正常に取得できると考えます。なぜならば、ユーザーのブラウザ上から読み込まれるスクリプトのドメインは、googleadservices.comだからです。当ブログのドメインであるwww.bugbugnow.netではありません。

ここで重要なのは、Cloudflare(CDN)がどのドメインに対して有効なのかです。もちろん、当ブログのドメインであるwww.bugbugnow.netだけです。Cloudflareは、googleadservices.comをキャッシュしていません。googleadservices.comへのアクセスは、Cloudflareを経由せずにおこなわれるため、元の訪問者IPはGoogleAdSenseに正常に渡されると考えられます。

まとめ

GoogleAdSenseを利用しているページをCDNでキャッシュしても「元の訪問者IP」による原因で広告収益さがると言うことは考えにくいです。(※上記の考察の中に漏れや間違いがある場合は、その範囲ではありません)

実際のところ、1か月程度CloudflareとGoogleAdSenseを併用していますが、特段収益が悪化したようには感じていません。(悪化するほどの収益がそもそも存在しなかった可能性もあります)

補足

ただし、Cloudflareの「Rocket Loader」は別です。Rocket Loaderは、外部スクリプトをCloudflare経由で取得するため、「リクエスト元の訪問者IPアドレス」を外部サーバー(GoogleAdSense)に渡している保証はありません。

参考