• Passer à la navigation principale
  • Passer au contenu principal

Jérémy Allard

Contrôlez votre entreprise sur le web

  • Ressources gratuites
  • Solutions Payantes
  • Ils témoignent
  • Show Search
  •  
Hide Search
Accueil/Référencement/Tracker Google & ses amis – Google Analytics en PHP
Rendu Tracking Bots

Tracker Google & ses amis – Google Analytics en PHP

Ca doit faire un moment que je dois rédiger cet article suite à un sondage sur Code Seo, et comme je suis lancé, je le fais de suite avant de replonger la tête dans le code :)

Il y a peu de temps, j’ai lu cet article sur « comment utiliser Google Analytics en PHP » via l’image .gif du tracker Google … Sympa comme tout mais pas réellement pour mes besoins, sauf que deux/trois clopes plus tard, j’ai eu en tête de faire un tracker de Bot.

Et oui ! Tu ne peux tracker le passage des robots avec du Javascript, en revanche avec une image chargée en PHP, rien de plus fastoche !

Pourquoi tracker les Crawls des Bots ?

Le premier imbécile qui pose la question dans son commentaire en laissant l’url de son site aura quelques surprises :)

Si on peut traquer les passages des Crawlers, on peut rapidement voir si telle ou telle page est crawlée ou non… On peut donc en déduire un plan d’attaque pour déplacer le BON seo vers le mauvais ( ma page A est super bien crawlée, je vais m’arranger pour la lier à Y qui est tombé bien bas )

Voilà le principe !

On Tracke Bobot  … C’est comme ça que je l’appelle dans mes rêves :)

Plan d’attaque:

– Tout d’abord on va créer un compte Google Analitycs ( Si tu sais pas faire, ne compte pas sur moi hein ! ) qui va rassembler tout ce qu’on veut ( tracking google site site.com, tracking Yahoo sur site2.fr etc… )

Dans votre compte il suffit de mettre un nom bidon ( le mien est seobottracker.com ) Hop je récupère mon UA-XXXXXXX qui me servira pour mes configurations

– Je télécharge GALVANIZE et comme la classe n’est pas finie je la complète un peu. Et oui, pour faire du multi-site, les visites on s’en fout un peu, à la base cette classe est faite pour traquer des Appel sur des API ou autre code invisible…

Donc on va ordonner toutes nos données dans le tracking d’événement de GA. Mais la fonction ( du moins au moment ou je l’ai chargé ) trackevent() n’est pas faite.

On y va, vous allez trouver cette fonction sous la fonction trackPageView() vers la ligne 166 & environ !

Voici le code qui m’a l’air de passer pour le tracking d’événement:


function trackEvent($Category, $Action, $Label = NULL, $Value = NULL, $PageURL = NULL, $PageTitle = NULL) {
// Add event tracking code in here. Label (string) and Value (int) are optional.
if($this->NumberOfPageViews == 0) {

if(is_null($PageURL)) $PageURL = $_SERVER['REQUEST_URI'];
$var_uservar='-'; //enter your own user defined variable
$urchinUrl = '/__utm.gif';
$urchinUrl .= "?utmwv=4.9.2";
$urchinUrl .= '&utms=6';
$urchinUrl .= '&utmn='.rand(1000000000,9999999999);
$urchinUrl .= '&utmhn='.$this->Hostname;
$urchinUrl .= '&utmt=event';
$urchinUrl .= '&utme=5(';
$urchinUrl .= rawurlencode($Category.'*'.$Action);
$urchinUrl .=  ($Label != NULL) ? '*'.rawurlencode($Label) : '';
$urchinUrl .=  ($Value != NULL) ? '*'.$Value : '';
$urchinUrl .= ')';
$urchinUrl .= '&utmcs='.$this->Charset;
$urchinUrl .= '&utmsr='.$this->ScreenResolution;
$urchinUrl .= '&utmsc='.$this->ScreenColourDepth;
$urchinUrl .= '&utmul='.$this->Language;
$urchinUrl .= '&utmje='.$this->JavaEnabled;
$urchinUrl .= '&utmfl='.$this->FlashVersion;
$urchinUrl .= '&utmdt='.rawurlencode($PageTitle);
$urchinUrl .= '&utmr='.$this->Referer;
$urchinUrl .= '&utmp='.$PageURL;
$urchinUrl .= '&utmac='.$this->Profile;
// $urchinUrl .= '&utmt='.$this->UserVariable; // Check if we should put this in if it's blank
$urchinUrl .= '&utmcc=__utma%3D'.implode('.', $this->UTMA).'%3B%2B__utmz%3D'.implode('.', $this->UTMZ).'%3B';
$this->NumberOfPageViews++; // Increment the number of page views processed
echo $this->retrieveGif($urchinUrl);
} else {
throw new Exception('Attempting to register a second page view.');
}
}

Voilà tu as ta fonction trackEvent opérationnelle ! Passons à la suite.

– Il te faut tracker les IP des Crawlers … Alors dans mon cas, c’est plutôt du « te casse par la tête et track des plages complètes »

Voici comment procéder sur tes pages:

<?php
/*
|--------------------------------------------------------------------------
| CONFIGURATION : Plages d'ip et nom de l'évenement (titre du site)
|--------------------------------------------------------------------------
*/
$bots = array(
'google' => array('72.14','64.233','209.85','216.239.46','64.68.8','66.249.','64.233.173'),
'yahoo' => array('66.196.','68.142.','202.165.','66.142.'),
);
$siteName = 'mon site Pandaranol';
$GA_UA = 'UA-XXXXXXXX';
/*
|--------------------------------------------------------------------------
| FUNCTIONS
|--------------------------------------------------------------------------
*/
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
function is_bot ($ip,$array_bots) {
$ip = strval($ip);
$reponse = false;
foreach($array_bots as $bot=>$val) {
foreach($array_bots[$bot] as $ip_bot) {
$reponse = strpos($ip,$ip_bot);
if ($reponse !== FALSE) return $bot;
}
}
return $reponse;
}
/*
|--------------------------------------------------------------------------
| GO GO GO !
|--------------------------------------------------------------------------
*/
$ip = $_SERVER['REMOTE_ADDR'];
$ua = $_SERVER['HTTP_USER_AGENT'];
$test = is_bot($ip,$bots);
// on check si c'est un bot, logiquement son referer est vide
if ($test != FALSE AND empty( $_SERVER["HTTP_REFERER"] )){
$bot = $test;
//inclusion de galvanize
include('Galvanize.php');

$GA = new Galvanize($GA_UA);
$Category = $siteName.' By '.$bot;
$Action = curPageURL();
$Label = $ip.';'.$ua;
$GA->trackEvent($Category, $Action, $Label, $Value = NULL, curPageURL(), $PageTitle = NULL);
//ex: $GA->trackEvent('toto By Google'', 'http://www.toto.com/page3.html', '66.249.66.118;Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html', NULL, curPageURL(),'Mon titre de page' );
} //endif is_bot

?>

Voilà donc le résultat en image:

Rendu Tracking Bots
Rendu Tracking Bots

C’est à toi de jouer maintenant … Bon tracking et bonne optimisation ;)

(678 lectures)

Vous utilisez ces astuces ?

Tous les jours dans votre boite mail, une astuce pour réussir en ligne...
cher lecteur

A votre avis serait-il intéressant pour moi de vendre votre adresse mail 5€ alors que l'abonné moyen à cette newsletter me rapporte plus de 15€ ? Comme les 7000+ abonnés là avant vous, vous n'avez pas grand chose à craindre.

[personnalize var="fn"]

Interactions du lecteur

Commentaires

  1. Bruno

    16 juin 2011 à 14 h 58 min

    Très bon tuto, mais sans vouloir être rabat joie, quel avantage par rapport à l’exploitation des logs serveurs ?

Footer

Copyright © 2009–2021 | Contactez-moi | Mentions Légales | Plan de site | Témoignages

  • Support
  • Affiliation
  • Blog
  • Forum de discussion