Traçage des visites d'un site web
Notre première priorité sera de tracer les visiteurs de notre site web. Ce traçage nous permettra de savoir qui vient et ce qu'il fait sur notre site.
Un traçage très simple
Nous partons d'un site exploitant une architecture MVC. Les explications qui
suivent s'appliquent donc à tout site construit avec Zend Framework ou
tout autre framework utilisant comme seul point d'entrée le fichier
index.php.
Avant de modifier le fichier index.php, il faut rajouter à la racine
du site un nouveau répertoire logs et y donner les droits d'écriture.
Voici le code de notre script de traçage qui sera placé à la racine du site et dans un script nommé tracage.inc.php:
<?php // enregistrement du traçage de l'activité sur le site web $fichierCible = dirname(__FILE__) . '/logs/tracage_'.date('Ymd').'.log'; $myFile=fopen($fichierCible,'a+'); $referer = null; if (isset($_SERVER['HTTP_REFERER'])) { $referer = $_SERVER['HTTP_REFERER']; } $httpUserAgent = null; if (isset($_SERVER['HTTP_USER_AGENT'])) { $httpUserAgent = $_SERVER['HTTP_USER_AGENT']; } $txt_log=$_SERVER['REMOTE_ADDR'].';' . gethostbyaddr($_SERVER['REMOTE_ADDR']).';' . date('d/m/Y H:i:s').';' . $_SERVER['REQUEST_URI'] .';' . '"'.$referer .'"' .';' . '"'.$httpUserAgent.'"' . " "; fputs($myFile,$txt_log); fclose($myFile);
Ensuite, on édite le fichier index.php et on écrit en tout début cette ligne de code:
<?php include 'tracage.inc.php';
A défaut de programmer avec Zend Framework, c'est également valable si vous exploitez un modèle MVC simplifié.
Construction du contenu de tracage
A partir du moment où vous allez sur votre site web, pour chaque page de votre site web consultée, une ligne de texte sera écrite dans le fichier de traçage.
Vous retrouverez facilement les fichiers de traçage dans le dossier logs et
nommé comme suit: tracage_YYYYMMAA.log où YYYYMMAA est la date
du jour de génération du fichier de traçage. Par exemple, pour le fichier
généré le 25 février 2015, on doit retrouver le fichier de traçage nommé
tracage_20150225.log.
Extrait d'un fichier de traçage:
109.217.196.132;AStrasbourg-251-1-87-132.w109-217.abo.wanadoo.fr;26/02/2015 07:09:32;.... 90.30.210.117;AToulouse-156-1-147-117.w90-30.abo.wanadoo.fr;26/02/2015 07:12:00;... 66.249.75.208;crawl-66-249-75-208.googlebot.com;26/02/2015 07:33:30;/article/w... 92.157.183.40;ALyon-658-1-56-40.w92-157.abo.wanadoo.fr;26/02/2015 08:47:13;... 109.210.230.137;AMontpellier-652-1-299-137.w109-210.abo.wanadoo.fr;26/02/2015 09:07:45;...
Ici, nous avons abrégé les lignes, en réalité, elles sont assez longues.
Un contenu au format csv
Le traçage des visites du site web a été volontairement généré dans un fichier texte plutôt qu'un enregistrement en base de données. Et comme c'est la toute première chose réalisée par le serveur, elle enregistre toutes les entrées sur le site web sans dépendre d'aucune autre ressource de l'hébregeur.
On génère un fichier de traçage par jour. Pour les sites à fort trafic, la taille de ce fichier peut être assez conséquente, de l'ordre de 500Ko à plusieurs Mo.
Chaque donnée tracée dans une ligne de ce fichier de traçage est séparée par le
caractère ; ce qui permet la récupération et traitement
du contenu du fichier de traçage au moyen d'un tableur par exemple (Excell ou
OpenOffice Calc).
Voici une ligne complète extraite d'un fichier de traçage que nous allons décortiquer:
109.217.196.132;AStrasbourg-251-1-87-132.w109-217.abo.wanadoo.fr;26/02/2015 07:09:32;/article/rgraph_recupererDonneesPourJavaScript;"http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0CEoQFjAG&url=http%3A%2F%2Fhtml5.immo-scope.com%2Farticle%2Frgraph_recupererDonneesPourJavaScript&ei=irfuVK7hFMyQ7Aa7mYDgDQ&usg=AFQjCNEdQPiOMffYt-WmJOliv9CsFFeQTw&bvm=bv.86956481,d.ZGU&cad=rjt";"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0"
Chaque colonne ou champ des lignes enregistrées correspond à une donnée précise.
L'adresse IP
C'est la première donnée enregistrée:
$txt_log=$_SERVER['REMOTE_ADDR'].';'
C'est l'adresse IP du visiteur qui a demandé le chargement de la page. Exemple:
109.217.196.132;
Le nom d'hôte de l'adresse IP
En second champ, c'est le nom d'hôte qui correspond à l'adresse IP du visiteur:
. gethostbyaddr($_SERVER['REMOTE_ADDR']).';'
Dans certains cas, si le nom d'hôte ne peut être obtenu, ce sera l'adresse IP qui sera répétée. Exemple:
AStrasbourg-251-1-87-132.w109-217.abo.wanadoo.fr;
La date et heure de traçage
En troisème champ, on retrouve la date et heure de traçage:
. date('d/m/Y H:i:s').';'
Exemple:
26/02/2015 07:09:32;
Cette datre et heure n'est pas en premier champ, car ce n'est pas une donnée vitale. En effet, chaque ligne de traçage est enregistreé par ordre chronologique. Le format des dates et heure est enregistré dans un format compatible pour un traitement via Excell.
La page qui est demandée
En quatrième champ, on retrouve la page demandée sur le site:
. $_SERVER['REQUEST_URI'] .';'
Exemple:
/article/rgraph_recupererDonneesPourJavaScript;
D'où le visiteur vient
En cinqième champ, on retrouve le lien d'où vient le visiteur. Cette donnée est enregistrée si elle est disponible, sinon elle est vide dans le cas contraire:
. '"'.$referer .'"' .';'
Exemple:
"http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0CEoQFjAG&url=...";
Ici, le visiteur est arrivé sur notre site suite à une recherche via Google.
Le User-Agent utilisé
Enfin, on enregistre en dernier champ le client web utilisé par le visiteur pour venir sur le site web:
. '"'.$httpUserAgent.'"'
Exemple:
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0"
Ici le visiteur a utilisé Firefox depuis Windows.
En résumé
Notre visiteur:
- a regardé la page /article/rgraph_recupererDonneesPourJavaScript
- le 26/02/2015 07:09:32
- qu'il a trouvé via Google
- depuis un ordinateur sous Windows en utilisant Firefox
- et abonné à Orange/Wanadoo
Vous seriez tenté de penser que c'est un flicage en règle. Nous vous rassurons. Il n'est pas possible d'obtenir des informations plus précises telles le nom ou adresse ou toute autre info plus personnelle de notre visiteur.
Par contre, en regardant toutes les lignes ayant une même adresse IP, nous saurons précisément toutes les pages vues par ce visiteur. Cette information peut être utile pour mieux comprendre ce qui intéresse les visiteurs du site et ainsi déterminer les forces et faiblesses du contenu, la présentation, l'ergonomie, etc...
Si vous avez monté notre script de traçage sur votre site web, vous devez récolter des fichiers de traçage dont nous allons maintenant essayer de comprendre le contenu de manière plus détaillée, en particulier comment déterminer les visites utiles par rapport aux visites provenant d'automates.
Voir: Analyse du contenu du fichier de traçage