AdSense広告をブログやWebサイトに挟んでおられる方なら、一度くらいはGoogleから無効なクリックを検出したので広告配信を制限するとか停止するといった通知を受けたことがあるのではないでしょうか?筆者も警告を受けましたので、そもそも無効なクリックをできるだけさせない方法をお教えします。完璧に守る方法はないこともしっておいてください。
対策の結論
話は簡単で短時間のうちに複数回クリックされるようなユーザーに対しては一定期間広告を表示させなれば良いのです。
意図的にクリックしない
・自分でクリックしない
・家族にもクリック厳禁を申し渡す(できればAdBlockなどを入れる)
・友人や知人にはサイトを教えない(教える相手を厳選する)
まずは人的対策が基本です。
対策プラグイン(AICP)を使う
WordPress限定ですが、AdSense Invalid Click Protector (AICP) というプラグインがあり、設定した時間内に設定した回数以上の広告クリックが発生すると設定した期間内はそのクライアントに対しては広告を表示しないという便利ツール、神様ツールがありますのでこれを使います。
ただし使う上での注意事項があります(後述)。
自動広告は使わない
Googleは仕切りに自動広告を進めてきますが、AdSense Invalid Click Protector (AICP) では自動広告の無効クリックは阻止できません。
また、自動広告は時にとんでもない場所にとんでもなく馬鹿でかい広告を出してきて、訪問者の早期離脱に寄与しかねないので、この際ですから自動広告はやめてしまいましょう。
ブログの主役は記事でありまして広告ではありません。
当サイトも一時期自動広告を入れていましたが今はやめました。はっきりした効果が見えないのと自分で見てあまりにもひどいので….。
まめにアクセス状況を確認し異常は即報告
毎日とまでは言わないまでもまめにアナリティクスとAdSenseサイトを使って、異常なクリック回数や以上なCTR値がないかを確認します。CTRはサイトにもよりますがブログだと4桁%なんて普通はありえないでしょう。1000%ということは1ページ閲覧中に10回クリックしたということです。普通はあっても1回とか2回じゃないですか?
みつけたら放置せずすぐにデータを集めてGoogleに報告です。
[Google AdSense] 無効なクリックの連絡フォーム
https://support.google.com/adsense/contact/invalid_clicks_contact
出したからといって返事は来ません(返事が来たら自分に重大な問題があるということでもある)が発見したら必ず報告しましょう。
筆者の場合は数回以上の異常なクリックが発見できたので、それらを全部報告したところその停止期間は通常30日とされているよりはるかに早く解除されました。(具体的な日数はかけませんのでご容赦)
報告を怠ると最悪はAdSenseアカウントを剥奪されかねません。今のAdSenseの仕組みでは完全に悪意あるクリックをサーバー側では防げないことはGoogleもわかっているはずなので、サイト運営者がきちんとサイトを管理していることを示すことが大切です。サイトをろくに管理していないようなサイトに広告主が広告を載せたいわけがありません。
AdSenseを入れたサイトの管理はコンテンツ管理だけではないのです。まめにこうしたサイト状況の確認ができない人はAdSenseに手を出すべきではありません。
Ad InserterとAdSense Invalid Click Protector (AICP) の注意
Ad Inserterを使う上での注意
手動広告挿入は面倒なので自動的に条件を満たした箇所に広告を挿入してくれる “Ad Inserter” というプラグインがありますのでこれも使います。
Ad Inserterの使い方についてはGoogle先生に聞いていただくと山ほど出てきます。
ありすぎておすすめが難しいのですが、例えばこちらのサイト。
Ad Inserterのブロックの黒枠テキストエリアにAdSenseから持ってきた自分の広告コードを入れるだけです。
ただし、WordPressのプレビュー機能でも本番広告が出てしまいますのでこれを表示させないために、プレビューの時は広告コードをスキップするような工夫が必要です。
Ad Inserterについてはこちらのサイトが非常にわかりやすいと思います。
AdSense Invalid Click Protector (AICP) を使う上での注意
AICPの使い方を検索すると、AICPプラグインをインストールして回数などの必要なパラメーターを設定すればOKという説明のサイトが実に多いのです。
実はこれでは道半ばにすぎず、無効なクリックに対して威力を何らか発揮できません。
Googleの広告コードを挟み込む形で、phpでAICPからの広告表示OKならば広告コードを解釈させ、そうでない(無効なクリック)ならそもそもGoogleの広告コードを出さない(表示させない)必要があります。
筆者は知らずにこの後半を対処しなかったためにアンチAdSense攻撃(大抵は人じゃなくて自動的にPCにやらせているようです)を受けたのでした。
ただしAICPだけではモバイルデバイスのタップを防ぐことはできません。
Important Note About Touch Screen Support: This plugin doesn’t work on mobile devices such as smartphones and tablets, because this hardware uses a touchscreen instead of a mouse as click input. This design makes the boundary monitoring trick ineffective.
Ad Invalid Click Protector (AICP)の「説明」よりタッチスクリーンサポートに関する重要な注意事項:このプラグインは、スマートフォンやタブレットなどのモバイル デバイスでは動作しません。このハードウェアはクリック入力としてマウスではなくタッチスクリーンを使用するためです。この設計により、境界監視のトリックが無効になります。
翻訳はGoogle翻訳を使用
ぶっちゃけ「タッチスクリーンのタッチはマウスクリックとちゃいまっせ!そやからわては知りまへんさかい」といっているわけであります。
筆者が受けた悪意あるクリック(全て海外から)は全てデスクトップからのアクセスでしたので、AICPをちゃんとやれば効果はありそうですが完璧ではありません。
もう一つ、ブラウザキャッシュが有効ではやはりうまく働かないのでブラウザキャッシュを無効にする必要があります。
HTML5より前の場合は<head>〜</head>に以下のmetaタグを入れる。
<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”Cache-Control” content=”no-cache”>
<meta http-equiv=”Expires” content=”0″>
しかしHTML5ではこれが効きませんので困りましたね。
何か探さなくては。
何かわかって効果が確認できたら記事にて紹介します。
HTML5(WordPress)でブラウザキャッシュを無効にする方法:
<わかったらここをUPDATEしますね>…この記載のときはまだわかってないという….
Ad InserterとAICPを一緒に使う方法
Ad Inserterに書くコード
Ad Inserterには黒いテキストエリアにGoogleからひっぱってきた広告コードを入れ、広告挿入箇所などの指示をすれば自動的に広告が指定した場所に入り、いちいち広告コードやそのショートコードを入れる必要は全くありませんし、何らかの理由で広告停止したいときも簡単です。
しかし、いろいろ調べても次の条件を満たすやり方がなかなか出てこなかったので自分でサクッとつくってしまいました。
条件1:WordPressのプレビューでは広告を表示しない。
条件2:AdSense Invalid Click Protector (AICP) で広告表示停止になっている場合は広告を表示しない。
Ad Inserterの広告ブロック(黒いエリア)に以下のように入れましょう。青字イタリックの部分は自分の広告コードに差し替えてください。
<?php if( !is_preview() and aicp_can_see_ads() ) { ?>
スポンサーリンク<br>
<!– ここからGoogle広告コード –>
<script async src=”https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-000000000000000″
crossorigin=”anonymous”></script>
<ins class=”adsbygoogle”
style=”display:block; text-align:center;”
data-ad-layout=”in-article”
data-ad-format=”fluid”
data-ad-client=”ca-pub-000000000000000”
data-ad-slot=“0000000000”></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<!– ここまでGoogle広告コード –>
<?php } else { ?>
ADS BLOCKED<br>
<?php }; ?>
これで広告表示可能な場合は「スポンサーリンク」の文字とその下に広告が表示され、プレビューや無効なクリックの場合には”ADS BLOCKED”の文字が表示されます。
ただし、デバッグや調整のために繰り返すと、何度も本物広告を表示したり誤クリックの原因になるので、筆者は本番までは広告コードの代わりに「AD」の文字列が出るようにしています。
<?php if( !is_preview() and aicp_can_see_ads() ) { ?>
スポンサーリンク<br>
<!– ここからGoogle広告コード –>
<!–
<script async src=”https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-000000000000000″
crossorigin=”anonymous”></script>
<ins class=”adsbygoogle”
style=”display:block; text-align:center;”
data-ad-layout=”in-article”
data-ad-format=”fluid”
data-ad-client=”ca-pub-000000000000000”
data-ad-slot=“0000000000”></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
–>
<!– ここまでGoogle広告コード –>
<?php } else { ?>
ADS BLOCKED<br>
<?php }; ?>
単純に広告コードの部分をコメントアウトしただけです。これによりテスト中で本来広告が表示される場合にはスポンサーリンクの文字だけが表示され(何故なら広告部分のコードはコメントアウトしてあるので)、プレビューやAICPでブロックされるときは「ADS BLOCKED」の文字が表示されます。
確認方法
AdSense Invalid Click Protector (AICP) の設定画面の下のほうに、
・Do you want to block showing ads for some specific countries?
・Banned Country List – Put ISO ALPHA-2 Country Codes (Comma Seperated)
と二つの項目がありますので以下のように設定します。
・Do you want to block showing ads for some specific countries?:Yes
・Banned Country List – Put ISO ALPHA-2 Country Codes (Comma Seperated):JP
つまり日本からのアクセスには広告を表示しないように設定してテストするわけです。
これで前述のテスト用の設定で「ADS BLOCKED」が出てきて、上記の最初をNoにし2つ目のJPを削除すれば「スポンサーリンク」の文字が出てくるようになればOKです。
編集画面からのプレビューでも「ADS BLOCKED」が出ますが、これは広告の位置がよくわかるのでこのままのほうが良いと個人的には思います。
まとめ
Googleからお叱りを受ける前にきっちり対策しておきましょう。
お叱りを受けたら、アナリティクスとAdSenseサイトで不正なクリックを調査して、直ちに報告しましょう。