Internet es un vasto océano de información que está en constante cambio y expansión. Algo que juega un papel fundamental en la exploración y recopilación de estos enormes datos son los crawlers web, comúnmente conocidos como bots, programas automatizados que navegan por la web para indexar información, recopilar datos y ofrecer diversos servicios. Estos bots son miembros importantes del ecosistema web. Sin embargo, no todos los bots son beneficiosos para la web. A veces, también existen bots dañinos que pueden causar daño a los sitios web o ser mal utilizados.

En este artículo, exploraremos los tipos y características de los bots más comunes que encontramos en la web, cómo distinguir entre bots útiles y dañinos, y efectivas maneras específicas de proteger un sitio web de bots dañinos.


Bots famosos y comunes en la web (Bots útiles)

La mayor parte del tráfico web es generado por bots y no por personas. Entre ellos, los bots más importantes y útiles son los siguientes:

1. Bots de motores de búsqueda (Search Engine Bots)

Son los bots más frecuentes e importantes. Navegan por las páginas web para recopilar contenido y lo añaden al índice del motor de búsqueda, ayudando a los usuarios a encontrar información.

  • Googlebot (Google): El crawler web insignia de Google. Explora casi todas las páginas de la web para actualizar los resultados de búsqueda y proporciona datos a los servicios de Google (mapas, noticias, etc.). Se identifica como User-Agent como Googlebot o Mediapartners-Google.

  • Bingbot (Microsoft Bing): El crawler del motor de búsqueda Bing de Microsoft. Se identifica en User-Agent como Bingbot.

  • Baidu Spider (Baidu): El crawler del principal motor de búsqueda de China, Baidu. Es importante tener en cuenta la visita de Baidu Spider si se apunta al mercado chino. Se identifica en User-Agent como Baiduspider.

  • Yandex Bot (Yandex): El crawler del principal motor de búsqueda de Rusia, Yandex. Se identifica en User-Agent como YandexBot.

  • Yeti (Naver): El crawler del motor de búsqueda Naver de Corea del Sur. Recopila resultados de búsqueda específicos para el mercado coreano y se identifica en User-Agent como Yeti.

2. Bots de redes sociales (Social Media Bots)

Se utilizan para generar vistas previas (títulos, descripciones, imágenes) de enlaces cuando se comparten en redes sociales.

  • Facebook External Hit (Facebook): Trae información de la página al compartir enlaces en Facebook. Se identifica en User-Agent como facebookexternalhit.

  • Twitterbot (Twitter/X): Genera vistas previas de enlaces en Twitter (X). Se identifica en User-Agent como Twitterbot.

  • Slackbot (Slack): Crea vistas previas al compartir enlaces en Slack. Se identifica en User-Agent como Slackbot.

3. Bots de monitoreo/análisis (Monitoring/Analytics Bots)

Se utilizan para monitorear el estado de un sitio web, rendimiento, vulnerabilidades de seguridad, o para análisis de tráfico.

  • UptimeRobot, Pingdom: Monitorean el tiempo de actividad del sitio web y envían alertas si está caído.

  • Crawlers de sitios (Screaming Frog, Ahrefsbot, SemrushBot, etc.): Herramientas de SEO que analizan sitios web para encontrar mejoras de SEO o recopilan datos de análisis de competidores. El nombre de la herramienta está incluido en User-Agent.

  • Ahrefsbot (Ahrefs): Ahrefs es uno de los crawlers de análisis SEO más potentes descritos anteriormente. Ahrefsbot es el crawler comercial más activo en la web. Recopila una gran cantidad de datos de SEO sobre backlinks, clasificación de palabras clave, tráfico orgánico, entre otros, para los usuarios del servicio de Ahrefs. Crawlea la web de manera extensa para construir su base de datos de backlinks, por lo que es uno de los bots más visibles en los registros de servidores web, justo después de Googlebot. Se identifica en User-Agent como AhrefsBot.


Distinguiendo entre bots dañinos y útiles

Infografía comparando buenos bots vs malos bots

El impacto del tráfico de bots en un sitio web varía en gran medida según el propósito y comportamiento de los bots. Los bots dañinos pueden agotar los recursos del sitio web, robar datos o explotar vulnerabilidades de seguridad.

Características de los bots útiles

  • Cumplimiento de robots.txt: La mayoría de los bots útiles respetan el archivo robots.txt del sitio web y siguen las reglas especificadas aquí (áreas permitidas/no permitidas para rastrear, velocidad de rastreo, etc.).

  • Patrones de solicitud normales: No sobrecargan el servidor con solicitudes, manteniendo un intervalo de retraso adecuado entre ellas.

  • Uso de User-Agent legítimos: Utilizan cadenas de User-Agent claras y conocidas, a menudo incluyendo información del propietario del bot (por ejemplo: Googlebot/2.1 (+http://www.google.com/bot.html)).

  • Direcciones IP reales: Realizan solicitudes desde sus rangos de direcciones IP legítimos. (por ejemplo, Googlebot utiliza rangos de IP de propiedad de Google)

Características de los bots dañinos

  • Ignorar robots.txt: Intentan acceder sin autorización a áreas que no permiten el acceso, ignorando el archivo robots.txt.

  • Patrones de solicitud anormales: Sobrecarga del servidor por repetidas solicitudes a una página específica en un corto período de tiempo (intentos de DDoS), velocidad de rastreo anormalmente rápida, etc.

  • Falsificación de User-Agent: Se ocultan falsificando el User-Agent de un bot útil (por ejemplo, Googlebot) o utilizando un User-Agent generado aleatoriamente.

  • Direcciones IP desconocidas: Ocultan sus direcciones IP o las cambian frecuentemente utilizando servidores proxy, VPN o PCs zombie.

  • Actividades maliciosas:

    • Raspado de contenido (Content Scraping): Copian contenido de sitios web sin autorización y lo publican o revenden en otros sitios.

    • Sniping de inventario (Inventory Sniping): Aprovechan la información rápida sobre el inventario de un sitio de comercio electrónico para acaparar productos.

    • Stufado de credenciales (Credential Stuffing): Intentan iniciar sesión en otros sitios con información de cuentas de usuario robadas.

    • Registro de spam: Registran automáticamente contenido spam en foros o secciones de comentarios.

    • Ataques DDoS: Generan gran cantidad de tráfico para paralizar un sitio web.

    • Escaneo de vulnerabilidades: Escanean automáticamente los puntos de seguridad conocidos del sitio web para encontrar puntos de ataque.


Métodos efectivos para bloquear bots dañinos

Los bots maliciosos ignoran reglas como robots.txt e intentan entrar en los sitios web simulando a usuarios reales. Por lo tanto, para bloquearlos, es necesario detectar sus patrones de comportamiento anormales y implementar estrategias avanzadas que les limiten solo a ellos.

1. Bloqueo basado en direcciones IP y User-Agent (primera línea de defensa limitada)

Puede ser efectivo temporalmente si el tráfico malicioso proviene continuamente de ciertas direcciones IP o utiliza claramente cadenas de User-Agent dañinas.

  • Configuración del servidor web (Apache, Nginx):

    • Bloqueo de direcciones IP específicas:
# Ejemplo Nginx
deny 192.168.1.100;
deny 10.0.0.0/8;
- **Bloqueo de `User-Agent` dañinos:**
# Ejemplo de .htaccess de Apache
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "BadBotString|AnotherBadBot" [NC]
RewriteRule .* - [F,L] # Devuelve 403 Forbidden

Limitación: Las direcciones IP pueden ser dineradas o eludidas mediante proxies, VPN y redes Tor. Los bots maliciosos pueden intentar atacar cambiando casi infinitamente sus IP, por lo que el bloqueo basado en IP puede aumentar la carga administrativa y no ser una solución a largo plazo. Además, User-Agent también puede ser fácilmente falsificado, por lo que esta forma por sí sola puede ser insuficiente para detener bots maliciosos sofisticados.

2. Limitación de velocidad de solicitudes (Rate Limiting)

Cuando las solicitudes de una dirección IP específica, User-Agent, o cierto URL aumentan de manera anormalmente rápida en un corto período de tiempo, esas solicitudes pueden ser limitadas o bloqueadas. Esto es efectivo para detener ataques DDoS o intentos excesivos de raspado.

  • Configuración del servidor web (Ejemplo Nginx):
# Dentro del bloque http de Nginx
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

# Dentro del bloque de server o location
location / {
    limit_req zone=mylimit burst=10 nodelay; # Permitir 5 solicitudes por segundo, hasta 10 de golpe
    # ...
}

Dificultad y riesgo: La limitación de velocidad de solicitudes es muy útil pero configurar correctamente los umbrales puede ser muy complicado. Si se configura demasiado estrictamente, puede limitar el tráfico de usuarios normales o bots de motores de búsqueda útiles, reduciendo la accesibilidad del servicio. En cambio, si se establece demasiado laxamente, puede permitir que los bots maliciosos logren sus objetivos. Requiere una comprensión profunda de la naturaleza del servicio y los patrones de tráfico habituales junto con un monitoreo y ajuste continuos.

3. Construcción de un sistema de defensa personalizado basado en detección de comportamiento (estrategia más efectiva)

Es el método más sofisticado y efectivo. Los bots maliciosos pueden ocultar su dirección IP o User-Agent, pero sus patrones de comportamiento dentro del sitio web suelen ser especiales. Analizar este comportamiento anormal para identificar bots maliciosos y construir un sistema de defensa basado en estos patrones es clave.

  • Importancia del monitoreo de tráfico y análisis de registros:

    Los registros del servidor web (Access Log) son la fuente de datos más vital para detectar el comportamiento de los bots. Es esencial adquirir el hábito de revisar y analizar los registros periódicamente (al menos una vez al día). A través de ese análisis, se pueden descubrir comportamientos anormales de bots maliciosos, tales como:

    • Rutas de navegación anormales: Secuencias de páginas que no sigue una persona normalmente, cambios de página anormalmente rápidos, accesos repetidos a ciertas páginas.

    • Intentos repetidos de tareas específicas: Reiterados fracasos de inicio de sesión, intentos de iniciar sesión con cuentas inexistentes, envío infinito de formularios específicos, aprovechamiento de espacios en sistemas de reservas utilizando macros.

    • Solicitudes de URL sospechosas: Intentos repetitivos de acceso a rutas de vulnerabilidades conocidas del sitio web que no existen (por ejemplo, /wp-admin/, /phpmyadmin/, archivos .env, etc.).

    • Análisis de encabezados HTTP: Combinaciones o secuencias anormales de encabezados HTTP, encabezados faltantes, etc.

  • Ejemplo de patrón de comportamiento de bots maliciosos:

    Debo identificar patrones de comportamiento específicos de los bots maliciosos que se encuentran en los registros y hacerlo como base para implementar una lógica de defensa.

    • GET /cgi-bin/luci/;stok=.../shell?cmd=RCE

      • Descripción: Este es un intento de ataque dirigido a una vulnerabilidad de ejecución remota de código (RCE) del panel de administración de OpenWrt, especialmente en sistemas Linux que generalmente se utilizan en enrutadores y dispositivos integrados.
    • POST /wp-login.php (intentos de inicio de sesión repetidos)

      • Descripción: Un ataque de fuerza bruta o intento de stufado de credenciales para acceder a la página de administración de WordPress.
    • GET /HNAP1/

      • Descripción: Un intento de escaneo y ataque dirigido a una vulnerabilidad HNAP1 (Home Network Administration Protocol) descubierta en los enrutadores D-Link.
    • GET /boaform/admin/formLogin

      • Descripción: Un intento de infiltrarse en el panel de inicio de sesión de un servidor web Boa, utilizado comúnmente en enrutadores antiguos y cámaras web.
    • GET /.env o GET /.git/config

      • Descripción: Un intento de acceso a archivos .env (variables de entorno) o al directorio .git para robar información sensible.

    La detección de tales patrones puede conducir a acciones como bloquear esas solicitudes o añadir temporalmente las direcciones IP a una lista negra. Esto puede implementarse en el servidor a través de middleware (por ejemplo, middleware de Django) o configuraciones del servidor web (modulo map de Nginx, mod_rewrite de Apache, etc.).

  • Verificación de la ejecución de JavaScript:

    La mayoría de los bots maliciosos no pueden ejecutar JavaScript a la perfección como lo haría un navegador real. Las pruebas de ejecución de código JavaScript oculto (por ejemplo, invitando a hacer clic en ciertos elementos del DOM), el fingerprinting de canvas, o la verificación de llamadas a la API del navegador son maneras de determinar si un cliente es un bot y aplicar bloqueos a aquellos que no cumplen con la ejecución de JavaScript.

4. Utilización de Honeypots

Un honeypot es una "trampa" intencional diseñada para atraer e identificar bots maliciosos. Ocultan elementos en las páginas web que no son visibles para usuarios legítimos pero están diseñados para ser explorados o manipulados por bots automatizados.

  • Mecanismo de funcionamiento:

    1. Enlaces/campos ocultos: Se crean enlaces o campos de formulario que, utilizando CSS (display: none;, visibility: hidden;, height: 0;, etc.) o generados dinámicamente mediante JavaScript y movidos fuera de la pantalla, no son visibles para los usuarios.

    2. Inducción del comportamiento de los bots: Los usuarios que emplean navegadores web normales no pueden ver estos elementos, por lo tanto, no pueden interactuar con ellos. Sin embargo, los bots maliciosos, que analizan mecánicamente todos los enlaces y formularios de la página web, pueden descubrir y tratar de interactuar con estos elementos ocultos (por ejemplo, llenando valores en campos ocultos o clickeando enlaces ocultos).

    3. Identificación de bots maliciosos: Si se ingresan valores en los campos ocultos o si se producen solicitudes hacia los enlaces ocultos, esto se puede considerar un comportamiento claramente malicioso.

    4. Bloqueo automático: Las IPs o sesiones de los comportamientos detectados se añaden inmediatamente a la lista negra o se bloquean.

  • Ejemplo de implementación:

<form action="/submit" method="post">
    <label for="username">Nombre de usuario:</label>
    <input type="text" id="username" name="username">

    <div style="position: absolute; left: -9999px;">
        <label for="email_hp">Por favor, deja este campo vacío:</label>
        <input type="text" id="email_hp" name="email_hp">
    </div>

    <label for="password">Contraseña:</label>
    <input type="password" id="password" name="password">
    <button type="submit">Iniciar sesión</button>
</form>
El servidor considera la solicitud como bot si el campo `email_hp` tiene un valor.
  • Ventaja: Permite identificar eficazmente bots maliciosos sin afectar la experiencia del usuario. Es relativamente simple de implementar y difícil de falsificar.

5. Sistemas de firewall para aplicaciones web (WAF) y soluciones de gestión de bots profesionales

Si estás operando un sitio web de gran escala o un servicio sensible, es recomendable utilizar soluciones WAF profesionales (como Cloudflare, AWS WAF, Sucuri, etc.) o soluciones de gestión de bots (Cloudflare Bot Management, Akamai Bot Manager, PerimeterX, etc.). Estas soluciones:

  • Analisis avanzado de comportamiento: Analizan el tráfico en tiempo real utilizando aprendizaje automático para detectar sutilezas en el comportamiento humano y de bots.

  • Inteligencia de amenazas: Utilizan patrones de ataque globales y bases de datos de listas negras de IP para identificar amenazas amplias.

  • Minimización de falsos positivos: Aplican algoritmos sofisticados para minimizar los falsos positivos hacia bots útiles y usuarios legítimos mientras filtran solo los bots maliciosos.

  • Respuesta automatizada: Toman medidas automáticamente contra los bots maliciosos detectados, bloqueándolos o proveyendo desafíos.


Conclusión: Estrategia de defensa activa y multicapas contra bots

Los bots maliciosos están en constante evolución y tratan de atacar los sitios web. El robots.txt es solo una guía para bots honestos, no una barrera contra intrusos. Por lo tanto, para la seguridad y estabilidad de un sitio web, es vital contar con una estrategia de defensa activa y multicapas que analice y identifique el comportamiento de los bots y bloquee selectivamente solo a los bots maliciosos.

A través de la identificación de patrones de comportamiento anormales mediante análisis de registros, configuraciones precisas de limitación de velocidad de solicitudes, la instalación de trampas usando honeypots y la implementación de soluciones profesionales de gestión de bots o WAF, se puede proteger el sitio web de manera más segura, manteniendo una interacción fluida con bots útiles y proporcionando una experiencia agradable a los usuarios. ¿Cuáles son las amenazas de bots a las que está más expuesto tu sitio web? Es el momento de considerar la estrategia defensiva adecuada.