Bloquer les bots indésirables

Comment empêcher certains robots de venir parcourir votre site

Protéger votre site des robots indésirables tout en optimisant le référencement

Dans l’ère numérique actuelle, les robots (ou bots) jouent un rôle crucial dans l’analyse des sites web et l’indexation de leurs contenus. Cependant, tous les bots ne sont pas bénéfiques. Certains peuvent surcharger votre serveur, extraire des données sans autorisation, ou compromettre la sécurité de votre site. Cet article vous guide pour gérer efficacement les robots à l’aide des fichiers robots.txt et des directives .htaccess sur Apache, tout en préservant les bots essentiels pour le SEO.

Comprendre les robots.txt

Le fichier robots.txt est une première ligne de défense qui oriente les robots sur les pages qu’ils peuvent ou non explorer sur votre site. Bien qu’il soit utile pour le référencement, il n’est pas un mécanisme de sécurité infaillible, car il repose sur la bonne volonté des robots pour respecter ses directives. Le fichier se dépose à la racine du site pour être trouvé par les bots.

Cas d’utilisation de robots.txt :

  • Contrôler le crawling : Limitez l’accès des robots aux pages sensibles ou inutiles pour le référencement (ex : /admin, /wp-includes/).

  • Optimiser la bande passante : Réduisez la charge du serveur en interdisant l’accès à des ressources peu pertinentes.

  • Améliorer le SEO : Aidez les moteurs de recherche à se concentrer sur les pages les plus importantes.

Limites du robots.txt

Il est important de noter que le fichier robots.txt n’est pas contraignant. Les robots malveillants peuvent ignorer ses directives. C’est pourquoi il est nécessaire d’ajouter des couches de sécurité supplémentaires, comme le blocage via .htaccess ou des filtres IP.

Exemple de configuration basique pour robots.txt :

User-agent: *
Disallow: /admin/
Disallow: /private-data/
Allow: /

Dans cet exemple, on demande à tous les robots (représentés par *) de NE PAS accéder aux dossiers sensibles comme /admin/ et /private-data/, mais ils peuvent parcourir le reste du site.

Gérer les bots indésirables avec .htaccess sur Apache

Le fichier .htaccess offre un contrôle précis sur le comportement des robots, notamment en bloquant certains User-Agents, en limitant les requêtes, ou en bloquant des adresses IP suspectes. Voici quelques techniques clés pour bloquer ou limiter l’impact des bots nuisibles. Le fichier .htaccess se dépose à la racine de votre site. Vous pouvez également utiliser la configuration avancée “Directives supplémentaires du virtual host” dans la configuration de chaque site depuis votre panel d’administration.

Bloquer des bots spécifiques par User-Agent

Le “User-Agent” est une information transmise avec chaque requête internet vers un site web, permettant d’informer le serveur de “qui” fait la requête. On peut ainsi avoir le type de navigateur pour un humain, et le nom du bot le cas échéant. Ainsi certains bots sont identifiés par leur User-Agent. Vous pouvez facilement les bloquer via .htaccess en utilisant la directive SetEnvIfNoCase.

SetEnvIfNoCase User-Agent "BadBot" bad_bot
SetEnvIfNoCase User-Agent "AnotherBadBot" bad_bot
Deny from env=bad_bot

Ici, tout robot dont le User-Agent contient les chaînes “BadBot” ou “AnotherBadBot” sera bloqué.

Mais ici encore, les bots peuvent très bien masquer leur identité en donnant un “User-Agent” imitant un visiteur humain.

Bloquer des bots par adresse IP

Vous pouvez bloquer l’accès aux robots malveillants en fonction de leur adresse IP ou plage d’adresses IP. Cela permet de neutraliser des attaques provenant de zones géographiques ou d’hébergeurs spécifiques.

Order Deny,Allow
Deny from 192.168.1.1
Deny from 123.456.789.0/24
Allow from all

Ce code bloque l’adresse IP 192.168.1.1 ainsi que toute une plage d’adresses 123.456.789.0/24, empêchant l’accès à votre site.

Limiter le taux de requêtes avec mod_evasive

Le module mod_evasive d’Apache est un excellent outil pour limiter les abus de requêtes en provenance de bots, ce qui est particulièrement utile en cas d’attaque par déni de service (DoS).

<IfModule mod_evasive.c>
    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10
</IfModule>

Dans cet exemple, une adresse IP sera temporairement bloquée si elle fait plus de 2 requêtes sur une page en 1 seconde ou plus de 50 requêtes sur l’ensemble du site en une seconde.

Rediriger les bots vers une page spécifique

Plutôt que de bloquer complètement les bots, vous pouvez choisir de les rediriger vers une page d’avertissement qui explique pourquoi leur accès est limité.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} BadBot [NC]
RewriteRule .* /blocked.html [R=301,L]

Dans cet exemple, tous les bots identifiés par le User-Agent “BadBot” seront redirigés vers une page appelée blocked.html.

Bloquer les bots en filtrant les méthodes de requête HTTP

Les bots malveillants utilisent parfois des méthodes HTTP spécifiques comme POST pour soumettre des formulaires ou HEAD pour obtenir des informations sans télécharger les pages. Vous pouvez restreindre les méthodes autorisées pour protéger votre site.

<LimitExcept GET POST>
    Order Deny,Allow
    Deny from all
</LimitExcept>

Ce code autorise uniquement les méthodes GET et POST, bloquant toutes les autres méthodes comme PUT, DELETE, etc.

Activer la mise en cache pour réduire la charge serveur

Un bon moyen de réduire l’impact des bots sur les ressources serveur est d’activer la mise en cache, en particulier pour les fichiers statiques comme les images, les feuilles de style CSS ou les scripts JavaScript.

<FilesMatch "\.(html|css|js|jpg|png)$">
    Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Cette configuration stocke les fichiers en cache pendant une semaine (604800 secondes), réduisant ainsi le nombre de requêtes au serveur.

Liste des bots essentiels à accepter pour le SEO

Il est crucial de permettre l’accès aux bots des moteurs de recherche pour assurer l’indexation de vos pages et améliorer votre classement SEO. Voici une liste des bots à accepter dans votre fichier robots.txt :

Googlebot (Google)
Bingbot (Bing)
Slurp (Yahoo)
DuckDuckBot (DuckDuckGo)
BaiduSpider (Baidu, pour le marché chinois)
YandexBot (Yandex, pour le marché russe)

Exemple de configuration robots.txt pour le SEO :

User-agent: Googlebot
Allow: /

User-agent: Bingbot
Allow: /

User-agent: Slurp
Allow: /

User-agent: DuckDuckBot
Allow: /

User-agent: BaiduSpider
Allow: /

User-agent: YandexBot
Allow: /

Liste d’IP à bannir

Une gestion efficace des bots passe par le blocage des adresses IP suspectes. Des services comme AbuseIPDB peuvent vous aider à identifier les adresses malveillantes.

Exemple de blocage d’IP dans .htaccess :

Order Deny,Allow
Deny from 195.154.122.0/24
Deny from 217.182.0.0/16
Deny from 46.229.168.0/22

Conclusion

Gérer l’accès des robots à votre site web est essentiel pour maintenir la sécurité et l’efficacité de votre serveur. En utilisant les fichiers robots.txt, .htaccess, et des solutions comme mod_evasive ou le blocage d’adresses IP, vous pouvez protéger votre site des bots indésirables tout en optimisant le référencement pour les moteurs de recherche.

Sources recommandées :

AbuseIPDB – Liste des IP malveillantes à bannir

Liste de bots utiles au référencement naturel / SEO

Documentation officielle Apache pour mod_evasive