Résoudre la surcharge des robots IA dans la recherche à facettes Drupal

Résoudre la surcharge des robots IA dans la recherche à facettes Drupal

Alex Rollin
Alex Rollin
August 19, 2025
Dernière mise à jour : February 15, 2026
August 19, 2025

Si les factures de serveur de votre site Drupal explosent et que les performances s'effondrent, vous avez probablement affaire à une surcharge de robots IA sur vos pages de recherche à facettes. Ces robots explorent toutes les combinaisons de filtres possibles, créant des milliers, voire des millions d'URL uniques qui martèlent vos serveurs. Ce guide vous présente des solutions pratiques à implémenter dès aujourd'hui, de la protection périphérique aux modules spécifiques à Drupal.

Ce que vous allez apprendre

Vous découvrirez comment identifier les modèles de trafic des robots, implémenter une protection à plusieurs niveaux et configurer le nouveau module Facet Bot Blocker lancé en mars 2025. Nous couvrirons à la fois les gains rapides que vous pouvez déployer immédiatement et les changements architecturaux à plus long terme qui empêchent le problème de se reproduire.

Prérequis

Avant de commencer à implémenter ces correctifs pour les problèmes de robots dans la recherche à facettes Drupal, assurez-vous d'avoir :

  • Un accès administrateur à votre site Drupal (Drupal 10.x ou 11.x)
  • Une compréhension de base du fonctionnement de la recherche à facettes sur votre site
  • Un accès aux journaux du serveur ou aux analyses pour vérifier les modèles de trafic des robots
  • Composer installé si vous ajoutez de nouveaux modules
  • Un accès au panneau de contrôle du CDN ou de l'hébergement pour implémenter la protection périphérique

Pour les sites utilisant Search API avec Solr ou Elasticsearch, vous aurez également besoin d'accéder aux panneaux de configuration de ces services.

Guide d'implémentation étape par étape

Étape 1 : Identifier et mesurer le problème

Commencez par confirmer que vous avez réellement un problème de robots, et non simplement un trafic légitime élevé.

Vérifiez vos journaux de serveur pour des modèles comme :

grep "f\[0\]" /var/log/apache2/access.log | wc -l

Recherchez :

  • Des requêtes séquentielles rapides avec différentes combinaisons de facettes
  • Des agents utilisateurs contenant « bot », « crawler » ou des termes liés à l'IA
  • Des adresses IP effectuant des centaines de requêtes par minute

Dans Google Analytics ou votre plateforme d'analyse, vérifiez :

  • Des vues de page anormalement élevées sur les pages de résultats de recherche
  • Des métriques d'engagement faibles (taux de rebond élevé, temps zéro sur la page)
  • Des pics de trafic qui ne correspondent pas aux campagnes marketing

Étape 2 : Implémenter la protection périphérique (soulagement immédiat)

Le moyen le plus rapide d'arrêter l'hémorragie est de bloquer les robots avant qu'ils n'atteignent votre serveur.

Pour les utilisateurs de Cloudflare :

1. Connectez-vous à votre tableau de bord Cloudflare
2. Naviguez vers Sécurité > WAF > Règles personnalisées
3. Cliquez sur « Créer une règle »
4. Configurez les paramètres suivants :

Nom de la règle : Bloquer l'exploration excessive des facettes
Quand les requêtes entrantes correspondent :
  - Champ : Chaîne de requête URI
  - Opérateur : contient
  - Valeur : f[3]=
  
Alors : Bloquer

Ceci bloque toute requête avec 4 facettes ou plus sélectionnées. Ajustez le nombre selon vos cas d'utilisation légitimes.

Pour AWS CloudFront/WAF :

1. Ouvrez la console AWS WAF
2. Créez une nouvelle liste ACL Web ou modifiez celle existante
3. Ajoutez une règle avec ces paramètres :

{
  "Name": "BlockExcessiveFacets",
  "Priority": 1,
  "Statement": {
    "ByteMatchStatement": {
      "SearchString": "f[3]=",
      "FieldToMatch": {
        "QueryString": {}
      },
      "TextTransformations": [{
        "Priority": 0,
        "Type": "NONE"
      }],
      "PositionalConstraint": "CONTAINS"
    }
  },
  "Action": {
    "Block": {}
  }
}

Nous avons constaté que le blocage en périphérie peut réduire la charge du serveur de 60 à 80 % en quelques minutes après le déploiement.

Étape 3 : Installer et configurer le module Facet Bot Blocker

Pour une protection au niveau Drupal contre l'exploration par robots de la recherche à facettes, le module Facet Bot Blocker offre un contrôle granulaire.

Installation :

composer require drupal/facet_bot_blocker
drush en facet_bot_blocker

Configuration :

1. Naviguez vers /admin/config/system/facet-bot-blocker
2. Définissez ces valeurs initiales :

  • Paramètres de facettes maximum : 3
  • Code de réponse : 410 (Disparu)
  • Message de blocage : « Trop de filtres sélectionnés. Veuillez affiner votre recherche. »

3. Si vous avez Redis ou Memcache installé, activez le stockage en mémoire :

// Dans settings.php
$settings['facet_bot_blocker_storage'] = 'redis';

Le module suit les requêtes par session et peut différencier les utilisateurs légitimes explorant les filtres des robots explorant systématiquement les combinaisons.

Étape 4 : Configurer robots.txt et les balises méta

Bien que de nombreux robots ignorent ces directives, une configuration appropriée aide avec les robots d'exploration légitimes.

Ajoutez à votre robots.txt :

User-agent: *
Disallow: /*f[0]*
Disallow: /*f[
Disallow: /search?*
Crawl-delay: 2

Pour les balises méta, utilisez le module Metatag pour ajouter noindex aux résultats à facettes :

// Dans un module personnalisé
function mymodule_metatag_alter(array &$metatags, array &$context) {
  $request = \Drupal::request();
  $query = $request->query->all();
  
  if (isset($query['f'])) {
    $metatags['robots'] = [
      '#tag' => 'meta',
      '#attributes' => [
        'name' => 'robots',
        'content' => 'noindex, follow',
      ],
    ];
  }
}

Étape 5 : Refactoriser l'implémentation des facettes

Pour une solution plus permanente, modifiez le fonctionnement des facettes pour les rendre moins attrayantes pour les robots.

Convertir les liens en formulaires :

Au lieu de :

<a href="/search?f[0]=category:shoes&f[1]=size:10">Taille 10</a>

Utilisez :

<form method="get" action="/search">
  <input type="checkbox" name="category" value="shoes">
  <input type="checkbox" name="size" value="10">
  <button type="submit">Appliquer les filtres</button>
</form>

Les robots soumettent rarement des formulaires, ce qui réduit considérablement les tentatives d'exploration.

Implémenter le chargement AJAX :

// Exemple de gestionnaire de facettes AJAX
document.querySelectorAll('.facet-checkbox').forEach(checkbox => {
  checkbox.addEventListener('change', function() {
    const filters = collectActiveFilters();
    
    fetch('/api/search-results', {
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({filters: filters})
    })
    .then(response => response.json())
    .then(data => updateSearchResults(data));
  });
});

Ceci garde l'URL statique pendant que les filtres changent, empêchant complètement l'exploration par les robots.

Étape 6 : Configurer la limitation du débit

Ajoutez une couche de protection supplémentaire avec la limitation du débit pour les pages de recherche Drupal.

Configuration Apache :

<Location "/search">
  SetEnvIf Request_URI "f\[" facet_request
  
  <RequireAll>
    Require all granted
    Require not env facet_request
  </RequireAll>
</Location>

Configuration Nginx :

location /search {
  if ($query_string ~ "f\[3\]") {
    return 429;
  }
  
  limit_req zone=search_limit burst=10 nodelay;
  proxy_pass http://backend;
}

Erreurs courantes à éviter

Bloquer tous les robots sans discrimination : Vous voulez toujours que les moteurs de recherche indexent vos pages principales. Notre expérience montre qu'un blocage trop agressif peut nuire au référencement en quelques semaines.

Oublier de tester avec de vrais utilisateurs : Vérifiez toujours que vos limites fonctionnent pour les cas d'utilisation légitimes. Configurez une surveillance pour détecter les faux positifs.

Se fier à une seule couche de protection : Les robots évoluent rapidement. Utilisez plusieurs méthodes de protection pour la résilience.

Ne pas surveiller après l'implémentation : Les modèles de robots changent. Examinez vos journaux mensuellement et ajustez les règles en conséquence.

Ignorer les implications de cache : Les URL à facettes peuvent faire exploser votre stockage de cache. Configurez les exclusions de cache pour les paramètres de facettes :

// Dans settings.php
$config['system.performance']['cache']['page']['exclude_paths'] = [
  '/search*',
];

Tests et vérification

Vérifier la protection périphérique :

Testez vos règles WAF avec curl :

# Devrait être bloqué
curl -I "https://votresite.com/search?f[0]=test&f[1]=test&f[2]=test&f[3]=test"

# Devrait fonctionner
curl -I "https://votresite.com/search?f[0]=test&f[1]=test"

Vérifier la configuration du module :

# Vérifier que le module fonctionne
drush config:get facet_bot_blocker.settings

# Vérifier les blocages récents
drush sql:query "SELECT * FROM watchdog WHERE type='facet_bot_blocker' ORDER BY timestamp DESC LIMIT 10"

Surveiller l'impact sur les performances :

Avant et après l'implémentation, mesurez :

  • L'utilisation du processeur du serveur
  • Le nombre de requêtes de base de données
  • Les temps de chargement des pages
  • La consommation de bande passante

Vous devriez voir des améliorations significatives dans les 24 heures suivant l'implémentation.

Valider l'impact sur le référencement :

Utilisez Google Search Console pour vous assurer que :

  • Les pages importantes sont toujours explorées
  • Il n'y a pas d'augmentation des erreurs d'exploration
  • La couverture reste stable

Conclusion

Gérer la surcharge des robots IA sur la recherche à facettes Drupal nécessite une approche multicouche. Commencez par la protection périphérique pour un soulagement immédiat, ajoutez le module Facet Bot Blocker pour un contrôle spécifique à Drupal, et envisagez de refactoriser vos facettes pour une prévention à long terme. Surveillez régulièrement votre implémentation et ajustez les limites selon les modèles réels.

Le travail avec des équipes nous a appris que l'approche la plus efficace combine des gains rapides avec des améliorations architecturales progressives. Vous n'avez pas besoin de tout implémenter d'un coup – commencez par la protection périphérique et ajoutez des couches au besoin.

Si vous constatez une explosion des coûts de serveur due au trafic de robots sur votre recherche à facettes Drupal, nous pouvons vous aider à implémenter ces protections et trouver le bon équilibre entre accessibilité et protection. Notre équipe peut auditer votre configuration actuelle, implémenter des règles de gestion des robots appropriées et vous aider à refactoriser votre architecture de recherche pour qu'elle soit plus résistante à l'exploration automatisée tout en maintenant une excellente expérience utilisateur.

Share this article