
En entornos de hosting compartido, los bots de rastreo agresivos pueden degradar el rendimiento, consumir cuota de CPU o ancho de banda y afectar al SEO por generar tráfico no humano. Sin acceso a herramientas de servidor avanzadas (fail2ban, mod_evasive), .htaccess se convierte en una herramienta crítica para detectar y mitigar estos comportamientos. En este artículo, explico cómo identificar patrones de bots, reglas prácticas de bloqueo en .htaccess y buenas prácticas para evitar falsos positivos.
Por qué detectar y bloquear bots agresivos
- Protección de recursos: en hosting compartido, un bot que realiza cientos de peticiones por segundo puede impactar a todos los sitios en el servidor.
- Preservar SEO: bots maliciosos pueden generar URLs masivas o scrapping que afectan al crawl budget y a la indexación.
- Evitar abuso: bots que intentan explotar formularios, buscar vulnerabilidades o descargar contenido a escala.
Cómo detectar bots: señales en los logs
Antes de bloquear, hay que detectar de forma fiable para minimizar errores. Algunos indicadores útiles:
- Alta tasa de peticiones desde una misma IP en periodos cortos (p. ej. > 60 req/min).
- User-Agent vacío o genérico («Java/», «curl/», «Python-urllib/»).
- Accesos repetidos a URLs no indexables (p. ej. /xmlrpc.php, /wp-login.php) o a mapas de sitio no existentes.
- Falta de comportamiento humano: no solicitan la página inicial ni recursos estáticos, solo endpoints de API o listados.
- Reverse DNS que no coincide con el agente declarado (Googlebot debería resolver a googlebot.com).
Herramientas simples de detección en hosting compartido
- Accede a los logs desde cPanel (Raw Access Logs) y usa comandos locales o herramientas como GoAccess en tu equipo para analizar tasas y patrones.
- Usa AWStats para identificar user-agents más activos.
- Ejecuta pruebas puntuales con curl: curl -I -A ‘BadBot’ https://tudominio.com para ver la respuesta configurada.
Principios para bloquear vía .htaccess en hosting compartido
- Prioriza reglas que no requieran módulos no disponibles en shared hosting (mod_rewrite y mod_setenvif son usualmente soportados).
- Empieza bloqueando user-agents sospechosos y peticiones sin UA; después añade IPs persistentes tras verificar.
- Evita reglas demasiado amplias que puedan afectar a motores legítimos (Google, Bing, DuckDuckGo).
- Registra y prueba: implementa primero reglas que devuelvan 403 o 410 y monitorea logs.
Bloqueo con .htaccess: ejemplos prácticos
Abajo tienes reglas probadas y compatibles con la mayoría de entornos cPanel. Añade estas líneas en el archivo .htaccess ubicado en la raíz pública (public_html) y adapta las listas.
1) Bloquear user-agents sospechosos
RewriteEngine On
# Bloqueo por user-agent básicos
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} (?:libwww-perl|wget|curl|python-requests|scrapy|java/|httpclient) [NC]
RewriteRule .* - [F,L]
Explicación: bloquea agentes vacíos y patrones comunes de librerías de scraping. La bandera [NC] ignora mayúsculas/minúsculas.
2) Bloquear bots identificados por patrones
# Bloqueo de bots listados (ejemplo)
RewriteCond %{HTTP_USER_AGENT} (?:BadBot|EvilScraper|MegaIndex|AhrefsBot) [NC]
RewriteRule .* - [F,L]
Actualiza la lista basado en tu análisis de logs. Mantén una lista blanca para bots legítimos si lo necesitas.
3) Bloquear IPs persistentes
# IPs individuales (compatibilidad Apache 2.2/2.4)
Require all granted
Require not ip 203.0.113.45
Require not ip 198.51.100.0/24
Order Allow,Deny
Allow from all
Deny from 203.0.113.45
Deny from 198.51.100.0/24
En hosting compartido, las IPs pueden cambiar. Verifica que las IPs son realmente responsables antes de bloquearlas.
4) Bloquear referer o patrones de URL maliciosos
# Bloquear referers de spam o scrapers
SetEnvIfNoCase Referer "spamdomain\.com" bad_ref
Order Allow,Deny
Allow from all
Deny from env=bad_ref
Útil para paradas rápidas de bots que usan referers específicos o para cortar tráfico de spam de referer.
Pruebas y validación: evitar falsos positivos
- Antes de aplicar reglas definitivas, regístralas en modo de prueba: devuelven 403 para una UA de prueba y analizas logs.
- Comprueba bots legítimos: usa herramientas públicas para verificar user-agents (p. ej. Googlebot) y su reverse DNS. No bloquees motores de búsqueda legítimos.
- Realiza pruebas con curl desde diferentes user-agents: curl -I -A ‘Googlebot’ https://tudominio.com y curl -I -A ‘BadBot’ https://tudominio.com para comparar respuestas.
Limitaciones y alternativas cuando .htaccess no basta
.htaccess es potente pero tiene límites. No puede realizar rate-limiting avanzado ni análisis por ventana temporal con la precisión de herramientas de nivel servidor. Si el abuso persiste considera:
- Migrar a un plan con acceso a mod_evasive, fail2ban o firewall de aplicaciones (WAF).
- Utilizar servicios externos: Cloudflare o Sucuri ofrecen bloqueo de bots, rate limiting y captchas que no requieren cambios en el servidor.
- Configuraciones a nivel de aplicación: plugins de WordPress para limitar intentos de login, bloquear XML-RPC o aplicar captcha en formularios.
Buenas prácticas operativas
- Mantén una lista rotativa: revisa y depura las reglas en .htaccess cada mes para no acumular entradas obsoletas.
- Combina técnicas: user-agent + IP + referer. Un enfoque multinivel reduce falsos positivos.
- Documenta cambios y usa comentarios en .htaccess para saber por qué se añadió cada regla.
- Monitorea tras aplicar cambios: revisa tiempos de respuesta, tasa de error 403 y tráfico legítimo afectado.
Ejemplo real: caso práctico
Detecté en logs picos recurrentes de 120–200 req/min desde un conjunto de IPs que usaban user-agent vacío y solicitaban /sitemap.xml repetidamente. Implementé:
# Bloqueo rápido para bots sin UA y requests a sitemap
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{REQUEST_URI} sitemap\.xml [NC]
RewriteRule .* - [F,L]
Resultado: reducción del 80% de las peticiones maliciosas en 48 horas y mejora de CPU en el hosting. Tras análisis, añadí bloqueos por rango de IP y mantuve una lista blanca para rastreadores legítimos.
Conclusión
En hosting compartido, .htaccess es una herramienta práctica y accesible para detectar y bloquear bots de rastreo agresivos. La clave es identificar patrones en los logs, aplicar reglas progresivas (user-agent, referer, IP) y validar constantemente para evitar afectar bots legítimos. Cuando la amenaza supera las capacidades de .htaccess, complementa con WAFs o servicios externos. Con un enfoque disciplinado y pruebas, puedes proteger recursos, mejorar rendimiento y preservar el SEO sin acceso root al servidor.