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 Hosts → tu dominio → Context →
/
, estableceAllow Override
enYes
. - 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.