Détecter et enregistrer le passage du Googlebot en PHP

Détecter et enregistrer le passage du Googlebot en PHP

PHP, SQL Tutoriels

Il peut être très intéressant de surveiller le passage du robot Google sur votre site. Vous pourrez ainsi en déduire tout un tas d’informations pratiques telles que l’état de santé de vos liens, l’efficacité de votre menu, sa profondeur, etc. De plus, la fréquence de passage du Googlebot est un véritable baromètre sur la performance de votre site en général.

La détection se fait via son User Agent. Voici quelques lignes en PHP qui vous permettront d’enregistrer chaque passage du Googlebot dans un fichier CSV.

if( $_SERVER['HTTP_USER_AGENT'] && 
   stripos($_SERVER['HTTP_USER_AGENT'], 'googlebot') !== false ){

   $data = array( date('d/m/Y H:i:s'), $_SERVER['REQUEST_URI'] );
   $csv = new SplFileObject( 'googlebot.csv', 'a' );
   $csv->fputcsv( $data, ';' );

}

Vous vous retrouverez alors avec un fichier .cvs ayant l’allure suivante :

passage_googlebot

Pour aller plus loin

Afin de s’assurer qu’il s’agit bel et bien du Googlebot et non d’un petit malin ayant changé son User Agent, vous pouvez étoffer ce script en vérifiant la provenance de la requête.

Pour cela, vous avez en PHP la fonction gethostbyaddr() qui vous retourne le nom d’hôte correspondant à une IP.
Les noms d’hôtes du Googlebot se finissent toujours par googlebot.com.
Exemple : crawl-66-249-66-1.googlebot.com.

A propos de l'auteur

Commentaires

  • Didier le 24/07/2013 à 9:49

    Salut Sébastien,

    Bravo pour le post très clair.
    Petit bémol: faites attention avec gethostbyaddr(). C'est en effet la meilleure méthode pour identifier GGBot (l'useragent est facile à simuler), mais les requêtes DNS que la fonction effectue vont ralentir vos scripts, parfois d'une seconde ou deux.
    Autre piste si on ne veut pas modifier ses scripts, on peut récupérer l'info dans le access.log du serveur Apache.

    A bientôt! :)

* KeywordLuv ! Entrez VotreNom@VosMotsClés dans le champ "Nom" pour bénéficier d'un mot-clef ciblé.