Facet Bot Blocker
Bloquea solicitudes de bots que sondean excesivamente los parámetros de búsqueda facetada para proteger el rendimiento del sitio y el SEO.
facet_bot_blocker
Instalar
composer require 'drupal/facet_bot_blocker:^1.0'
Overview
El módulo Facet Bot Blocker protege los sitios Drupal de bots maliciosos y rastreadores que abusan de la funcionalidad de búsqueda facetada. Cuando los bots solicitan continuamente niveles más profundos de parámetros de facetas (por ejemplo, ?f[0]=color:red&f[1]=size:large&f[2]=brand:example), pueden causar una degradación significativa del rendimiento y crear problemas de SEO al generar URLs indexadas excesivas.
Este módulo intercepta las solicitudes HTTP temprano en el proceso de arranque de Drupal mediante un event subscriber. Cuando una solicitud contiene más parámetros de facetas que el límite configurado, el módulo devuelve inmediatamente una respuesta 403 Forbidden o 410 Gone con un mensaje personalizable, evitando que la solicitud consuma recursos del servidor.
Para sitios de alto tráfico, el módulo opcionalmente se integra con Memcache o Redis para almacenar la configuración y las métricas de seguimiento en memoria en lugar de la base de datos, asegurando una sobrecarga de rendimiento mínima incluso durante ataques de bots.
Features
- Bloquea solicitudes HTTP que contienen parámetros de consulta de facetas (f[]) que exceden un límite configurable
- Opción entre códigos de respuesta HTTP 410 Gone o HTTP 403 Forbidden para solicitudes bloqueadas
- Mensaje HTML personalizable mostrado a los solicitantes bloqueados
- Panel de control con métricas en tiempo real incluyendo conteos de solicitudes bloqueadas/permitidas, porcentaje de solicitudes bloqueadas y detalles sobre la última solicitud bloqueada (IP, ruta, user agent)
- Permiso de omisión que permite a usuarios autenticados o roles específicos saltarse el bloqueo
- Almacenamiento en caché automático de valores de configuración cuando los módulos Memcache o Redis están instalados para mejorar el rendimiento en entornos de alto tráfico
- Event subscriber ligero con prioridad 101 para interceptación temprana de solicitudes
Use Cases
Protección de sitios de comercio electrónico con mucha búsqueda
Los sitios de comercio electrónico con catálogos de productos extensos a menudo implementan búsqueda facetada permitiendo filtrar por múltiples atributos (color, tamaño, marca, rango de precio, etc.). Los bots pueden explotar esto combinando sistemáticamente todos los valores de filtro posibles, generando millones de URLs. Este módulo previene tal abuso limitando el número de parámetros de filtro simultáneos que una sola solicitud puede contener.
Mitigación de contaminación SEO de URLs generadas por bots
Cuando los bots crean solicitudes con muchas combinaciones de facetas, estas URLs pueden ser indexadas por motores de búsqueda, diluyendo el valor SEO de su sitio con páginas de contenido de baja calidad o duplicado. Usar la opción de respuesta 410 Gone señala a los motores de búsqueda que estas URLs deben ser eliminadas de su índice.
Reducción de carga del servidor por rastreadores agresivos
El rastreo agresivo de bots en páginas de búsqueda facetada puede consumir recursos significativos del servidor ya que cada solicitud puede desencadenar consultas a la base de datos para filtrar resultados. Al bloquear solicitudes a nivel del event subscriber (antes de que Drupal arranque completamente), este módulo minimiza el consumo de recursos del tráfico abusivo.
Protección del backend Solr/Elasticsearch contra sobrecarga
Los sitios que usan Search API con backends de Solr o Elasticsearch pueden experimentar sobrecarga del servicio de búsqueda cuando los bots hacen consultas facetadas excesivas. Este módulo evita que esas consultas lleguen al backend de búsqueda bloqueándolas temprano en el ciclo de solicitud.
Tips
- Comience con un límite de facetas conservador (por ejemplo, 2-3) y monitoree el panel para ver cuántas solicitudes están siendo bloqueadas. Ajuste el límite según sus hallazgos.
- Use el código de respuesta HTTP 410 Gone si el SEO es una preocupación, ya que esto ayuda a los motores de búsqueda a eliminar URLs generadas por bots de su índice más rápido que 403 Forbidden.
- Otorgue el permiso 'bypass facet bot blocker' a usuarios autenticados o roles de editor que puedan necesitar legítimamente usar filtrado facetado profundo.
- Instale Memcache o Redis para sitios de producción para obtener el beneficio completo del panel de métricas y mejorar el rendimiento general del módulo.
- Revise el 'Último User Agent bloqueado' en el panel para identificar bots específicos que están rastreando más agresivamente sus páginas de búsqueda facetada.
- Considere combinar este módulo con otras medidas de protección contra bots como limitación de tasa o CAPTCHA para una protección integral.
Technical Details
Admin Pages 2
/admin/config/system/facet-bot-blocker
Configura el comportamiento de bloqueo del módulo incluyendo el umbral del límite de parámetros de facetas, el código de respuesta HTTP para solicitudes bloqueadas y el mensaje HTML personalizado mostrado a los usuarios bloqueados.
/admin/reports/facet-bot-blocker
Ver estadísticas y métricas en tiempo real sobre solicitudes de búsqueda facetada bloqueadas y permitidas. Este panel proporciona visibilidad sobre la efectividad del módulo protegiendo su sitio del rastreo excesivo de bots.
Permisos 3
Troubleshooting 4
El seguimiento de métricas requiere que el módulo Memcache o Redis esté instalado. Sin estos módulos, el panel no puede persistir los contadores de solicitudes entre cargas de página. Instale el módulo drupal/memcache o drupal/redis para habilitar el seguimiento de métricas.
Aumente el límite de parámetros de facetas en la configuración del módulo. Analice el uso legítimo de búsqueda facetada de su sitio para determinar el número máximo de filtros de facetas simultáneos que los usuarios típicamente aplican, luego establezca el límite ligeramente por encima de ese número.
Este es el comportamiento esperado. El módulo bloquea las solicitudes después de que el servidor web ha registrado la solicitud pero antes de que Drupal la procese completamente. El módulo previene consultas a la base de datos y renderizado de contenido, no la conexión HTTP inicial.
Cuando se usa Memcache o Redis, los valores de configuración se almacenan en caché. Limpie la caché de Drupal (drush cr) después de hacer cambios de configuración para asegurar que se usen los nuevos valores.
Security Notes 3
- El permiso 'administer facet bot blocker' está marcado como restringido y solo debe otorgarse a administradores de confianza, ya que controla el comportamiento de bloqueo relevante para la seguridad.
- El campo de mensaje de bloqueo personalizado acepta contenido HTML - asegúrese de que solo administradores de confianza puedan modificar esta configuración para prevenir vulnerabilidades XSS.
- El módulo registra direcciones IP bloqueadas en la caché - tenga en cuenta las políticas de retención de datos si almacena esta información a largo plazo.