Aller au contenu
ZarexDocs

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

OptionValeursRôle
allowcatégories ou noms de robotsRobots autorisés.
denycatégories ou noms de robotsRobots 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égorieExemples
CATEGORY:SEARCH_ENGINEGooglebot, Bingbot, DuckDuckBot, YandexBot
CATEGORY:AIGPTBot, ClaudeBot, PerplexityBot
CATEGORY:SOCIALWhatsAppBot, FacebookBot, LinkedInBot, TelegramBot
CATEGORY:MONITORUptimeRobot, Pingdom, Datadog
CATEGORY:SEO_TOOLAhrefsBot, SemrushBot
CATEGORY:ARCHIVEArchiveOrgBot, WaybackMachine
CATEGORY:SCRAPERrobots d'extraction de contenu
CATEGORY:SCANNERscanners de vulnérabilités
CATEGORY:HTTP_LIBRARYcurl, Wget, python-requests, axios

Exemple : refuser les robots d'IA

rules: [
  detectBot({
    allow: ["CATEGORY:SEARCH_ENGINE", "CATEGORY:SOCIAL", "CATEGORY:MONITOR"],
    deny: ["CATEGORY:AI"],
  }),
],

Sur cette page