Cómo evitar sobrecargas generadas por robots [Rapid Fire]

En Internet existen unos programas llamados robots,  spiders o arañas web creados, entre otros, por motores de búsqueda.

Estos robots o spiders se dedican a indexar y recoger información sobre todas las páginas web del mundo y la información que contienen. Su propósito es mantener y actualizar bases de datos de buscadores como Google, Bing y Yahoo, o recavar información y estadísticas de uso de tecnologías concretas, versiones de servidores, etc.

Spiders

En ocasiones, en aplicaciones web que tienen una base de datos muy grande o que habitualmente tienen una alta carga en el servidor (bien por afluencia de usuarios, por procesos internos, etc)  las indexaciones de este tipo de programas pueden generar sobrecarga en el sistema, volviendo más lenta la respuesta de los servicios, o incluso derivar en una caída del servicio.

Este efecto, que aparecen con la llegada de estos robots o spiders que hacen una indexación muy rápida del sitio, es el denominado Rapid Fire, que genera cientos de conexiones en un segundo, generando el problema indicado.

Para poder tener más control sobre estas situaciones se puede indicar a estos robots como indexar el sitio web mediante el estándar de exclusión de robots o protocolo “robots.txt“. En este archivo podemos configurar parámetros indicando como se debe indexar la página web, directorios no permitidos, o en este caso, definir el tiempo de espera entre conexiones para que no afecte tanto al rendimiento.

En concreto, la directiva que buscamos si estamos sufriendo la situación indicada sería “Crawl-Delay”, que especifica los segundos a esperar entre peticiones al sitio web. Para establecerla deberíamos crear o modificar el archivo “robots.txt” del directorio raíz de nuestra página web para introducir la siguiente línea:

User-Agent: *
Crawl-delay: 10

 

Robots que no siguen el estándar

Los robots más conocidos son los de los motores de búsqueda o buscadores Google ( “GoogleBot“), Bing (“BingBot“) o Yahoo (“Yahoo Slurp“) que respetan los ajustes establecidos por los responsables de las aplicaciones web en los archivos “robots.txt”. No obstante, existen  muchos otros spiders y algunos no cumplen con la normativa estándar de escaneo de páginas web. Esto puede derivar en grandes problemas para nuestra aplicación si los robots de este tipo llegan a generar Rapid Fire y por lo tanto sobrecargas sobre nuestras páginas o sistemas.

Estos spiders se identifican en los logs del servicio web con un identificador denominado “User-Agent” o Agente de Usuario, y suelen incluir un enlace con información relativa al funcionamiento del crawler, cómo bloquearlo o cómo contactar con el responsable del robot, si nos causara perjuicios.

Por ejemplo, el spider o crawler llamado 80legs no atiende a la directiva “crawl-delay” en el “robots.txt”, pero en su web especifican que atienden a las peticiones de bloqueo, y podemos solucionarlo bloqueando  su user-agent específico en el robots.txt

User-agent: 008

Disallow: /

 

Bloquear robots con .htaccess

Si consideramos que hay un robot malicioso, que no respecta las directivas de “robots.txt” y queremos bloquearlo, podemos especificar en un archivo “.htaccess” de Apache que a las peticiones que haga este robot, el servidor web le responda con un determinado error,

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^User_Agent_del_robot
RewriteRule .* – [F,L]

The following two tabs change content below.

Deja un comentario