Crawlers y robots-txt, una relación SEOntástica

Avatar

En nuestro último artículo, explicamos qué eran los crawlers y el archivo robots.txt, y nos centramos en cómo dicho archivo puede usarse desde un punto de vista técnico para obtener un SEO efectivo que ayude a optimizar la eficiencia de la página.

No obstante, el verdadero propósito del archivo robots.txt no tiene nada que ver con el SEO.

En esta segunda parte, te vamos a explicar cuál es el verdadero cometido de este archivo y, como bonus, porque tú te lo mereces, te vamos a enseñar a leer y entender estos archivos… ¡Vamos allá!

Pero Antes, un pequeño Recordatorio

Antes de meternos de lleno en el asunto que nos ocupa, es preciso que tengamos clara la terminología que vamos a usar durante toda esta guía: robots.txt, crawler, etc. Te invitamos a que leas nuestro artículo anterior donde explicamos estos términos, aunque también los volveremos a ver aquí:

  • Directorio: es cada una de las secciones en las que se divide una página web. Va detrás del nombre de dominio y tiene la estructura “/apartado/subapartado…”.

Por ejemplo, en

https://es.wikipedia.org/wiki/Felis_silvestris_catus

el directorio sería “/wiki/Felis_silvestris_catus”.

Un directorio notable es el llamado directorio raíz: “/”.

  • Crawler (o spider o araña): un programa de ordenador que sigue enlaces en las webs de manera continua y recurrente para elaborar un mapa de Internet, que posteriormente será usado por un buscador para devolver resultados de búsqueda.
  • Crawling: el proceso de pulsar enlaces y elaborar un mapa web llevado a cabo por un crawler.
  • robots.txt: un archivo de texto plano que se ubica en el directorio raíz de una web. Su estructura y su funcionalidad las vamos a ver con más detenimiento a continuación.

Por ahora, lo único que debemos notar es que la mayoría de las páginas web cuentan con este archivo. Por ejemplo:

https://es.wikipedia.org/robots.txt

https://www.marca.com/robots.txt

https://www.facebook.com/robots.txt

1. El Impacto en la Eficiencia del Crawling

La mayoría de páginas webs tienen muchos subapartados. Por ejemplo, Wikipedia tiene entradas para numerosas especies de animales y eventos históricos. Un crawler que quiera analizar Wikipedia necesitará seguir muchos enlaces internos en la misma y visitar millones de artículos.

Visitar uno de estos artículos acapara un poco del ancho de banda de los servidores en los que se aloja Wikipedia. Cuando los visitan personas, no ocurre nada, la Wikipedia está preparada para esa carga de trabajo.

Sin embargo, cuando los que acceden a los artículos son crawlers, la cosa cambia. Un crawler es, recordemos, un programa de ordenador y, a diferencia de las personas, la capacidad de procesamiento y la velocidad de estos es masiva. Un crawler puede visitar potencialmente miles de directorios de una web cada segundo. Puedes imaginarte la carga sobre los servidores cuando estos tienen que servir miles de páginas por segundo.

La velocidad de los crawlers puede sobrecargar el servidor y hacer que se caiga.

2. Crawlers con Mal Comportamiento

La sobrecarga de servidores por culpa de crawlers no es un problema hipotético, tampoco.

Hay numerosos casos de crawlers que han causado problemas de eficiencia en páginas webs por acaparar recursos haciendo crawling demasiado rápido.

Por ejemplo, en el archivo robots.txt de Wikipedia podemos encontrar comentarios como

# Some bots are known to be trouble, particularly those designed to copy

# entire sites. Please obey robots.txt.

(Traducción: es bien sabido que algunos bots (= crawlers) son problemáticos, especialmete aquellos diseñados para copiar sitios enteros. Por favor obedeced robots.txt.)

o como

# Hits many times per second, not acceptable

(Traducción: acceden muchas veces por segundo, no es aceptable)

A veces los operadores de estos crawlers problemáticos no quieren causar problemas a propósito, y simplemente no son conscientes del daño que hacen o han cometido algún error al configurarlos. Otras veces, los actúan de forma egoísta y les da igual los problemas ocasionados a la web.

Cualquiera que sea el caso, no hay duda de que la velocidad de estos programas puede causar problemas a los administradores y usuarios de sitios webs.

Debe haber alguna forma de limitar su actividad para que puedan realizar su función sin impactar negativamente a los sitios web…

3.La Función de robots.txt

¡Y, en efecto, hay una forma de comunicarse con los crawlers y limitar sus efectos negativos!

Aquí es donde entra el archivo robots.txt.

Este archivo contiene una series de instrucciones capaces de limitar y prohibir el acceso a uno o varios directorios de una página web a los crawlers que la visitan.

Este acceso se puede limitar a todos los crawlers de forma general y también se puede hacer caso por caso.

Aunque esta es su funcionalidad principal, no es la única: también puede hacer cosas como, por ejemplo, limitar directamente el número de veces por segundo que un crawler accede a la web (aunque no todos los crawlers son compatibles con estas funciones extra).

Por ejemplo, puedes hacer cosas como prohibir el crawling a un crawler que accede a la página demasiado rápido o prohibir a todos los crawler que accedan a páginas generadas dinámicamente por el servidor (a las que acceder requiere bastantes recursos computacionales).

Limitar los directorios a los que puede acceder cada crawler y su velocidad de crawling de esta manera hace, por tanto, que la web pueda controlar y reducir el impacto sobre el servidor, evitando así problemas de eficiencia.

Por supuesto, el archivo robots.txt son solo instrucciones, instrucciones que un crawler que actúe de forma egoísta puede decidir ignorar. Pero si las ignora, puede sufrir consecuencias bastante peores como que su IP sea banneada o como que la empresa que opera el crawler adquiera una mala reputación. Por lo que la mayoría suelen obedecer las directivas de este archivo.

Finalmente, un último punto que debemos destacar es que el archivo robots.txt simplemente controla la velocidad de los crawlers y su acceso a diferentes directorios de la web, pero no puede evitar que un determinado directorio sea indexado o añadido al mapa de Internet de un buscador (ya que hay otras formas de indexar una página que no implican el uso del crawling).

Para evitar que una página sea indexada, habrá que recurrir a otros métodos, como indica este artículo de Google.

4. La Estructura y el Funcionamiento de robots.txt

Todo lo anterior está muy bien, pero, ¿cómo controla el archivo robots.txt a los crawlers exactamente? ¿Cuáles son las instrucciones específicas que controlan su comportamiento?

¡Eso es lo que vamos a ver ahora! Vamos a ver la estructura de estos archivos tan ubicuos.

4.1. Estructura General

En primer lugar, este es el aspecto que suelen tener estos archivos (este en concreto es un fragmento del robots.txt de Wikipedia):

# advertising-related bots:

User-agent: Mediapartners-Google*

Disallow: /

 

# Wikipedia work bots:

User-agent: IsraBot

Disallow:

 

User-agent: Orthogaffe

Disallow:

 

[…]

 

#

# Friendly, low-speed bots are welcome viewing article pages, but not

# dynamically-generated pages please.

#

# Inktomi’s “Slurp” can read a minimum delay between hits; if your

# bot supports such a thing using the ‘Crawl-delay’ or another

# instruction, please let us know.

#

# There is a special exception for API mobileview to allow dynamic

# mobile web & app views to load section content.

# These views aren’t HTTP-cached but use parser cache aggressively

# and don’t expose special: pages etc.

#

# Another exception is for REST API documentation, located at

# /api/rest_v1/?doc.

#

User-agent: *

Allow: /w/api.php?action=mobileview&

Allow: /w/load.php?

Allow: /api/rest_v1/?doc

Disallow: /w/

Disallow: /api/

Disallow: /trap/

Disallow: /wiki/Special:

Disallow: /wiki/Spezial:

Disallow: /wiki/Spesial:

Disallow: /wiki/Special%3A

Disallow: /wiki/Spezial%3A

Disallow: /wiki/Spesial%3A

Como podemos ver, constan de bloques que comienzan por la instrucción “User-agent”, seguidos de otras instrucciones; además, también tienen una serie de líneas que comienzan por el carácter “#”.

4.2. Comentarios

Vamos a empezar explicando el elemento más sencillo de estos archivos: las líneas que comienzan por “#”.

Las líneas que comienzan por este carácter son comentarios, y su único propósito es informar a los lectores humanos de los archivos robots.txt. No tienen ningún propósito técnico y son completamente ignoradas por los crawlers; puedes poner lo que quieras en ellas.

4.3. Directiva User-agent

La directiva User-agent identifica el crawler cuyo acceso o velocidad se va a limitar.

Tiene el formato “User-agent: [nombre-del-crawler]”.

Continuando con el ejemplo de arriba, en el bloque

# Wikipedia work bots:

User-agent: IsraBot

Disallow:

la directiva User-agent nos indica que la directiva Disallow que la sigue afecta al crawler llamado “IsraBot”.

Un caso especial es “User-agent: *”, que indica que las directivas siguientes se aplicarán al resto de crawlers que no han sido mencionados por su nombre. Este caso especial, si existe, debe ir siempre después que los casos usuales “User-agent: [nombre]” para garantizar su correcto funcionamiento.

4.4. Directiva Disallow

La directiva Disallow, que es la más habitual junto con User-agent, indica el directorio al que no puede acceder el crawler afectado.

Tiene el formato “Disallow: [directorio]”.

Cuando decimos que restringe un directorio, nos referimos también a todos sus subdirectorios. Por ejemplo, “Disallow: /dir/” prohibe la entrada a “/dir” pero también a “/dir/subdir-1”, “/dir/subdir-2”, etc.

Eso nos lleva a un caso interesante y muy habitual del uso de esta directiva: “Disallow: /” prohibe el acceso a la página entera, ya que todos los directorios son subdirectorios del directorio raíz “/”.

Otro caso especial es “Disallow: ”, que indica que no hay directorios restringidos.

4.5. Directiva Allow

Otra directiva muy popular es Allow, que permite el acceso a un subdirectorio de un directorio que ha sido restringido por Disallow.

Su estructura es “Allow: [directorio]”.

Por ejemplo:

Allow: /dir/subdir-2

Disallow: /dir

restringe el acceso al directorio “/dir” y todos sus subdirectorios, excepto “/dir/subdir-2”, al que se puede seguir accediendo.

Para que funcione correctamente, debe aparecer arriba de las directivas Disallow, como en el ejemplo que acabamos de ver.

4.6. Directiva Crawl-delay

Esta directiva, con la que no muchos crawlers son compatibles, permite limitar la velocidad de crawling.

Su estructura es “Crawl-delay: [número]”, donde lo que el número indica varía de un crawler a otro, aunque suele representar algo como el tiempo de espera entre accesos consecutivos del crawler a la web.

4.7. Notas sobre las Directivas

Lo primero que hay que notar es que no todas las directivas que hemos visto arriba son estándares, algunas son extensiones que los programadores de los crawlers deciden añadir por su cuenta.

Por ello algunas de ellas no son compatibles con todos los crawlers.

En segundo lugar, hay más directivas que las vistas anteriormente, aunque las que hemos visto son las más habituales.

5. Conclusiones

Esperamos que esta guía te haya servido para entender mejor el objetivo y la importancia del omnipresente pero desconocido archivo robots.txt, así como para saber interpretar y leer uno.

¡No era tan difícil!, ¿verdad?

Sigue atento a nuestro blog para más artículos y guías sobre el fascinante mundo de Internet y la Web. ¡Hasta la próxima!

Acerca de Sociment

Tu Departamento de Marketing.

Artículos relacionados