Cómo evitar que los bots y el software automatizado rastreen mi sitio en busca de datos/imágenes sin bloquear los motores de búsqueda

TL;DR: añadiendo reglas en tu archivo robots.txt y utilizando una trampa honeypot (como en este ejemplo: Utiliza un simple bottrap para bloquear los bots malos)

Si asumimos que los bots seguirán tus reglas robots.txt, deberías crear un archivo robots.txt en tu directorio raíz y añadir lo siguiente:

User-agent: Googlebot
Disallow:
Agente-usuario: googlebot-image
Disallow:
Agente-usuario: googlebot-mobile
Disallow:
Agente-usuario: bingbot
Disallow:
User-agent: MSNBot
Disallow:
User-agent: Slurp
Disallow:
User-agent: *
Disallow: /

Esto evitará que todas las arañas (aparte de las explícitamente enumeradas arriba) rastreen tu sitio web.

Sin embargo, si una araña no respeta las reglas de tu robots.txt, debes crear un script para detectar los navegadores automatizados. ¿Cómo hacerlo? Bueno, hay varias cosas que los rastreadores tienen en común (en general) pero los visitantes reales no:

  1. El número de peticiones por segundo a su sitio web es mucho mayor que el de un visitante típico
  2. Seguirán cualquier enlace que encuentren
  3. No suelen tener javascript activado, por razones de rendimiento. Sin embargo, no se deje engañar, ya que algunos de ellos pueden utilizar un navegador sin cabeza (como PhantomJS)
  4. Suelen tener algunas cabeceras específicas (o les faltan algunas), a diferencia de los navegadores reales (Chrome, Firefox)

Utilice una trampa honeypot para detectarlos y bloquearlos. Un buen ejemplo está aquí: Usar un simple bottrap para bloquear bots malos

¡Espero que eso ayude!