Détection de bots
Reconnaissez les robots qui visitent votre application, laissez passer ceux que vous voulez et bloquez les autres.
La détection de bots reconnaît les robots connus : moteurs de recherche, robots d'IA, scrapers, scanners de vulnérabilités, bibliothèques HTTP… Les visiteurs humains ne sont pas concernés.
Un robot qui prétend être un moteur de recherche (par exemple Googlebot ou Bingbot) est vérifié : s'il ne vient pas réellement du réseau qu'il annonce, c'est un imposteur et il est bloqué. Si la vérification ne peut pas se faire (DNS indisponible), la requête passe : Zarex ne bloque jamais sur un doute.
Le problème
Une grande partie du trafic d'un site ne vient pas d'humains. Certains robots sont utiles : Google qui indexe vos pages, WhatsApp qui affiche l'aperçu d'un lien. D'autres non : scrapers qui copient vos prix et vos contenus, robots d'IA qui aspirent vos pages, scanners de vulnérabilités, scripts. Et un robot malveillant peut se faire passer pour Googlebot afin d'être laissé passer.
Ce qu'elle arrête
- les scrapers et aspirateurs de contenu ;
- les robots d'IA, si vous ne voulez pas qu'ils lisent vos pages ;
- les scanners et les scripts (curl, python-requests…) ;
- les faux moteurs de recherche, démasqués par la vérification.
Quand l'utiliser
Pages de contenu et de prix, API qui ne doivent être appelées que par votre propre interface, formulaires. Autorisez les moteurs de recherche si votre site doit être référencé.
Une limite à connaître
La détection repose sur l'identité qu'annonce le robot (son User-Agent). Un robot qui se fait passer pour un navigateur ordinaire n'est pas reconnu par cette règle : combinez-la avec la limitation de débit.
Configuration
import { detectBot } from "@zarex/express"; // ou le paquet de votre framework
rules: [detectBot({ allow: ["CATEGORY:SEARCH_ENGINE"] })],Ici, les moteurs de recherche vérifiés passent ; tous les autres robots sont bloqués.
Bloqué par défaut
Un robot reconnu qui n'est pas dans allow est refusé. Sans option, detectBot() bloque donc tous les robots reconnus, moteurs de recherche compris : pensez à les autoriser si votre site doit être référencé.
Options
| Option | Valeurs | Rôle |
|---|---|---|
allow | catégories ou noms de robots | Robots autorisés. |
deny | catégories ou noms de robots | Robots toujours refusés, même s'ils sont aussi dans allow. |
mode | "LIVE" · "DRY_RUN" · "OFF" | Défaut "LIVE". |
Les noms ne tiennent pas compte de la casse : "Googlebot" et "GOOGLEBOT" sont équivalents.
Catégories
| Catégorie | Exemples |
|---|---|
CATEGORY:SEARCH_ENGINE | Googlebot, Bingbot, DuckDuckBot, YandexBot |
CATEGORY:AI | GPTBot, ClaudeBot, PerplexityBot |
CATEGORY:SOCIAL | WhatsAppBot, FacebookBot, LinkedInBot, TelegramBot |
CATEGORY:MONITOR | UptimeRobot, Pingdom, Datadog |
CATEGORY:SEO_TOOL | AhrefsBot, SemrushBot |
CATEGORY:ARCHIVE | ArchiveOrgBot, WaybackMachine |
CATEGORY:SCRAPER | robots d'extraction de contenu |
CATEGORY:SCANNER | scanners de vulnérabilités |
CATEGORY:HTTP_LIBRARY | curl, Wget, python-requests, axios |
Exemple : refuser les robots d'IA
rules: [
detectBot({
allow: ["CATEGORY:SEARCH_ENGINE", "CATEGORY:SOCIAL", "CATEGORY:MONITOR"],
deny: ["CATEGORY:AI"],
}),
],