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.

Tags: