Comment bloquer les spam bots et aspirateurs de site web par leur User Agent avec .htaccess

Le fichier htaccess nous offre aussi une technique pour bloquer les spam bots, des robots d’indexation illégitimes qui parcourent votre site web pour saisir les adresses emails pour les ajouter à des listes de spam, ou même, dans le cas des aspirateurs, copier votre site au complet afin de faire soit une copie locale, ou utiliser le contenu pour des fins monétaires en le publiant sans votre consentement, ce qui peut avoir des conséquences néfastes additionnelles avec Google et le contenu dupliqué. Ces robots gaspillent votre bande passante de façon considérable sans compensation pour vous ou la popularité du site.

On peut en effet limiter ces abus en identifiant le user agent du navigateur, et décider de le bloquer s’il correspond à une liste de robots connus indésirables. C’est une technique parmi d’autres, qui n’est pas parfaite, mais qui devrait au moins s’ajouter à vos méthodes de protection contre les pilleurs:

1
2
3
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*aspirateur* [NC]
RewriteRule .* - [F]

Dans cette règle, on démarre le RewriteEngine de Apache (il ne doit être démarré qu’une seule fois dans le fichier htaccess, si vous utilisez d’autres fonctions le requérant) et on compare le « user agent string » du navigateur avec une liste d’identifiants connus, comme dans cet exemple imaginaire, aspirateur. La partie [NC] indique que la fonction n’est pas « case sensitive » dans la comparaison, c’est-à-dire que le texte peut être écrit en majuscule ou minuscule. Ensuite on conclu en interdisant la consultation de la page en renvoyant le code [F], c’est à dire Failed.

Maintenant, cet exemple est académique, je ne connais pas de robots qui utilisent le terme aspirateur dans son identifiant, mais nous allons fournir une liste détaillée à la fin de l’article.

La fonction utilise les « regular expressions » (regexp) pour comparer des bouts de texte, et dans ce cas, le morceau de texte pourrait avoir d’autres mots, mais nous ne visons que le terme aspirateur. Pour un exemple différent, examinons un nom commun de robot qui est indésirable:

1
2
3
4
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Java [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*aspirateur* [NC]
RewriteRule .* - [F]

La ligne ajoutée indique que tout robots dont l’identifiant commence par Java devra être pris en compte aussi. Ce terme est très commun dans ce type de technologie. Comme on peut le voir, les lignes peuvent s’additionner pour construire une longue liste de termes à évaluer. Dans ce cas, il faut finir la ligne avec [NC,OR]; le OR veut dire OU en français, et indique qu’une autre définition suivra.

Dans la même lignée de pensée, certains webmasters, dont je fais partie, voudraient aussi bloquer Google Web Accelerator, un gadget de Google pour accélérer la navigation sur un site en téléchargeant les fichiers à l’avance pendant que le visiteur lit une page, connu sous le terme de prefetching. Ce gadget tend à gaspiller lui aussi la bande passante sans fournir d’avantages réels au webmaster, et peut compliquer la navigation en interférant avec les cookies ou les formulaires, ou même en visitant des pages qui sont interdites dans le fichier robots.txt. Google a tout de même la grâce de fournir une fonction htaccess aux webmasters s’ils désirent bloquer Google Web Accelerator:

1
2
3
4
5
#block google web accelerator
RewriteEngine On
RewriteCond %{HTTP:x-moz} ^prefetch [OR]
RewriteCond %{X-moz} ^prefetch 
RewriteRule .* - [F]

Bon, finissons cet article en publiant une longue liste pratique de robots indésirables que vous pouvez ajouter à votre fichier. Il y en d’autres, il importe pour vous de trouver ceux qui vous agacent en consultant vos logs, ou en cherchant sur d’autres sites web qui se spécialisent plus sur ce phénomène et qui sont peut-être plus à jour:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*Atomic\_Email\_Hunter* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Filangy* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BackWeb* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BackStreet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Bandit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BatchFTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Bullseye* [OR]
RewriteCond %{HTTP_USER_AGENT} .*bumblebee* [OR]
RewriteCond %{HTTP_USER_AGENT} .*capture* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPicker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPickrElite* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPickerSE* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ChinaClaw* [OR]
RewriteCond %{HTTP_USER_AGENT} .*clipping* [OR]
RewriteCond %{HTTP_USER_AGENT} .*collage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Collector* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Copier* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Crescent* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Download* [OR]
RewriteCond %{HTTP_USER_AGENT} .*eCatch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*EirGrabber* [OR]
RewriteCond %{HTTP_USER_AGENT} .*email* [OR]
RewriteCond %{HTTP_USER_AGENT} .*EmeraldShield* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*FlashGet* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*FlickBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*FrontPage* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GetRight* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GetSmart* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GetWeb* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GetWebPage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*gigabaz* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Go!Zilla* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GornKer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*gotit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Grabber* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GrabNet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*hloader* [OR]
RewriteCond %{HTTP_USER_AGENT} .*httpdown* [OR]
RewriteCond %{HTTP_USER_AGENT} .*InterGET* [OR]
RewriteCond %{HTTP_USER_AGENT} .*JustView* [OR]
RewriteCond %{HTTP_USER_AGENT} .*kapere* [OR]
RewriteCond %{HTTP_USER_AGENT} .*larbin* [OR]
RewriteCond %{HTTP_USER_AGENT} .*LeechFTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*LexiBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Missigua* [OR]
RewriteCond %{HTTP_USER_AGENT} .*MSIECrawler* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Vampire* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetAnts* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetMechanic* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Openfind* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PageGrabber* [OR]
RewriteCond %{HTTP_USER_AGENT} .*pavuk* [OR]
RewriteCond %{HTTP_USER_AGENT} .*pcBrowser* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PersonaPilot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PingALink* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Python-urllib* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PycURL* [OR]
RewriteCond %{HTTP_USER_AGENT} .*RealDownload* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Reaper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Recorder* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ReGet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*replacer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SearchExpress* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SlySearch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SmartDownload* [OR]
RewriteCond %{HTTP_USER_AGENT} .*snagger* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Snake* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Stripper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Sucker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SuperBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SuperHTTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Surfbot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Syntryx* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Teleport* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Telesoft* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetSpider* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebAuto* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebBandit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebCapture* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Webclipping* [OR]
RewriteCond %{HTTP_USER_AGENT} .*webcollage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebCopier* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebEMailExtrac* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebFetch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebIndexer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebLeacher* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebMiner* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebMirror* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebReaper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebSauger* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Website* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Webster* [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} .*Whacker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*whizbang* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Xenu*
RewriteRule .* - [F]

Voir aussi: La gestion d’un site avec .htaccess et ses fonctions de bases incontournables

Partager cet article:

  • del.icio.us
  • Facebook
  • StumbleUpon
  • Twitter
  • LinkedIn

Catégories: Gestion de site web | 7 commentaires »
Les tags de cet article: ,

Note: Merci pour vos commentaires, j'apprécie ceux qui partagent leurs avis et leurs expériences de webmestre, ou s'il y a lieu, indiquent une erreur dans mes tutoriels, mais je ne peux évidemment pas faire de support technique pour votre site, alors veuillez éviter d'en faire la demande dans cette section.

7 commentaires pour “Comment bloquer les spam bots et aspirateurs de site web par leur User Agent avec .htaccess”

  1. Me dit: 26 août 2008 at 19:08

    J’espère que cela ne bannit pas de bons moteurs de recherche.

  2. Martin dit: 16 janvier 2009 at 19:13

    Salut Me, bien sur que non, j’utilise cette liste moi-même et je n’ai aucun problèmes avec les moteurs de recherche.

  3. coco dit: 25 mai 2009 at 0:59

    est ce qu’on pourrai pas faire autrement, au lieu de mettre une liste qu’on ne connaitra jamais la fin, on autorise seulement ceux qui sont connu, google, msn, alexa, yahoo, ask et point

  4. oliro dit: 27 septembre 2009 at 15:15

    Ce code ne marche pas sur mon site.
    une foix que je met le fichier .htaccess le site n’est plus axe cible, es que c’est a cause de mon hébergeur free ? (incompatible avec mql) ?

  5. pareil dit: 3 octobre 2010 at 5:04

    oui moi aussi chez free cela bloque tout même sans l’ouverture et fermeture des syntaxes.

  6. Monkey D. dragon dit: 12 octobre 2010 at 5:37

    une question ? si je veux empêcher google de lire mon site web avec htaccess, est ce qu’il y a une méthode ?
    (bien sure je parle pas de faire un mot de passe avec htpassword)

  7. trucetastuce dit: 6 novembre 2010 at 5:29

    Pour bloquer les visites depuis Google, bing… A placer dans le htaccess :
    ———–
    SetEnvIfNoCase Referer « .*(google|bing|yahoo|dmoz|picsearch|voila|altavista|ask|alexa|ixquick).* » spammer=yes
    Order allow,deny
    allow from all
    deny from env=spammer
    ————-

    Vous pouvez remplacer : « google|bing|yahoo|dmoz|picsearch|voila|altavista|ask|alexa|ixquick »
    par ce que vous voulez, exemple un site qui vous référence alors que vous ne le souhaitez pas.

    Attention : Votre site ne sera plus accessible depuis ces moteurs.

Laisser un commentaire