Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
bloquer_les_robots_crawlers_non_souhaites [2023/12/15 17:57] – [Pourquoi ?] Flaz | bloquer_les_robots_crawlers_non_souhaites [2024/12/09 08:29] (Version actuelle) – [Parasites] Flaz |
---|
===== Pourquoi ? ===== | ===== Pourquoi ? ===== |
| |
Les robots d'exploration web (crawlers) peuvent devenir les principaux consommateurs de ressources((Processeur, bande passante…)) d'un serveur. Le but poursuivi dans cette fiche est de bloquer les robots non souhaités (indésirables) tout en laissant les autres parcourir et indexer les sites visés. | Les robots d'exploration (crawlers) peuvent devenir les principaux consommateurs de ressources((Processeur, bande passante…)) d'un serveur hébergeant des sites web. Le but poursuivi dans cette fiche est de bloquer les robots non souhaités (indésirables) tout en laissant les autres parcourir et indexer les sites visés. |
| |
Dans le cas traité, on souhaite bloquer deux types d'//indésirables// : | Dans le cas traité, on souhaite bloquer deux types d'//indésirables// : |
* les //parasites// qui opèrent à visage découvert, | * les //parasites// qui opèrent à visage découvert, |
* les //usurpateurs// qui se font passer pour un robots souhaitable((Au sens où la plupart des responsables web souhaitent leur visite : Google, Bing, Yahoo!… )). | * les //usurpateurs// qui se font passer pour un robot «souhaitable»((Au sens où la plupart des responsables web souhaitent leur visite : Google, Bing, Yahoo!… )). |
| |
===== Identification ===== | ===== Identification ===== |
| |
Les //parasites// se comportent ouvertement comme des crawlers : | Les //parasites// se comportent ouvertement comme des crawlers : |
* ils consultent les fichiers robots.txt, | * ils consultent les fichiers robots.txt((Ce qui ne veut pas dire qu'ils en respectent les directives.)), |
* s'identifient comme des "X-bot", en utilisant un nom clairement identifiable, | * s'identifient comme des "X-bot", en utilisant un nom clairement identifiable, |
* font des requêtes très rapprochées mais pas trop((Comme le feraient des attaquant en DOS.)), | * font des requêtes très rapprochées mais pas trop((Comme le feraient des attaquant en DOS.)), |
Les //usurpateurs// se comportent eux aussi comme des crawlers mais dissimulent leur activité derrière de faux identifiants identiques à un service connu. | Les //usurpateurs// se comportent eux aussi comme des crawlers mais dissimulent leur activité derrière de faux identifiants identiques à un service connu. |
| |
Leur qualification d'//usurpateurs// ne découle pas à une appréciation subjective mais bel et bien du fait qu'ils ne sont pas qui ils prétendent être. | Leur qualification d'//usurpateurs// ne découle pas à une appréciation subjective mais du constat qu'ils ne sont pas qui ils prétendent être. |
| |
==== Également non souhaités ==== | ==== Également non souhaités ==== |
- La détection s'appuie sur les journaux d'Apache et ne peut donc intervenir qu'après coup, c'est-à-dire à partir d'un événement renseigné dans un journal. | - La détection s'appuie sur les journaux d'Apache et ne peut donc intervenir qu'après coup, c'est-à-dire à partir d'un événement renseigné dans un journal. |
- Le blocage s'applique à toute requête émise depuis l'IP d'origine, pas uniquement les requêtes web traitées par Apache (effet de bord) | - Le blocage s'applique à toute requête émise depuis l'IP d'origine, pas uniquement les requêtes web traitées par Apache (effet de bord) |
- Le blocage être persistant, de quelques secondes à toujours. | - La persistance du blocage est paramètrable de quelques secondes à toujours. |
| |
En pratique : | En pratique : |
* [[https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html|Module Apache mod_authz_host]] | * [[https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html|Module Apache mod_authz_host]] |
* [[https://httpd.apache.org/docs/2.4/expr.html|Les expressions dans le serveur HTTP Apache]] | * [[https://httpd.apache.org/docs/2.4/expr.html|Les expressions dans le serveur HTTP Apache]] |
| * [[https://developers.google.com/search/docs/crawling-indexing/verifying-googlebot?hl=fr|Validation de Googlebot et des autres robots d'exploration Google]] |
| |
La détections de usurpateurs est confiée au module [[https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html|mod_authz_host]] d'Apache2. Cela a 2 conséquences : | La détections de usurpateurs est confiée au module [[https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html|mod_authz_host]] d'Apache2. Cela a 2 conséquences : |
</code> | </code> |
//La sous-expression contenant "HTTP:X-FORWARDED-FOR" n'éclaire pas notre propos. Elle est néanmoins nécessaire pour traiter correctement le cas où la requête transite par un Réseau de Diffusion de Contenu (RDC ou CDN).// | //La sous-expression contenant "HTTP:X-FORWARDED-FOR" n'éclaire pas notre propos. Elle est néanmoins nécessaire pour traiter correctement le cas où la requête transite par un Réseau de Diffusion de Contenu (RDC ou CDN).// |
| |
| == Extension == |
| |
| Cette technique est facilement applicable à d'autres //crawlers// dont on souhaite tester l'identité. Par exemple, Apple fournit les [[https://support.apple.com/fr-fr/HT204683|indications permettant d'authentifier l'Applebot]]. On en tire la règle suivante : |
| <code> |
| <If "%{HTTP_USER_AGENT} =~ /Applebot/ && ! -n %{HTTP:X-FORWARDED-FOR}"> |
| Require host .applebot.apple.com |
| </If> |
| </code> |
| |