viernes, 26 de septiembre de 2008

Web Robots

Muchos son los "mecanismos y artefactos" que existen en la Red para recopilar información sobre las páginas Web que publicamos día a día y que "viven" para rastrear, capturar y casi fagocitar toda la información posible que van encontrando. Descargan, destripan, clasifican, espían y después organizan nuestros contenidos de una forma "más o menos inteligente" para sus fines.
Voy a intentar recoger en este Blog algunos de los mecanismos que existen para crear al webmaster un "falso sentimiento de protección" ante estos "Bots". Intrusos que aumentan los hits a nuestras Webs y a veces sobrecargan el tráfico inoportunamente, pero que luego no hacen nada. Porque existen los "Bots" buenos y los "Bots" malos. Y es que hoy en día cualquiera puede hacerse su propio Webbot y dedicarse a descargar en su ordenador "unas cuantas páginas" o "toda la red" como Brin y Page en 1998.
En argot informático existen muchos nombres para estos artefactos: WebBots, WWWBots, Web Wanderers, Crawlers, Spiders...). A mí personalmente me gusta el de crawler, aunque ya se sabe que sobre gustos...
Desde la invención de estos artefactos, los responsables de los sitios Web se han afanado por conseguir dotar a sus Webs de una forma de protección contra la acción de los crawlers, pero como he dicho, hay crawlers malos que no respentan ninguna convención establecida.

Por favor no me sigas

El primer mecanismo que tenemos a nuestra disposición para poder protegernos o exponernos a los crawlers es sencillamente una de las formas que adopta la etiqueta <meta> de HTML:
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
Esta etiqueta previene a los crawlers de lo que pueden o no pueden hacer con nuestra página, pero queda en sus manos hacer un uso lícito de estas "indicaciones", ya que sólo son eso. Para que nos familiaricemos con este primer mecanismo indicaremos que existen cuatro posibles valores para el atributo content:
  • INDEX: Permite a los crawlers indexar el contenido de nuestra página en su base de datos.
  • NOINDEX: Indica a los crawlers que no deben indexar la página.
  • FOLLOW: Permite a los crawlers seguir explorando en los enlaces que contiene nuestra página para recabar más información de otras páginas de nuestra Web.
  • NOFOLLOW: Indica a los crawlers que no deben seguir los enlaces que contiene nuestra página.
Por defecto, una página web que no contenga la etiqueta META, tendrá las opciones INDEX y FOLLOW aplicadas por defecto en los crawlers. Es decir, mientras no digamos nada, nuestra página se podrá indexar y seguir sus enlaces.

Pero como no podemos combinar opciones contradictorias, básicamente se permiten las siguientes combinaciones:
  • INDEX, FOLLOW: Opción por defecto. La página se indexa y se siguen sus enlaces.
  • INDEX, NOFOLLOW: La página se indexa pero no se pueden seguir sus enlaces.
  • NOINDEX, FOLLOW: La página no se indexa pero se siguen sus enlaces.
  • NOINDEX, NOFOLLOW: Nada que hacer para los crawlers buenos. La página no se puede indexar ni tampoco seguir sus enlaces.
Nuestro libre albedrío y el de los crawlers crearán la fusión adecuada para que nuestra página esté indexada o no, según nos convenga. Pero aún así deberemos extremar la precaución, ya que en la enorme maraña que pueden llegar a suponer algunos sitios Web con decenas o cientos de páginas, es posible que descuidemos un NOFOLLOW en alguna página inoportuna y consigamos que los crawlers lleguen a una página no deseada por la puerta grande.

Bueno, al final tenemos algo para poner una primera barrera o permitir el paso a los "crawlers buenos", aunque nada podremos hacer con los más malvados.


Perdona, pero no me gustaría que pasaras

Existe un estandar admitido comúnmente por la comunidad de webmasters que permite ampliar el tipo de indicaciones o reglas que se le puede dar a un crawler a fin de que no fisgue en nuestro sitio Web más allá de lo que a nosotros nos gustaría. Por desgracia, nuevamente estamos al amparo de la buena fe del propio crawler, ya que a pesar de todo, seguimos condicionados por su libre albedrío. Este mecanismo, bien pensado y simple a la par, nos permite ofrecer unas indicaciones acerca de cómo los crawlers puede explorar el sitio web completo, independientemente de que interpreten los <meta&gt que pongamos en nuestras páginas y que consiste en algo tan sencillo como poner en la carpeta raíz del sitio Web un fichero llamado robots.txt.

Este fichero contiene una o más secciones que definen el comportamiento a la hora de buscar páginas que todos o algún crawler en especial debe adoptar al explorar nuestro sitio Web. Aquí tenemos un ejemplo:

# Ejemplo de robots.txt
User-Agent: *
Disallow: /legal.htm
Disallow: /config
Disallow: /img
Disallow: *.asp
Request-rate: 1/5

En este ejemplo, el fichero robots.txt indica a cualquier navegador que no podrá ver el fichero /legal.htm, nada que empiece por /config o por /img y ningún fichero que tenga la extensión .asp. Así mismo indica que sólo podrá descargar 1 fichero cada 5 segundos. La siguiente lista muestra todos los especificadores admitidos generalmente:
  • User-Agent: Un * indica que las reglas que vienen a continuación se aplican a cualquier crawler. Si se desea aplicar reglas específicas para un crawler en especial se pondrá aquí el nombre del crawler. Si se especifican varias líneas User-Agent seguidas, las reglas que aparezcan tras la última línea se aplicarán a todos los crawlers que se hayan enumerado.
  • Disallow: indica que lo que viene a continuación de los ':' es contenido prohibido para el crawler.
  • Allow: indica que lo que viene a continuación es contenido permitido. Se puede utilizar esta regla para enumerar una lista de todas las páginas que puede visitar el crawler.
  • Crawl-delay: tiempo en segundos que debe transcurrir entre descarga y descarga.
También existen otras reglas que se consideran como un estándar extendido:
  • Request-rate: ratio de descarga de ficheros (1/5 equivale a un fichero cada 5 segundos)
  • Visit-time: periodo horario en el que está permitida la exploración de los crawlers.
  • Sitemap: ubicación del fichero xml que define la especificación del protocolo Sitemaps.
Para saber más:
Web oficial de robots.txt (en inglés)
Listado de todos los crawlers conocidos (en inglés)
Protocolo Sitemaps