Gravatar couramment utilisé Blog perso de Paul Da Silva

Créer et installer un outil pour surveiller le passage de Google sur son site

Posted on | mars 31, 2010 | No Comments

Il peut être utile, dans bien des cas, de surveiller l’activité de notre cher Google (ou de ses amis SERPs divers et variés) sur son(/ses) sites. Pour ce faire je n’ai pas trouvé mieux qu’un outil, fait maison et installé sur la quasi-totalité de mes sites.

Comme je ne suis pas avare de mes idées je vais vous détailler un peu le fonctionnement dudit outil et vous en donner les sources afin que vous puissiez l’installer éventuellement sur votre site.

Se baser sur l’user-agent

Comme souvent quand on cherche à définir un comportement spécifique pour un type de visiteur particulier il suffit de se baser sur le user-agent de celui-ci. Pour rappel le user-agent d’un navigateur (ou d’un bot d’ailleurs) est une chaine de caractères qui identifie l’outil utilisé pour accéder à un site.

En PHP on peut le récupérer simplement avec la variable super globale $_SERVER et plus précisément avec $_SERVER[‘HTTP_USER_AGENT’].

Par exemple, si vous utilisez Firefox 3.6 sous Windows le user-agent envoyé à tous les sites que vous visitez sera : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6

A partir de là, et sachant que chaque Crawler (les bots qui visitent inlassablement le net pour indexer le contenu) utilisent des user-agent bien connus il est simple de les surveiller.

Un script à inclure sur toutes les pages

Pour que le script ait un quelconque intérêt il faut bien sûr que vous l’ajoutiez à toutes vos pages. La bonne nouvelle c’est que le script en question n’affiche rien à vos visiteurs et vous permet simplement de remplir un fichier html de votre choix dont vous seul connaitrez l’adresse – si vous êtes aussi parano que moi vous pouvez même le mettre dans un dossier protégé par .htaccess : les connexions de notre script à ce fichier se passant en local rien ne transitera par le protocole HTTP.

L’idéal pour que le script soit utilisé sur toutes vos pages est d’inclure celui-ci directement dans un fichier de config, déjà inclu sur la totalité de vos pages. Pour ma part j’ai choisi le fichier dans lequel je défini les paramètres de mon site et qui comporte entre autre les informations de connexion à la base de données.

Juste au cas où, je vous rappèle la syntaxe à utiliser pour inclure le script :

<?php include « chemin/script.php »; ?>

Et dans le script on met quoi ?

C’est vrai que là à part inclure un fichier vide sur toutes vos pages ça n’a pas grand intérêt comme article…

Le plus simple c’est de regarder l’algo de ce que l’on veut que le script fasse :

– Regarder si le user agent-appartient à une liste de bots « surveillés »
– Si c’est le cas ajouter un marqueur de cette visite dans un fichier
– Pour éviter les mauvaises surprises, limiter la taille de ce fichier à un certain nombre d’enregistrements

Regarder si l’user-agent est intéressant

$bots = array(« crawler », »Googlebot », »Scooter », »Slurp »);

for($i=0, $iMax=count($bots); $i<$iMax; $i++)
{
if(strpos($_SERVER[‘HTTP_USER_AGENT’],$bots[$i]))
{
//le code ici
}
}

Les bots à surveiller sont simplement dans un array ($bots) sur lequel on va boucler pour vérifier si le user-agent contient la chaine de caractères qui correspond. Si c’est le cas, on va rentrer dans le vif de notre script : l’ajout d’un marqueur de visite dans un fichier.

Créer un marqueur de la visite

Là encore rien de bien compliqué, à ceci près que l’on va en profiter pour vider systématiquement le fichier et en limiter la taille à un certain nombre d’enregistrements. Si vous ne faites pas cela et que le fichier devient trop conséquent il pourrait bloquer le chargement du reste des pages et empêcher aux bots de les visiter… Ce qui est à peu près le contraire de ce que l’on veut faire.

if ($_SERVER[‘QUERY_STRING’] != «  »)
$url = « http:// » . $_SERVER[‘SERVER_NAME’] . $_SERVER[‘PHP_SELF’] . « ? » . $_SERVER[‘QUERY_STRING’]. «  »;
else
$url = « http:// » . $_SERVER[‘SERVER_NAME’] . $_SERVER[‘PHP_SELF’]. «  »;

$f = fopen(« robots.html », »r+ »);
$prev=file_get_contents(‘save.html’);
$prev = explode(‘<br />’, $prev);
$prev = array_splice($prev,0, 15);
$prev = implode(‘<br />’, $prev);

rewind($f);
ftruncate($f, 0);
fwrite($f, ‘[ ‘.date(« d/m/Y H:i »).’ | ‘.$_SERVER[‘REMOTE_ADDR’].’ | ‘.$bot.’ ] : <a href= »‘.$url.' »>’.$url.'</a><br />’. »\r ».$prev);
fclose($f);

Petite explication rapide avant de vous donner un lien pour télécharger le script : on commence par récupérer l’url complète à laquelle le bot essaye d’accéder. Celle-ci est stockée dans la variable $url et sera réutilisée au moment d’insérer une nouvelle ligne dans le fichier.

On récupère ensuite le contenu du fichier déjà existant sous la forme d’une chaine (file_get_contents) que l’on transforme en tableau (explode). On réduit la taille de ce tableau à 15 enregistrements avec la fonction array_splice et on le retransforme en chaine de caractères avec implode.

Ensuite on vide le fichier en plaçant le pointeur de lecture en début de fichier (fseek) et en vidant tout ce qui suit (ftruncate). Il ne reste plus qu’à ajouter notre nouvelle ligne suivie des 15 anciennes que l’on souhaitait garder et à refermer le fichier (fclose).

N’oubliez pas de donner les droits en écriture à Apache sur le fichier html sous peine de voir le script ne pas fonctionner et une belle erreur s’afficher pour les bots.

Pour tester le script, il vous suffit de changer votre user-agent – soit en utilisant une extension firefox très sympathique : user-agent switcher – soit en modifiant la chaine general.useragent.extra.firefox dans le about:config

Et pour les plus feignants d’entre vous : un petit fichier zip contenant les deux fichiers nécessaires à la mise en place de mouchard : [script].

Commentaires

Leave a Reply





Edito

Ancien journaliste, ancien entrepreneur, ancien (ir)responsable Pirate, actuel citoyen qui s'intéresse à la politique et à son évolution.

Read moar !.

Retrouvez moi sur :

Suivez moi sur twitter sur facebook sur wikipedia Ajouter ce blog a votre lecteur RSS

Bitcoin

bitcoin logo
1GZnMQ9wXyifxCnDEqg8CSGdngWcKWptHv

Piratons la démocratie

piratons la democratie

One more thing !

0100 0011 0110 1000 0110 0001 0110 1110 0110 0111 0110 0101 0111 0010 0010 0000 0110 1100 0110 0101 0010 0000 0110 1101 0110 1111 0110 1110 0110 0100 0110 0101 0010 0000 0110 0101 0110 1110 0010 0000 0111 0011 0010 0111 0110 0001 0110 1101 0111 0101 0111 0011 0110 0001 0110 1110 0111 0100 0010 0000 0010 1101 0010 0000 0110 1111 0110 1110 0010 0000 0111 0110 0110 0001 0010 0000 0110 0010 0110 1111 0110 1001 0111 0010 0110 0101 0010 0000 0111 0101 0110 1110 0010 0000 0110 0011 0110 1111 0111 0101 0111 0000 0010 0000 0011 1111

Tm9uIGNlbGVsIGzgIGVzdCBqdXN0ZSBwb3VyIHRlIGZhaXJlIHBlcmRyZSA1bW4gOyk=

Relationship Closeness Inventory

Promo code Genesis Mining

Sha 256 cloud mining

Best Bitcoin debit card

Zcash Mining