Araña web
programa que inspecciona las páginas del World Wide Web de forma metódica y automatizada De Wikipedia, la enciclopedia libre
programa que inspecciona las páginas del World Wide Web de forma metódica y automatizada De Wikipedia, la enciclopedia libre
Un rastreador web, indexador web, indizador web o araña web es un programa informático que inspecciona las páginas del World Wide Web de forma metódica y automatizada.[1] Uno de los usos más frecuentes que se les da consiste en crear una copia de todas las páginas web visitadas para su procesado posterior por un motor de búsqueda que indexa las páginas proporcionando un sistema de búsquedas rápido. Las arañas web suelen ser bots.[2]
Las arañas web comienzan visitando una lista de URL, identifica los hiperenlaces en dichas páginas y los añade a la lista de URL a visitar de manera recurrente de acuerdo a determinado conjunto de reglas. La operación normal es que se le da al programa un grupo de direcciones iniciales, la araña descarga estas direcciones, analiza las páginas y busca enlaces a páginas nuevas. Luego descarga estas páginas nuevas, analiza sus enlaces, y así sucesivamente.
Entre las tareas más comunes de las arañas de la web tenemos:
Un buen rastreador web comienza con una lista de direcciones URL para visitar, llamado “las semillas” . A medida que el rastreador visita estas direcciones URL, identifica todos los hipervínculos en la página y los añade a la lista de URL para visitar, llamada la frontera de rastreo . URL de la frontera se forma recursiva visitadas de acuerdo con un conjunto de políticas. Si el rastreador está realizando el archivo de los sitios web se copia y guarda la información a medida que avanza. Los archivos se almacenan por lo general de tal manera que se puedan ver, leer y navegar como lo fueron en la web en directo, pero se conservan como "instantáneas".
El gran volumen implica al rastreador que sólo puede descargar un número limitado de las páginas Web en un tiempo determinado, por lo que necesita dar prioridad a sus descargas. La alta tasa de cambio puede implicar a las páginas que podría ya haber sido actualizados o incluso eliminado.
El número de posibles URL rastreadas siendo generados por el software del lado del servidor también ha hecho que sea difícil para los rastreadores web para evitar recuperar el contenido duplicado.
Un sinfín de combinaciones de HTTP GET existen parámetros (basados en URL), de los cuales sólo una pequeña selección anterior obtiene un contenido único. Por ejemplo, un simple galería de fotos en línea puede ofrecer tres opciones a los usuarios, tal como se especifica a través de parámetros HTTP GET en la URL. Si existen cuatro formas de ordenar las imágenes, tres opciones de tamaño miniatura, dos formatos de archivo, y una opción para desactivar el contenido proporcionado por el usuario, a continuación, el mismo conjunto de contenidos se puede acceder con 48 direcciones URL diferentes, todos los cuales pueden estar vinculados en el sitio. Esta combinación matemática crea un problema para los rastreadores, ya que deben ordenar a través de un sinfín de combinaciones de secuencias de comando, cambios relativamente menores con el fin de recuperar el contenido único.
"Teniendo en cuenta que el ancho de banda para la realización de rastreos no es ni infinito ni libre, se hace indispensable para rastrear la Web, no sólo en una forma escalable, pero eficiente, sino también alguna medida razonable de calidad o frescura debe ser mantenido." Un rastreador debe elegir con cuidado en cada paso qué página siguiente visitar siempre.
El comportamiento de un buscador web es el resultado de una combinación de políticas:[3]
Teniendo en cuenta el tamaño actual de la Web, incluso los grandes motores de búsqueda cubren sólo una porción de la parte a disposición del público. Un estudio de 2009 mostró incluso a gran escala de los motores de búsqueda índice de no más de 40-70% de la Web indexable; un estudio previo realizado por Steve Lawrence y Lee Giles mostró que ningún motor de búsqueda indexa más de un 16% de la Web en 1999. Como rastreador siempre se descarga sólo una fracción de las páginas web, es altamente deseable para la fracción descargado poder contener las páginas más relevantes y no sólo una muestra aleatoria de la web.
Esto requiere una métrica de importancia para la priorización de las páginas Web. La importancia de una página es una función de su calidad intrínseca, su popularidad en términos de enlaces o visitas, e incluso de su URL (este último es el caso de los motores verticales de búsqueda restringidos a un único dominio de nivel superior, o motores de búsqueda restringidas a un sitio web fija). El diseño de una buena política de selección tiene una dificultad añadida: tiene que trabajar con información parcial, ya que el conjunto completo de páginas web no se conoce durante el rastreo.
Junghoo Cho et al. hicieron el primer estudio sobre las políticas para el rastreo de programación. Su conjunto de datos estaba a 180.000 páginas se arrastran desde el stanford.edu
de dominio, en el que una simulación de rastreo se realizó con diferentes estrategias. Las métricas de pedido probados fueron primero en amplitud, vínculo de retroceso recuento y parciales cálculos Pagerank. Una de las conclusiones fue que si el rastreador quiere descargar páginas con alto Pagerank temprana durante el proceso de rastreo, entonces la estrategia Pagerank parcial es la mejor, seguida de primero en amplitud y vínculo de retroceso de recuento. Sin embargo, estos resultados son para un solo dominio. Cho también escribió su Ph.D. tesis doctoral en Stanford en el rastreo web.[4]
Najork y Wiener realizaron un rastreo de 328 millones de páginas, utilizando una búsqueda de anchura.[5] Descubrieron que un rastreo de búsqueda de anchura captura las páginas con alto Pagerank al principio del rastreo (pero no compararon esta estrategia con otras). La explicación que dan los autores para este resultado es que "las páginas más importantes tienen muchos enlaces hacia ellas desde numerosos hosts, y esos enlaces se encontrarán pronto, independientemente de en qué host o página se origine el rastreo".
Abiteboul diseñó una estrategia de rastreo basada en un algoritmo llamado OPIC (On-line Page Importance Computation).[6] En el OPIC, cada página recibe una suma inicial de "dinero" que se distribuye por igual entre las páginas a las que apunta. Es similar al cálculo del PageRank, pero es más rápido y sólo se realiza en un paso. Un rastreador impulsado por OPIC descarga primero las páginas de la frontera de rastreo con mayores cantidades de "efectivo". Los experimentos se llevaron a cabo en un gráfico sintético de 100.000 páginas con una distribución de ley potencial de los enlaces internos. Sin embargo, no hubo comparación con otras estrategias ni experimentos en la web real.
Baeza-Yates et al. utilizaron la simulación en dos subconjuntos de la web de 3 millones de páginas del dominio .gr
y .cl
, probando varias estrategias de rastreo.[7] Demostraron que tanto la estrategia OPIC como una estrategia que utiliza la longitud de las colas por sitio son mejores que el rastreo búsqueda de anchura, y que también es muy eficaz utilizar un rastreo anterior, cuando está disponible, para guiar el actual.
Daneshpajouh et al. diseñaron un algoritmo basado en la comunidad para descubrir buenas semillas.[8] Su método rastrea páginas web con alto PageRank de diferentes comunidades en menos iteraciones en comparación con el rastreo que parte de semillas aleatorias. Uno puede extraer buenas semillas de un gráfico web previamente rastreado utilizando este nuevo método. Usando estas semillas, un nuevo rastreo puede ser muy efectivo.
Un rastreador puede querer buscar sólo páginas HTML y evitar todos los demás tipos MIME. Para solicitar sólo recursos HTML, un rastreador puede hacer una petición HTTP HEAD para determinar el tipo MIME de un recurso web antes de solicitar el recurso completo con una petición GET. Para evitar realizar numerosas peticiones HEAD, un rastreador puede examinar la URL y sólo solicitar un recurso si la URL termina con ciertos caracteres como .html
, .htm
, .asp
, .aspx
, .php
, .jsp
, .jspx
o una barra (/). Esta estrategia puede hacer que se omitan involuntariamente numerosos recursos web HTML.
Algunos rastreadores también pueden evitar solicitar cualquier recurso que tenga un "?" (se producen dinámicamente) para evitar las trampas de arañas que pueden hacer que el rastreador descargue un número infinito de URL de un sitio web. Esta estrategia no es fiable si el sitio utiliza la reescritura de URLs para simplificarlas.
Los rastreadores suelen realizar algún tipo de normalizaciones de URL para evitar rastrear el mismo recurso más de una vez. El término normalización de URL, también llamado canonización de URL, se refiere al proceso de modificación y normalización de una URL de manera consistente. Hay varios tipos de normalización que pueden realizarse, incluyendo la conversión de las URLs a minúsculas, la eliminación de los segmentos "." y "..", y la adición de barras (/) al final del componente de la ruta no vacía.[9]
Algunos rastreadores pretenden descargar/cargar tantos recursos como sea posible de un sitio web concreto. Para ello, se introdujo el rastreo ascendente, que asciende a todas las rutas de cada URL que pretende rastrear.[10] Por ejemplo, cuando se le da una URL inicial como http://llama.org/hamster/monkey/page.html, intentará rastrear /hamster/monkey/, /hamster/ y /. Cothey descubrió que un rastreador ascendente era muy eficaz para encontrar recursos aislados, o recursos para los que no se habría encontrado ningún enlace entrante en un rastreo normal.
La importancia de una página para un rastreador también puede expresarse en función de la similitud de una página con una consulta determinada. Los rastreadores web que intentan descargar páginas similares entre sí se denominan rastreadores enfocados o rastreadores tópicos. Los conceptos de rastreo tópico y enfocado fueron introducidos por primera vez por Filippo Menczer[11][12] y por Soumen Chakrabarti et al.[13]
El principal problema del rastreo enfocado es que, en el contexto de un rastreador web, nos gustaría poder predecir la similitud del texto de una página determinada con la consulta antes de descargar la página. Un posible predictor es el texto ancla de los enlaces; éste fue el enfoque adoptado por Pinkerton[14] en el primer rastreador web de los primeros días de la Web. Diligenti et al.[15] proponen utilizar el contenido completo de las páginas ya visitadas para inferir la similitud entre la consulta de conducción y las páginas que aún no han sido visitadas. El rendimiento de un rastreo enfocado depende sobre todo de la riqueza de los enlaces en el tema específico que se busca, y un rastreo enfocado suele depender de un motor de búsqueda web general para proporcionar puntos de partida.
Un ejemplo de los rastreadores focalizados son los rastreadores académicos, que rastrean documentos académicos de libre acceso, como el citeseerxbot, que es el rastreador del motor de búsqueda CiteSeerX. Otros motores de búsqueda académica son Google Scholar y Microsoft Academic Search, etc. Dado que la mayoría de los documentos académicos se publican en formato PDF, este tipo de rastreador está especialmente interesado en rastrear archivos PDF, PostScript y Microsoft Word, incluidos sus formatos comprimidos. Por ello, los rastreadores generales de código abierto, como Heritrix, deben personalizarse para filtrar otros tipos de MIME, o bien se utiliza un middleware (lógica de intercambio de información entre aplicaciones) para extraer estos documentos e importarlos a la base de datos y al repositorio de rastreo enfocado.[16] Identificar si estos documentos son académicos o no es un reto y puede añadir una sobrecarga significativa al proceso de rastreo, por lo que se realiza como un proceso posterior al rastreo utilizando algoritmos de aprendizaje automático o de expresión regular. Estos documentos académicos suelen obtenerse de las páginas de inicio de las facultades y estudiantes o de páginas de publicaciones de los institutos de investigación. Dado que los documentos académicos representan sólo una pequeña fracción de las páginas web, es importante una buena selección de semillas para aumentar la eficacia de estos rastreadores web.[17] Otros rastreadores académicos pueden descargar archivos de texto plano y HTML que contienen metadatos de artículos académicos, como títulos, artículos y resúmenes. Esto aumenta el número total de artículos, pero una parte importante puede no ofrecer descargas gratuitas en PDF.
Otro tipo de rastreadores enfocados es el rastreador enfocado en la semántica, que hace uso de ontologías de dominios para representar mapas tópicos y enlazar páginas web con conceptos ontológicos relevantes para la selección y categorización.[18] Además, las ontologías pueden actualizarse automáticamente en el proceso de rastreo. Dong et al.[19] introdujeron un rastreador basado en el aprendizaje de ontologías que utiliza una máquina de vectores de apoyo para actualizar el contenido de los conceptos ontológicos cuando se rastrean las páginas web.
La web tiene una naturaleza muy dinámica, y rastrear una fracción de la web puede llevar semanas o meses. Para cuando un rastreador de la web ha terminado su rastreo, pueden haber ocurrido muchos eventos, incluyendo creaciones, actualizaciones y eliminaciones.
Desde el punto de vista del motor de búsqueda, existe un coste asociado a la no detección de un evento y, por tanto, a tener una copia obsoleta de un recurso. Las funciones de coste más utilizadas son la novedad y la antigüedad.[20]
Novedad: Es una medida binaria que indica si la copia local es exacta o no. La novedad de una página p en el repositorio a tiempo t se define como:
Antigüedad: Es una medida que indica la antigüedad de la copia local. La antigüedad de una página p en el repositorio a tiempo t se define como:
Coffman et al. trabajaron con una definición del objetivo de un rastreador web que es equivalente a la novedad, pero utilizan una redacción diferente: proponen que un rastreador debe minimizar la fracción de tiempo que las páginas permanecen obsoletas. También señalaron que el problema del rastreo de la web puede modelarse como un sistema de sondeo de cola múltiple y servidor único, en el que el rastreador de la web es el servidor y los sitios web son las colas. Las modificaciones de las páginas son la llegada de los clientes, y los tiempos de espera son el intervalo entre los accesos a las páginas de un mismo sitio web. Según este modelo, el tiempo medio de espera de un cliente en el sistema de sondeo equivale a la edad media del rastreador web.[21]
El objetivo del rastreador es mantener en su colección la novedad de las páginas lo más alta posible, o mantener la antigüedad de las páginas lo más baja posible. Estos objetivos no son equivalentes: en el primer caso, el rastreador sólo se preocupa de cuántas páginas están desactualizadas, mientras que en el segundo caso, el rastreador se preocupa de la antigüedad de las copias locales de las páginas.
Cho y García-Molina estudiaron dos políticas simples de revisita:[22]
En ambos casos, el orden de rastreo repetido de las páginas puede hacerse de forma aleatoria o fija.
Cho y García-Molina demostraron el sorprendente resultado de que, en términos de novedad, la política uniforme supera a la política proporcional tanto en una web simulada como en un rastreo real. Intuitivamente, el razonamiento es que, como los rastreadores web tienen un límite en cuanto al número de páginas que pueden rastrear en un plazo determinado, (1) asignarán demasiados rastreos nuevos a las páginas que cambian rápidamente a expensas de las páginas que se actualizan con menos frecuencia, y (2) la frescura de las páginas que cambian rápidamente dura menos que la de las que cambian con menos frecuencia. En otras palabras, una política proporcional asigna más recursos al rastreo de las páginas que se actualizan con frecuencia, pero experimenta menos tiempo de novedad general de las mismas.
Para mejorar la novedad, el rastreador debe penalizar los elementos que cambian con demasiada frecuencia.[23] La política de revisita óptima no es ni la política uniforme ni la política proporcional. El método óptimo para mantener una novedad media alta incluye ignorar las páginas que cambian con demasiada frecuencia, y lo óptimo para mantener una antigüedad media baja es utilizar frecuencias de acceso que aumenten monótonamente (y de forma sublineal) con la tasa de cambio de cada página. En ambos casos, lo óptimo está más cerca de la política uniforme que de la proporcional: como señalan Coffman et al., "para minimizar el tiempo de obsolescencia esperado, los accesos a cualquier página particular deben mantenerse lo más uniformemente espaciados posible".[21] Las fórmulas explícitas para la política de revisita no son alcanzables en general, pero se obtienen numéricamente, ya que dependen de la distribución de los cambios de página. Cho y García-Molina muestran que la distribución exponencial es un buen ajuste para describir los cambios de página,[23] mientras que Ipeirotis et al. muestran cómo utilizar herramientas estadísticas para descubrir los parámetros que afectan a esta distribución,[24] hay que tener en cuenta que las políticas de revisita observadas aquí consideran que todas las páginas son homogéneas en términos de calidad ("todas las páginas de la web valen lo mismo"), algo que no es un escenario realista, por lo que debería incluirse más información sobre la calidad de la página web para lograr una mejor política de rastreo.
Los rastreadores pueden recuperar los datos mucho más rápido y con mayor profundidad que los humanos, por lo que pueden tener un impacto devastador en el rendimiento de un sitio. Si un solo rastreador realiza varias peticiones por segundo y/o descarga archivos de gran tamaño, un servidor puede tener dificultades para atender las peticiones de varios rastreadores.
Como señala Koster, el uso de rastreadores web es útil para una serie de tareas, pero tiene un precio para la comunidad en general.[25] Los costes de usar rastreadores web incluyen:
Una solución parcial a estos problemas es el estándar de exclusión de robots, también conocido como protocolo robots.txt. Se trata de un estándar para que los administradores indiquen a qué partes de sus servidores web no deben acceder los rastreadores.[26] Este estándar no incluye una sugerencia para el intervalo de visitas al mismo servidor, aunque este intervalo es la forma más eficaz de evitar la sobrecarga del servidor. Los motores de búsqueda comerciales, como Google, Ask Jeeves, MSN y Yahoo! Search, pueden utilizar un parámetro adicional "Retraso de rastreo": un parámetro en el archivo robots.txt para indicar el número de segundos de retraso entre peticiones.
El primer intervalo propuesto entre las sucesivas cargas de páginas fue de 60 segundos.[27] Sin embargo, si las páginas se descargaran a este ritmo desde un sitio web con más de 100.000 páginas a través de una conexión perfecta con latencia cero y ancho de banda infinito, se tardaría más de 2 meses en descargar sólo ese sitio web completo; además, sólo se utilizaría una fracción de los recursos de ese servidor web.
Cho utiliza 10 segundos como intervalo para los accesos,[22] y el rastreador WIRE utiliza 15 segundos por defecto.[28] El rastreador MercatorWeb sigue una política de cortesía adaptativa: si ha tardado t segundos en descargar un documento de un servidor determinado, el rastreador espera 10t segundos antes de descargar la siguiente página.[29] Dill et al. utilizan 1 segundo.[30]
Para quienes utilizan rastreadores web con fines de investigación, es necesario un análisis más detallado respecto a la relación coste-beneficio y se debe tener en cuenta consideraciones éticas a la hora de decidir dónde rastrear y a qué velocidad hacerlo.[31]
Las pruebas anecdóticas de los registros de entrada muestran que los intervalos de acceso de los rastreadores conocidos varían entre 20 segundos y 3-4 minutos. Cabe destacar que, incluso siendo muy educados y tomando todas las precauciones para evitar la sobrecarga de los servidores web, se reciben algunas quejas de los administradores de servidores web. Brin y Page señalan que: "... ejecutar un rastreador que se conecta a más de medio millón de servidores (...) genera una buena cantidad de correos electrónicos y llamadas telefónicas. Debido al gran número de personas que se conectan, siempre hay quienes no saben lo que es un rastreador, porque es el primero que ven".[32]
Un rastreador paralelo es un rastreador que ejecuta múltiples procesos en paralelo. El objetivo es maximizar la tasa de descarga minimizando la sobrecarga de la paralización y evitar descargas repetidas de la misma página. Para evitar descargar la misma página más de una vez, el sistema de rastreo requiere una política de asignación de las nuevas URLs descubiertas durante el proceso de rastreo, ya que la misma URL puede ser encontrada por dos procesos de rastreo diferentes.
Un rastreador no sólo debe tener una buena estrategia de rastreo, como se ha señalado en las secciones anteriores, sino que también debe tener una arquitectura muy optimizada.
Shkapenyuk y Suel señalaron:[33]
Mientras que es bastante fácil construir un rastreador lento que descargue unas pocas páginas por segundo durante un corto período de tiempo, construir un sistema de alto rendimiento que pueda descargar cientos de millones de páginas durante varias semanas presenta una serie de desafíos en el diseño del sistema, la eficiencia de E/S y de la red, y la robustez y capacidad de gestión.
Los rastreadores web son una parte central de los motores de búsqueda, y los detalles sobre sus algoritmos y arquitectura se mantienen como secretos comerciales. Cuando se publican los diseños de los rastreadores, suele haber una importante falta de detalles que impide que otros reproduzcan el trabajo. También está surgiendo la preocupación por el "spam de los motores de búsqueda", que impide que los principales motores de búsqueda publiquen sus algoritmos de clasificación.
Aunque la mayoría de los propietarios de sitios web desean que sus páginas se indexen lo más ampliamente posible para tener una fuerte presencia en los motores de búsqueda, el rastreo de la web también puede tener consecuencias no deseadas y conducir a un compromiso o a una violación de datos si un motor de búsqueda indexa recursos que no deberían estar disponibles públicamente, o páginas que revelan versiones de software potencialmente vulnerables.
Artículo principal: Google Hacking
Aparte de las recomendaciones estándar de seguridad de las aplicaciones web, los propietarios de sitios web pueden reducir su exposición a la piratería oportunista permitiendo que los motores de búsqueda indexen únicamente las partes públicas de sus sitios web (con robots.txt) y bloqueando explícitamente la indexación de las partes transaccionales (páginas de acceso, páginas privadas, etc.).
Los rastreadores web suelen identificarse ante un servidor web utilizando el campo agente de usuario de una solicitud HTTP. Los administradores de sitios web suelen examinar el registro de sus servidores web y utilizar el campo de agente de usuario para determinar qué rastreadores han visitado el servidor web y con qué frecuencia. El campo de agente de usuario puede incluir una URL donde el administrador del sitio web puede encontrar más información sobre el rastreador.
Examinar el registro del servidor web es una tarea tediosa, por lo que algunos administradores utilizan herramientas para identificar, rastrear y verificar los rastreadores web. Es poco probable que los Spambots y otros rastreadores web malintencionados coloquen información de identificación en el campo del agente de usuario, o pueden enmascarar su identidad como un navegador u otro rastreador conocido.
Los administradores de sitios web prefieren que los rastreadores se identifiquen para poder contactar con el propietario en caso de necesidad. En algunos casos, los rastreadores pueden quedar atrapados accidentalmente en una trampa para rastreadores o pueden estar sobrecargando un servidor web con peticiones, por lo que el propietario necesita detener el rastreador. La identificación también es útil para los administradores que están interesados en saber cuándo pueden esperar que sus páginas web sean indexadas por un determinado motor de búsqueda.
Una gran cantidad de páginas web se encuentran en la Deep Web o web profunda.[34] Estas páginas normalmente sólo son accesibles mediante el envío de consultas a una base de datos, y los rastreadores normales no pueden encontrar estas páginas si no hay enlaces que apunten a ellas. El protocolo Sitemaps de Google y el Mod_oai[35] están pensados para permitir el descubrimiento de estos recursos de la web profunda.
El rastreo de la web profunda también multiplica el número de enlaces web que hay que rastrear. Algunos rastreadores sólo toman algunas de las URL en forma de <a href="URL">
. En algunos casos, como el de Googlebot, el rastreo de la web se realiza sobre todo el texto contenido en el hipertexto, las etiquetas o el texto.
Se pueden adoptar enfoques estratégicos para dirigirse al contenido profundo de la web. Con una técnica llamada screen scraping, se puede personalizar un software especializado para consultar automática y repetidamente un determinado formulario web con la intención de agregar los datos resultantes. Este software puede utilizarse para abarcar varios formularios web en varios sitios web. Los datos extraídos de los resultados de un formulario web pueden tomarse y aplicarse como entrada a otro formulario web, estableciendo así una continuidad a través de la Deep Web de una manera que no es posible con los rastreadores web tradicionales.[36]
Las páginas construidas en AJAX son algunas de las que causan problemas a los rastreadores web. Google ha propuesto un formato de llamadas AJAX que su bot puede reconocer e indexar.[37]
Un estudio reciente basado en un análisis a gran escala de los archivos robots.txt demostró que ciertos rastreadores web eran preferidos sobre otros, siendo Googlebot el rastreador web favorito.[38]
Más información: List of search engine software
A continuación se muestra una lista de arquitecturas de rastreadores publicadas para rastreadores de propósito general (excluyendo los rastreadores web enfocados), con una breve descripción que incluye los nombres dados a los diferentes componentes y características destacadas:
grep
de Unix.Los siguientes rastreadores web están disponibles, por un precio:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.