空中庭園  ~ Hanging Gardens ~

自己クリックを防ぐ、Googleアドセンスの広告を表示させない方法

Googleアドセンスでは自分で広告をクリックする事はポリシー違反となり、厳しい措置が取られる可能性があります


誤ってクリックしてしまった程度なら大丈夫のようですが、 自分のホームページをどこの誰よりも一番見にくるのは自分です(笑)


また、家族が見にホームページを見に来た場合なども自己クリックとみなされてしまうと怖いので、 できるなら確実に誤クリックしないようにしたいものですね。


IPアドレスで判別


簡潔にできる方法としてはIPアドレスで判別する方法があります。

この方法ではIPアドレスが殆ど変わる事がない環境や、固定IPの場合に有効です。
契約しているプロバイダやモデム等お使いの環境によっては頻繁にIPアドレスが変更されてしまい、 あまり効果が得られない可能性もあります。


スマホからのアクセス(DocomoやSoftbank等の経由)ではIPアドレスが頻繁に変わり、 個体識別番号等を考えるのもちょっと無理があるので、 そういった条件でのアクセスは諦めて、 PC或いはWifi接続からアクセスした場合に、IPアドレスを判別してGoogleアドセンスの広告が表示されない方法を紹介したいと思います。


・Ajax と PHPを利用して広告のブロックエリア表示を切り替える

まず、php で判別するコードを紹介しましょう。

~ phpファイルのコード ~
1.    2.    $blockIP = "xxx.xxx.xxx.xxx";
3.   
4.   
5.    $remoteAddr = $ _SERVER['HTTP_X_FORWARDED_FOR'];
6.   
7.    if(strlen($remoteAddr) == 0){
8.       $remoteAddr = $ _SERVER['REMOTE_ADDR'];
9.    }
10.   $bCheckIP = "false";
11.  
12.   if($remoteAddr == $blockIP) $bCheckIP = "true";
13.  
14.   // json形式で結果を返す
15.   $array_data = array("ipCheck" => $bCheckIP);
16.  
17.   //ヘッダーの設定
18.   header('Content-type:application/json; charset=utf8');
19.  
20.   //データを出力渡すデータ(配列)をJSON形式にデコードして出力
21.   echo json_encode($array_data);
22.   exit;
23.   ?>

2行目の $blockIP のところに自分の環境のIPアドレスを入力します。

確認用にIPアドレスを表示するページも作成しましたのでご利用ください
IPアドレスを確認する(ポップアップします)

5行目、7-9行目でIPアドレスを取得しているのですが、 ここはお使いのサーバ環境によって変わって来る可能性があります。

通常は8行目の REMOTE_ADDR にてIPアドレスを取得する事ができます。


12行目でアクセスがあったIPアドレスが自分であるかどうかを判断して、$bCheckIP 変数に結果を格納します。


15-21行目でjson形式で出力してphp側のコードは完了です。


解説が少し記述してあるファイルを下のリンクよりダウンロードもできますので、よろしければお使いください。

PHPファイルをダウンロード (zip形式)


さて、次はHTML, css, JavaScriptの方を見に行きましょう。
前提としてjQuery が使える環境である必要があります。

~ HTML側のコード ~
1.    < div id="google-bigbannerWide">
2.    ここにGoogle Adsenseのスクリプトコードをコピペします。
3.    < /div >
4.    < div id="google-bigbannerWideDummy">< /div>

ここでは、仮にIDに google-bigbannerWide と命名していますが、 広告タイプなどでご自由に変更して頂いて問題ありません。
4行目のdivは広告位置を確認する場合には記述して、広告のエリアそのものを削除してしまう場合には記述は不要です。

次にスタイルの定義です。 スタイルは特別に定義しなくても問題ありませんが、定義しておくと色々調整ができるので便利かもしれません。

~ スタイルシート ~
1.    #google-bigbannerWide{
2.      width: 970px;
3.      height: 90px;
4.      text-align: center;
5.      margin: 0 auto;
6.    }
7.    #google-bigbannerWideDummy{
8.      width: 970px;
9.      height: 90px;
10.     text-align: center;
11.     margin: 0 auto;
12.     display: none;
13.     background-color:#c0c0c0;
14.   }


前述したように、特別定義する必要はありませんが、 広告エリアの部分に色を付けたりするとどこにあるのかが分かりやすいですね。

上の例では970px x 90 px の大きさでエリアを指定しており、 7-14行目がダミーエリアを表示する定義となっています。

この時、ダミーエリアについては12行目で指定してある display: none;を入れるように気をつけましょう

13行目で広告位置に背景色を付けて場所だけ分かるようにしています

visible: hidden でも試してみたのですが、 私の記述がダメなのか簡単には消えないようになっているのか分からず、 うまく消えてくれなかったのでdiv のエリアごと切り替えています。



最後にJavaScriptの記述を見ていきます。
1.    $(function(){
2.     // Google Adsense 自IPからのアクセスで広告を非表示にする
3.     if($("#google-bigbannerWide").size() > 0 ||
4.      $("#google-bigMenu").size() > 0 ||
5.      $("#google-rect").size() > 0){
6.     
7.      $.ajax({
8.        type: 'POST',
9.        url: 'checkIP.php',
10.        dataType: "json",
11.        data: { type: "ipAddress" },
12.        success: function(json){
13.          if(json.ipCheck == "true")
14.          {
15.          if($("#google-bigbannerWide").size() > 0){
16.              $("#google-bigbannerWide").hide();
17.              $("#google-bigbannerWideDummy").show();
18.          }
19.          if($("#google-bigMenu").size() > 0){
20.              $("#google-bigMenu").hide();
21.              $("#google-bigMenuDummy").show();
22.          }
23.          if($("#google-rect").size() > 0){
24.              $("#google-rect").hide();
25.              $("#google-rectDummy").show();
26.          }
27.        }
28.        },
29.        error: function(XMLHttpRequest, textStatus, errorThrown){
30.        }
31.      });
32.     }
33.    }

さて、今回JavaScriptではAjax(非同期通信)を利用します。

JavaScriptではIPアドレスを取得する事ができないため、 先ほど作成したPHPファイルにアクセスしてチェックを行っています。

上の例では3つの異なる要素を同時にチェックする場合のケースで、 google-bigMenu, google-rect を追加してあります。


まず、3-5行目で広告の要素があるかどうかを size()関数によりチェックを行っています。

広告が存在する場合はアクセス元のIPアドレスのチェックを行うため、 7-31行目のajax通信により制御を行います。

8行目、11行目は今回は利用していないためパラメータは特に気にする必要はありません。

9行目のurl には先ほど作成したPHPファイルのパスをセットします。

通信が成功すると13-26行目で広告の表示・非表示の制御を行います


このコードが実行されるのは先ほどPHPソース側で入力したIPアドレスだけなので、 実質自分からのアクセスでのみ実行される事になります。


3つの広告でそれぞれ同じ処理を行っているので1つだけみていきますが、 15行目で広告エリアの有無をチェックし、 16行目で広告エリアを非表示に指定ます

17行目は任意で広告のエリアがどこにあるのかを確認したい場合に記述するもので、 ダミーエリアを表示しています


このコードを広告を埋め込んであるページの共通ファイルとして読み込ませてあげれば、 後は何もしなくても勝手に広告を非表示にする事ができます。


JavaScriptのコードもダウンロードできるようにしましたのでよろしければお使いください。

jsファイルをダウンロード (zip形式)


これにて誤った自己クリックを防ぐ事ができるようになりました。


誤クリック程度は認められているといっても頻繁に開く自分のページです。
開くたびに間違ってクリックしないように気を使うのはやはり嫌ですよね。

ご意見やご指摘などありましたらコメントいただけますと幸いです。


機会があったらCookieを利用して自分からのアクセスで非表示する方法を考えてご紹介したいと思います。

0 Responses

    コメント

    Pick Up!