Web tricks - Robots

Introduction

Les robots d'indexation (web wanderers, web crawlers ou web spiders) sont des programmes qui vont, comme leurs nom l'indique, indexér le Web. Ces programmes vont référencés le contenu de votre site : texte, images, adresses, etc...
C'est comme ça que Google indexe le Web.

Il est possible que vous ne souhaitiez pas que l'on fouille dans votre site pour divers raisons (économiser de la bande passante, données «privées», ...).
Nous allons donc voir comment bloquer les robots (ou tout du moins restreindre leur champ d'action).

robots.txt

Avant d'indexer votre site, les robots conventionnels lisent un fichier nommé robots.txt. Ce fichier permet de spécifier quel robot à le droit ou non d'indexer quelle partie de votre site. Il doit impérativement être placé à la racine de votre site. C'est un simple fichier texte, que vous pouvez créer avec n'importe quel ├ęditeur de texte (Notepad, Notepad++, vi, ...).

Le fichier robots.txt contient deux directives essentielles :

  1. Une pour identifier les robots :
    User-agent
  2. Une pour retirer de l'indexation un dossier particulier :
    Disallow

Une troisième directive est interpretée par certains robots (entre autre Google), et permet d'autoriser un robot à indexer une partie du site : Allow.

Exemples

Refus à tous les robots d'indexer la racine de votre site :

User-agent: *
Disallow: /

Refus à tous les robots d'indexer le dossier private de votre site :

User-agent: *
Disallow: /private/

Bloquer le robot de Google Image d'indexer votre site :

User-agent: Googlebot-Image
Disallow: /

Bloquer tous les robots, sauf celui de Google :

User-agent: *
Disallow: /
User-agent: Googlebot
Allow: /

Meta tag robots

Une autre manière de procéder consiste à placer dans la tête de la page (<head>) une balise <meta> spécifique aux robots.

<meta name="robots" content="noindex,nofollow" />

Cette balise admet 2 valeurs :

ValueDescription
(no)index Indexation ou non de la page. Valeurs possibles : index et noindex
(no)follow Récupération et suivi des liens. Valeurs possibles : follow et nofollow

Exemples

<meta name="robots" content="noindex,nofollow" />
<meta name="robots" content="index,nofollow" />
<meta name="robots" content="noindex,follow" />
<meta name="robots" content="index,follow" />

Bad Bots

Cependant, tous les robots ne sont pas bienveillants. Les mauvais robots ou bad bots vont ignorer vos directives et récupérer des informations sur votre site dans un but douteux (¬_¬“;)...
Du coup, il est utile de savoir bannir ces bad bots.

Cela se fait via la configuration du serveur Apache grâce au .htaccess. En utilisant la possibilité de réécrire l'exclusion de certains clients, on peut bloquer les bad bots connus.

Voici une proposition de .htaccess tiré de A Close to perfect .htaccess ban list bloquant la plupart des bad bots connus :

# Blocking bad bots and site rippers
<IfModule rewrite_module>
	RewriteEngine on
	RewriteBase / 
	RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] 
	RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] 
	RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] 
	RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] 
	RewriteCond %{HTTP_USER_AGENT} ^Zeus 
	RewriteRule ^.* - [F,L]
</IfModule>

Sources & références utiles

Back to top