Cómo bloquear Scrapy y otros bots abusivos en OpenLiteSpeed, Apache y Nginx

En entornos de producción, el scraping no autorizado puede convertirse en una amenaza seria: desde sobrecarga de recursos hasta exfiltración de datos. Herramientas como Scrapy, curl o python-requests son utilizadas habitualmente para realizar crawling automatizado que no siempre respeta el robots.txt.

En este artículo se detalla cómo bloquear este tipo de bots en OpenLiteSpeed, Apache y Nginx, con reglas específicas tanto por User-Agent como por IP, incluyendo una validación más estricta del Googlebot legítimo.


🔧 ¿Por qué bloquear bots?

Bloquear tráfico automatizado no deseado reduce:

  • El consumo de CPU y ancho de banda.
  • Las amenazas de scraping intensivo o ataques de denegación de servicio a baja escala.
  • El desgaste de infraestructura y bases de datos.

La clave está en implementar filtros eficientes a nivel de servidor web, sin depender exclusivamente de soluciones externas.


🗂️ Bloqueo en Apache y OpenLiteSpeed mediante .htaccess

En entornos Apache u OpenLiteSpeed con .htaccess habilitado, puedes usar las siguientes reglas:

# Recomendaciones para bloquear bots que saturan tu web
# Cortesía de https://wpdirecto.com y https://administraciondesistemas.com

RewriteEngine On

# Bloquear herramientas de scraping comunes
RewriteCond %{HTTP_USER_AGENT} (scrapy|python-requests|curl|wget|libwww|httpunit|nutch) [NC]
RewriteRule ^.* - [F,L]
Lenguaje del código: PHP (php)

📌 Importante para OpenLiteSpeed

  • En WebAdmin → Virtual Hoststu dominioContext/, establece Allow Override en Yes.
  • Reinicia el servidor para aplicar los cambios:
/usr/local/lsws/bin/lswsctrl restart

⚙️ Configuración en Nginx

Nginx no usa .htaccess, así que los filtros se aplican en nginx.conf o en bloques de server.

server {
    ...

    # Bloquear herramientas de scraping
    if ($http_user_agent ~* (scrapy|python-requests|curl|wget|libwww|httpunit|nutch)) {
        return 403;
    }
    ...
}
Lenguaje del código: PHP (php)

Valida la sintaxis y recarga Nginx:

sudo nginx -t && sudo systemctl reload nginx

🔍 Validación rápida con curl

Puedes probar si las reglas funcionan ejecutando:

curl -A "Scrapy/2.9.0 (+https://scrapy.org)" -I https://administraciondesistemas.com
Lenguaje del código: JavaScript (javascript)

Respuesta esperada:

HTTP/1.1 403 Forbidden
Lenguaje del código: HTTP (http)

🛡️ Sugerencias adicionales

  • Cloudflare WAF: refuerza las reglas con inspección a nivel CDN.
  • Rate Limiting: limita IPs con demasiadas peticiones por segundo.
  • iptables o firewalld: permite bloquear rangos enteros si se detecta scraping automatizado continuo.
  • ModSecurity: si ya usas Apache, considera reglas OWASP para mayor cobertura.

✅ Conclusión

Este enfoque multicapas te permite frenar tráfico abusivo de forma eficaz en el propio perímetro de tu servidor. Combinado con observabilidad de logs y herramientas de análisis, se convierte en una primera línea de defensa fundamental para proteger sitios en producción frente a scraping intensivo y bots hostiles.

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio
×