Comment tracker les robots d'indexation sur votre site grâce à Google Analytics ?
Par Rémi Aubert le vendredi 19 décembre 2008, 15:30 - Google Analytics - Lien permanent
Lorsque je faisais du SEO chez un comparateur de prix, nous avions voulu connaitre la fréquence de crawl des moteurs de recherche sur le site web ainsi que les catégories les plus crawlées afin de faire concorder cela avec les catégories les mieux indéxées etc....
A l'époque nous avions installé un outil de comptage de crawls qui avait l'inconvénient d'être un peu trop gourmand en ressources (Il faut dire que la quantité de stats à ingurgiter devient vite importante).
Il y a 6 mois de cela nous nous sommes penché sur la question avec mon collègue de travail Alan Boydell et nous sommes arrivés à insérer ces statistiques de crawl dans Google Analytics. Une telle méthode permet de voir en un coup d'oeil, dans Google Analytics, la fréquence de passage des moteurs de recherche, quelles pages ont été crawlées, combien de fois les moteurs sont revenus (cf capture en haut à gauche) etc... et de faire porter la charge serveur par Google au lieu de le faire sur ses propres machines.
Alan va vous expliquer sur son blog comment paramétrer au mieux son compte, je vais pour ma part vous expliquer le fonctionnement du script et la manière de l'installer sur votre site.
La problématique que nous avons eu a été double :
- Comment insérer des statistiques dans Google Analytics alors que le tag Google est en javascript (ce dernier n'étant pas exécuté par les robots d'indexation)?
- Comment faire la séparation de trafic entre visiteurs et robots?
Sur la problématique de la segmentation du trafic il a fallut ruser par rapport au fonctionnement des moteurs de recherche. Le système ne peut être fiable à 100% mais il permet de catcher la majorité des crawls. Afin de détecter s'il s'agit d'un moteur de recherche 3 étapes sont effectués :
- Check de referer, si le client qui se connecte a un referer, il ne peut s'agir d'un bot dans la mesure où ceux-ci n'ont pas de referer. => Pas d'insertion
- Check de l'OS par rapport au User Agent, si le client qui se connecte déclare être sous un OS connut (Win XP, Vista, Linux etc..) il ne peut s'agir d'un bot (check par rapport aux patterns BBclone). => Pas d'insertion
- Check du moteur de recherche, si les deux conditions du dessus sont respectées, on check de quel moteur il s'agit par rapport aux patterns BBclone. => Insertion
Sur la problématique du javascript nous sommes d'abord parti dans des solutions peu flexibles avant de tomber sur le billet de blog d'un certain Peter Van der Graff que nous avons adapté à la problématique des moteurs de recherche et enrichi de nos connaissances en SEO et Web Analytics. Peter cherchait à logguer les requêtes faites sur son flux RSS ou sur ses documents PDF. Bref, nous reconstruisons l'URL d'insertion dans dans GA puis nous envoyons en Curl (il faut donc que la librairie Curl soit installée sur votre serveur) aux serveurs de Google.
Installation :
- Téléchargez et dezippez les fichiers suivants : analytics.zip
- Placez les sur votre serveur.
- Adaptez le fichier config.php pour vos besoins.
- Faites un include_once du fichier analytics.php. (<?php include_once( dirname(__FILE__).'/analytics/analytics.php'); ?>vous aurez
- Dans environ 24h vous aurez les premiers résultats dans Google Analytics
Si vous avez des questions sur le plan technique et sur l'implémentation n'hésitez pas à laisser un commentaire sur mon blog ou sur celui d'Alan.

Commentaires
Chapeau Rémi :-)
Cela dit, j'ai quand même une question quant a l'exactitude des données que tu passes a GA en utilisant comme base la méthode de Peter VDG:
Assures-tu la cohérence du hash de domaine dans les cookies __utmtruc? Si oui comment? _setAllowHash(false) ?
Sinon bon boulot! J'ai hâte de tester ça puisqu'auparavant je jonglais avec Urchin :-)
Amicalement,
Julien
Hello Julien,
On s'assure de l'exactitude des données en prenant le hash à la main dans le cookie utma et en le spécifiant dans le fichier de config.
Merci Alan,
On est bien d'accord! ;-)
C'est en fait ce qu'il manquait au script de Peter :P
Enfin, faut dire que je suis en vacances sans PC et mon iPhone ne fait pas encore éditeur PHP ;-)
Hello,
je n'ai pas installé mais en lisant le script j'ai trouvé je pense deux anomalies
analytics.php
1 - ligne 15 :
if( empty( $_SERVER["REFERER"] ) )
devrait être plutot
if( empty( $_SERVER["HTTP_REFERER"] ) )
2 - même ligne
empty(chaine non null) renvoie 1
donc si il y a un referer on se prend $check = 1 ;
vu que ce n'est pas un bot
ligne 33, 34, 35 on ne satisfait pas le test donc
les stats ne sont pas faussées
seul inconvénient de ces peut être bogues : charger un peu le serveur local.
Une question : pourquoi tester le HTTP_REFERER et l'OS ; l'Os ne serait il pas suffisant pour éliminer les internautes humains ?
Merci pour le reste du script, je ne connaissais pas cet usage de PHP pour insérer des infos dans Gogole Analytics !!
Cordialement
Gilles
@Gregoire et / ou Gilles
1 - Sur HTTP_REFERER en effet tu as raison il y a une erreur et j'avoue que je n'explique pas comment nous avons pu glisser cette erreur entre la version en prod et la version zippée. En tout cas c'est corrigé, merci.
2 - Je ne suis pas sûr d'avoir compris ce point.
3 - Si l'on test à la fois les OS et les referers c'est parce que chacun individuellement est une condition nécessaire mais pas suffisante pour dire s'il s'agit d'un bot. En effet 1/3 des navigateurs bloquent leurs referers. Cependant s'il n'y a pas de referer il y a présomption de Robots d'où le $check = 1. D'où la double validation avec l'OS qui s'il contredit cette présomption refait passer le $check à 0 et exclus la possibilité d'un bot. Il est vrai que j'aurais pu intégrer une condition dans l'autre mais je n'ai pas souhaité le faire.
Bonjour
ré envoi du formulaire, il y a eu un pépin je le ré écris rapidement.
Vous avez répondu à ma question sur le pourquoi du test sur le referer puis sur l'OS. Merci.
votre code est excellent et élégant. Pour info, je le récupère avec quelques modifs pour remplacer un de mes propres codes bien moins élégant que le votre pour aiguiller les bots vers certains contenus de pages plutot que d'autres. Non, ce n'est pas du cloaking, juste que je désire ainsi éviter que des résultats d'options d'affichage puissent être vues et semer le bazar dans mon référencement.
au plaisir de lire vos prochains posts
Cordialement
Gilles
Bonjour,
Comment intégrer votre solution pour tracker les bots sous GA dans un environnement Wordpress + serveur mutualisé chez OVH ?
Merci
ipk