HTML5 / CSS 2.x/3 / PHP / MySQL ...

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:

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

Tous les articles sur ce thème