Googlebot, Slurp, MSNBot et les autres, comment les apprivoiser
Le vendredi 13 octobre 2006 à 00:50 :: General :: #35
Je vous parlais hier des balises "NOODP" bientôt reconnues par Yahoo! après MSN et Google.
C’est l’occasion de revenir plus en détail sur le langage des robots d’indexation utilisés par les moteurs de recherche.
Le comportement des robots n’est pas une fatalité, il peut (dans une certaine mesure) être contrôlé. Il suffit de savoir leur parler.
Il y a plusieurs façons de communiquer avec ces robots :
- Au niveau d’un site tout entier par le biais du fichier « robots.txt »
- Au niveau d’une page en utilisant les balises META
Chacune de ces alternatives a un usage précis et des fonctionnalités propres.
Le fichier robots.txt
Le principe de fonctionnement est le suivant :
Il s’agit d’un simple fichier texte placé à la racine du serveur.
Les robots arrivant sur un site sont supposés le visiter avant tout autre fichier et sont également supposés s’y conformer.
(Dans les faits, ce n‘est pas toujours le cas, il n’y a aucune obligation et c’est au bon vouloir de l’auteur du robot. Néanmoins les plus importants d’entre eux le respecte.)
Il répond à un standard (Standard for Robot Exclusion) qui bien que non officiel à fait l’objet d’un consensus en 1994 entre la plupart des créateurs de robots et les personnes intéressées par ces questions.
Comme son nom l’indique, il a pour but de fixer des règles d’exclusion pour les robots dans la visite et l’indexation des pages d’un site.
Il définit également des règles de formatage et de syntaxe pour les administrateurs de site :
- Le fichier robots.txt doit se situer à la racine du serveur
- Le nom du fichier doit être en minuscule
- Il ne peut y avoir qu’un seul fichier robots.txt
Exemple :
Pour un site
http://www.example.com
le fichier doit se trouver là :
http://www.example.com/robots.txt
et pour
http://example.com
il doit être accessible ici :
http://example.com/robots.txt
http://www.example.com/Robots.txt
n’est pas valide, pas plus que :
http://www.example.com/user/robots.txt
Concernant les instructions que le fichier robots.txt contient, elles sont de deux types :
Les instructions « User-agent: »
et les instructions « Disallow: ».
Les premières spécifient à quel robot particulier les secondes sont destinées.
L’astérisque (*) sert de wildcard et signifie « tous les robots. »
Le dièse (#) est la marque du commentaire, tout ce qui le suit sur la même ligne est ignoré.
Exemple :
# Fichier robots.txt type User-agent: * # Pour tous les robots Disallow: # Rien n’est interdit
Signifie que tous les robots (*) sont autorisés à crawler le site. (C’est le comportement par défaut, équivalent à l’absence de fichier robots.txt)
A l’inverse, un fichier comportant ces lignes :
User-agent: * # Pour tous les robots Disallow: / # Tout est interdit
Signifie que tous les robots (*) ont l’interdiction de visiter l’ensemble du site ( / représente la racine du site)
Il est bien sur possible d’être plus sélectif, tant au niveaux des robots autorisés ou exclus que des parties du sites interdites ou ouvertes au crawl.
Exemple :
User-agent: Googlebot # Le robot de Google
Disallow: / # est interdit sur tout le site
# les autres robots sont autorisés.
Exemple:
User-agent: msnbot # Le robot de Live.com Disallow: # est autorisé sur tout le site User-agent: * # tous les autres robots Disallow: / # sont interdit sur tout le site
Exemple :
User-agent: * Disallow: /private/ # Interdiction du répertoire ‘private’
Signifie que tous les robots sont autorisés sur le site, sauf dans le répertoire “private” qui est interdit pour tous.
Par le jeux des combinaisons, il est possible de créer des règles complexes bien que, sauf cas particuliers, peu d’entre nous en ait réellement l’utilité.
La valeur de l’instruction « Disallow: » peut-être un chemin complet ou partiel correspondant au début de l’URL.
Ainsi,
Disallow: /private # Interdit à la fois /private.html
# et /private/index.html
Alors que :
Disallow: /private/ # Interdit /private/index.html
# mais n’interdit pas /private.html
De la même manière :
Disallow: /perso.php # Interdit aussi bien /perso.php
# que /perso.php?name=joe
Règles d’écritures du fichier robots.txt :
- Il ne peut y avoir qu’une seule instruction « User-agent: * » par fichier
- Il ne peut y avoir qu’une seule instruction par ligne
- Tout ce qui n’est pas spécifiquement exclu est autorisé
- Les commentaires doivent être précédés du signe #
- Les lignes vides servent à séparer les groupes d’instructions destinées à un robot ou à un groupe de robots. (Il ne doit pas y avoir de ligne vide à l’intérieur d’un groupe d’instructions)
Voici pour les directives standards, reconnues par les spécifications du W3C et par le Standard for Robot Exclusion.
Certains moteurs ont cependant ajouté leurs propres instructions. voici quelques uns de ces cas particuliers :
Google :
Dans le but d’assouplir le protocole d’exclusion, Googlebot reconnaît les règles d’écriture suivantes :
- L’utilisation de l’astérisque « * » pour remplacer n’importe quelle chaîne de caractère.
- L’ajout en fin de chaîne du signe « $ » pour indiquer la fin d’un terme.
Exemples :
User-agent: Googlebot Disallow: /*perso-
Signifie que Googlebot ne visitera pas les URLs contenant la chaîne de caractères « perso- » comme :
/users/perso-bob/
/users/perso-joe/
On peut aussi, de cette façon, interdire les pages dynamiques contenant un point d’interrogation (?) par exemple avec l’instruction :
Disallow: /*?
User-agent: Googlebot Disallow: /*.html$
Signifie que Googlebot ne visitera pas les URLs dont l’extension est « .html ».
On peut ainsi interdire la lecture de certains types de fichiers (*.pdf$, .jpg$, etc…)
MSN :
MSN reconnaît également certaines instructions non standard. Parmi elles :
- L’astérisque « * » et le signe « $ » utilisées conjointement pour interdire l’indexation de fichiers ayant une extension particulière.
- Le paramètre « Crawl-delay » pour restreindre la fréquence de visite du robot.
Exemples :
User-agent: msnbot Disallow: /*.gif$
Pour interdire la lecture de tous les fichiers PDF.
(MSN ne précise pas si les signes (*) et ($) peuvent être utilisés de manière plus étendue comme c’est le cas pour Google.)
User-agent: msnbot Crawl-delay: 120
Indique au robot qu’il doit attendre un minimum de 120 secondes avant d’accéder de nouveau à votre site.
Yahoo! :
Yahoo!, lui aussi, comme MSN, prend en compte le paramètre « Crawl-delay ». Il s’utilise de la même manière.
Voilà pour les bases d’utilisation du fichier robots.txt.
En ce qui concerne les instructions non standard reconnues par certains moteurs, cette liste n’est sans doute pas exhaustive.
Si vous en connaissez d’autres, n’hésitez pas à l'indiquer dans vos commentaires. (Je pense notamment à l’instruction « Allow: » de Google dont j’ai entendu parler mais dont je n’ai pas trouvé mention dans l’aide officielle.)
Enfin une bonne source d’exemples est d'aller voir les fichiers robots.txt de certains des sites que vous visitez, on y trouve parfois des choses intéressantes.
(pas la peine de chercher sur ce site, il n'y en a pas encore...)
Mon préféré est celui là :
http://www.webmasterworld.com/robots.txt :)
Un site complet sur les robots des principaux moteurs, (user agent et adresses IP)
C'est tout pour les fichiers robots.txt, les balises META feront l'objet d'une seconde partie.
vendredi 13 octobre 2006 | 00:50, Sergi
Blogmarks
Delicious
Scoopeo
Fuzz
Technorati
Mister Wong
English
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.