なんか、あるサイトのアクセス解析をしているのだが、Google Analytics の解析と、実サーバのアクセスログの値が、10倍ぐらい違う。なにこれ!? って感じだけど、人気サイトであると思わせたいのかな~と。まあ、良いか。
FavoritesFollows (欧州サッカーNEWSををTwitterにつぶやくBot)で、どうしてもクリック解析がしたくて、短縮URLシステムまで構築し、Google Analytics の軽いハックまでした経験から、Google Analytics のアクセス偽装方法を実装してみる~を解説します。
前提条件!
- PHP5.3が動くサーバ
- PHPの言語知識
- FuelPHPの知識or学習意欲
- Google Analyticsの知識
- Contab で定期自動実行が出来る
では!
キーポイントは、Server-Side Google Analytics PHP Client です。これは、Google AnalyticsをJavaScriptではなく、PHPから直接トラッキングを発行することが出来ます。超訳するとPHPで、「ここからアクセスされたんじゃー」をGoogle Analyticsサーバに送りつける事が出来ます。
ソースは、こちら!
/**
* GoogleanAlyticsトラッキングを、PHPで強引に送信する
*
* @param type $long_url
* @param type $title
* @param type $remote_addr
* @param type $http_user_agent
*/
public static function googleanalytics_track($long_url, $title, $remote_addr, $http_user_agent)
{
// Initilize GA Tracker
$tracker = new GoogleAnalytics\Tracker(\Config::get('googleanalytics.key'), \Config::get('googleanalytics.domain'));
// Assemble Visitor information
// (could also get unserialized from database)
$visitor = new GoogleAnalytics\Visitor();
$visitor->setIpAddress($remote_addr);
$visitor->setUserAgent($http_user_agent);
// Assemble Session information
// (could also get unserialized from PHP session)
$session = new GoogleAnalytics\Session();
// Assemble Page information
$page = new GoogleAnalytics\Page(str_replace("http://", "/", $long_url));
$page->setTitle($title);
// Track page view
$tracker->trackPageview($page, $session, $visitor);
}
- $long_url は、アクセス先偽装したいURLをそのまま挿入。
- $title は、アクセス先偽装したいページタイトルをそのまま挿入。
- $remote_addr は、IPアドレスを入れます。どこからアクセスされたかを偽装できます。
- $http_user_agent は、UAを偽装します。
たとえば、スマホ(iPhoneとか)のアクセスで、3大キャリア(ドコモ/au/SoftBank)からのアクセスだと偽装したい場合、$remote_addr は
から、任意のIPアドレスを埋め込めばOK! ただし、固定だとGoogle Analyticsの解析で分かるので、ランダムにしないとダメです。
$http_user_agent は
User Agent | Android(TM) 技術情報 | au
を抜き出せば、良いと思います。iPhone に最新はこんな感じらしい。
Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A405 Safari/600.1.4
また、Google Analytics上の解析で、JavaScript によるアクセス偽装をした場合、一番バレやすい点として、画面の解像度があるのですが、php-ga では設定できます。
$visitor->setScreenResolution('1024x768');
この 1024x768 の文字列を、UAがiPhoneならiPhone用の解像度に。UAがXperiaなら、Xperia用の解像度に設定してください。(ちなみに、これは JavaScript では出来ないようです...本当!?)
あと、念には念を入れる方は、画面の色 も設定しましょう。
$visitor->setScreenColorDepth('32-bit');
とか設定すればいいらしい。(詳しくは、判らないので、調べてね~)
リファラー(Referrer)が無いと、怪しまれるな。
$page->setReferrer($referrer);
で、$referrer の部分に、アクセス元に偽装するURLを埋め込んで下さい。Google Analytics は、アクセスルートも解析するので、重要ですよ!
以上で、FuelPHPで「Google Analytics のアクセス偽装方法を実装してみる」でした。悪用しないでね!じゃ!