¿Cómo ser un buen ciudadano al rastrear sitios web?


83

Voy a desarrollar algunas funciones que rastrearán varios sitios web públicos y procesarán / agregarán los datos en ellos. Nada siniestro como buscar direcciones de correo electrónico; de hecho, es algo que en realidad podría generar tráfico adicional a sus sitios. Pero yo divago.

Además de honrar robots.txt, ¿hay reglas o pautas, escritas o no escritas, que deba seguir para (a) evitar parecer malicioso y potencialmente prohibido, y (b) no causar ningún problema para los propietarios del sitio / webmasters?

Algunos ejemplos que puedo pensar que pueden o no importar:

  • Número de solicitudes paralelas
  • Tiempo entre solicitudes
  • Tiempo entre rastreos completos
  • Evitar enlaces potencialmente destructivos (no quiero ser la Araña de la fatalidad , pero quién sabe si esto es incluso práctico)

Sin embargo, eso en realidad es solo una bola de saliva; ¿Existe alguna sabiduría probada que sea ampliamente aplicable para cualquier persona que tenga la intención de escribir o utilizar una araña?


1
Si bien las respuestas a continuación brindan una excelente respuesta sobre cómo rastrear respetuosamente el contenido, tenga en cuenta el uso aceptable de dicho contenido una vez que lo haya rastreado. Volver a publicarlo, total o parcialmente, puede ser una violación de los derechos de autor de los propietarios.
Gavin Coates

Respuestas:


85

Además de obedecer robots.txt, obedezca nofollowy noindexen <meta>elementos y enlaces:

  • Hay muchos que creen que robots.txt no es la forma correcta de bloquear la indexación y, debido a ese punto de vista, han dado instrucciones a muchos propietarios de sitios para que confíen en la <meta name="robots" content="noindex">etiqueta para decirle a los rastreadores web que no indexen una página.

  • Si está tratando de hacer un gráfico de conexiones entre sitios web (algo similar a PageRank), (y <meta name="robots" content="nofollow">) se supone que indica que el sitio de origen no confía en el sitio de destino lo suficiente como para darle un respaldo adecuado. Entonces, si bien puede indexar el sitio de destino, no debe almacenar la relación entre los dos sitios.

El SEO es más un arte que una ciencia real, y lo practican muchas personas que saben lo que están haciendo, y muchas personas que leen los resúmenes ejecutivos de las personas que saben lo que están haciendo. Te encontrarás con problemas en los que te bloquearán los sitios por hacer cosas que otros sitios encontraron perfectamente aceptables debido a alguna regla que alguien escuchó o leyó en una publicación de blog en SEOmoz que puede o no interpretarse correctamente.

Debido a ese elemento humano, a menos que sea Google, Microsoft o Yahoo !, se presume que es malicioso a menos que se demuestre lo contrario. Debe tener especial cuidado para actuar como si no fuera una amenaza para el propietario de un sitio web, y actuar de acuerdo con cómo desea que actúe un rastreador potencialmente malicioso (pero con suerte benigno):

  • deje de rastrear un sitio una vez que detecte que está siendo bloqueado: 403 / 401s en páginas que sabe que funcionan, aceleración, tiempos de espera, etc.
  • evite rastreos exhaustivos en períodos de tiempo relativamente cortos: rastree una parte del sitio y regrese más tarde (unos días más tarde) para rastrear otra parte. No haga solicitudes paralelas.
  • evite rastrear áreas potencialmente sensibles: URL con /admin/ellas, por ejemplo.

Incluso entonces, será una batalla cuesta arriba, a menos que recurra a técnicas de sombrero negro como la suplantación de identidad o enmascarar deliberadamente sus patrones de rastreo: muchos propietarios de sitios, por las mismas razones anteriores, bloquearán un rastreador desconocido a la vista en lugar de tomar la posibilidad de que haya alguien que no intente "hackear su sitio". Prepárate para muchas fallas.

Una cosa que podría hacer para combatir la imagen negativa que tendrá un rastreador desconocido es dejar en claro en su cadena de agente de usuario quién es usted:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

Donde http://example.com/aarobot.htmlexplica lo que está tratando de lograr y por qué no es una amenaza. Esa página debería tener algunas cosas:

  • Información sobre cómo contactarlo directamente
  • Información sobre lo que recopila el rastreador y por qué lo está recopilando
  • Información sobre cómo darse de baja y eliminar los datos recopilados

Esa última es clave: una buena opción de exclusión es como una garantía de devolución de dinero ™ y obtiene una buena cantidad de buena voluntad. Debería ser humano: un simple paso (ya sea una dirección de correo electrónico o, idealmente, un formulario) y completo (no debería haber ninguna "trampa": la exclusión voluntaria significa que deja de rastrear sin excepción).


18
Enorme +1 por la sugerencia de poner información clara en el Agente de usuario. He tenido el trabajo de estudiar detenidamente los registros del servidor web para descubrir quién estaba arañando un sitio grande, y no es divertido tratar de rastrear quién está manejando todas las arañas oscuras.
Carson63000

44
Es bastante común poner la URL en el formulario (+http://example.com/aarobot.html). No sé cuál es el propósito de la +señal aquí, pero lo he visto a menudo. Web-Sniffer lo hace, y también muchos otros.
TRiG

Esta es una gran información, pero estoy confundido sobre una cosa: mencionas rel="noindex"como si fuera un <a>atributo, pero la página a la que enlazas lo describe como parte del atributo de la <meta>etiqueta content. ¿Son ambas cosas o fue un error tipográfico en la respuesta?
Aaronaught

1
"El SEO es más un arte que una ciencia real", no es cierto. Si eres un programador estadístico, el SEO es menos un arte y más una habilidad de reconocimiento matemático. Los graduados matemáticos que son expertos en programación o los programadores expertos en matemáticas tienen una buena demanda en la industria de creación de perfiles de datos web.
שינתיא אבישגנת


32

Si bien esto no responde a todas sus preguntas, creo que será de ayuda para usted y para los sitios que rastrea.

De manera similar a la técnica utilizada para los sitios web de fuerza bruta sin llamar la atención, si tiene un grupo suficientemente grande de sitios que necesita rastrear, no rastree la siguiente página en el sitio hasta que haya rastreado la siguiente página de todos los otros sitios . Bueno, los servidores modernos permitirán la reutilización de la conexión HTTP , por lo que es posible que desee hacer más de uno para minimizar la sobrecarga, pero la idea sigue en pie. No rastree un sitio hasta el agotamiento hasta que pase al siguiente . Comparte el amor.

Al final del día, aún puede haber rastreado la misma cantidad de páginas, pero el uso promedio de ancho de banda en un solo sitio será mucho menor.

Si quieres evitar ser la araña de la fatalidad, no existe un método seguro. Si alguien quiere meterse frijoles en la nariz , lo hará y probablemente lo hará de maneras que nunca podría predecir. Dicho esto, si no le importa perderse la página válida ocasional, tenga una lista negra de palabras para un enlace que le impedirá seguirla. Por ejemplo:

  • Eliminar
  • Eliminar
  • Actualizar
  • Editar
  • Modificar

No es infalible, pero a veces no se puede evitar que las personas tengan que aprender de la manera difícil;)


3
Un buen consejo sobre "compartir el amor": no lo había considerado en absoluto, aunque, por supuesto, parece obvio en retrospectiva.
Aaronaught

Su respuesta será casi perfecta si menciona robots.txt;)
deadalnix

77
@deadalnix, pero robots.txtya se menciona en la pregunta, y se puede suponer que se supone.
TRiG

20

Mi único consejo es escuchar lo que le dice el sitio web que está rastreando y cambiar dinámicamente su rastreo en respuesta a eso.

  • ¿El sitio es lento? Rastree más despacio para que no lo DDOS. ¿Es rápido? ¡Arrástrese un poco más, entonces!

  • ¿El sitio está fallando? Rastrear menos para no estresar un sitio que ya está bajo presión. Utilice tiempos de reintento que aumenten exponencialmente, de modo que vuelva a intentarlo menos cuanto más tiempo esté fallando el sitio. Pero recuerde volver a intentarlo más tarde, eventualmente, para que pueda ver todo lo que falta debido, por ejemplo, a un error de una semana en una ruta de URL específica.

  • ¿Tienes muchos 404? (recuerde, nuestras elegantes páginas 404 también toman tiempo del servidor). Evite rastrear más URL con esa ruta por ahora, ya que tal vez todo lo que falta; si file001.html- file005.htmlno está allí, te apuesto dólares a las rosquillas file999.htmlno es tampoco! O tal vez rechace el porcentaje de tiempo que recupera algo en ese camino.

Creo que aquí es donde muchos rastreadores ingenuos se equivocan profundamente, al tener una estrategia robótica que ejecutan igual independientemente de las señales que están recibiendo del sitio objetivo.

Un rastreador inteligente es reactivo a los sitios objetivo que está tocando.


19

Otros mencionaron algunos de los mantras, pero permítanme agregar algunos.

Presta atención al tipo y tamaño del archivo. No extraigas estos binarios enormes.

Optimice para algunas páginas típicas de "listado de directorio" del servidor web. En particular, permiten ordenar por tamaño, fecha, nombre, permisos, etc. No trate cada método de clasificación como una raíz separada para el rastreo.

Solicite gzip (compresión sobre la marcha) siempre que esté disponible.

Limite la profundidad o detecte la recursividad (o ambas).

Limite el tamaño de la página. Algunas páginas implementan lonas para frustrar los bots de desecho de correo electrónico. Es una página que se carga a velocidad de caracol y tiene una longitud de terabytes.

No indexe 404 páginas. Los motores que cuentan con índices más grandes hacen esto, y reciben a cambio un merecido odio.

Esto puede ser complicado, pero intente detectar granjas de equilibrio de carga. Si v329.host.com/pages/article.php?99999 devuelve lo mismo que v132.host.com/pages/article.php?99999, no raspe la lista completa de servidores desde v001.host.com hasta v999. host.com


¡Esquinas importantes!
M. Dudley

Hoy en día, a menudo puede detectar contenido duplicado intencionalmente (p. Ej., Granjas de equilibrio de carga) comprobando las etiquetas canónicas.
Brian

4

Solo agregaré una cosita.

Derechos de autor y otros problemas legales: Sé que usted escribe que son sitios web públicos, por lo que puede que no haya derechos de autor, pero puede haber otros problemas legales para almacenar los datos.

Por supuesto, esto dependerá de los datos de qué país está almacenando (y dónde los está almacenando). Caso en cuestión los problemas con la Ley Patriota de Estados Unidos frente a la Directiva de Protección de Datos de la UE. Un resumen ejecutivo del problema es que las compañías estadounidenses tienen que dar sus datos, por ejemplo. si se le pregunta al FBI, sin informar a los usuarios de eso, donde la Directiva de Protección de Datos establece que los usuarios deben ser informados de esto. Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
"Sé que escribes que son sitios web públicos, por lo que puede que no haya derechos de autor". Cada sitio web en Internet es público, y cada sitio web tiene derechos de autor, a menos que explícitamente indique lo contrario.
Gavin Coates

3

Llame a su webcrawler ya sea eso o araña, asociado con su nombre. Esto es importante. Los motores de análisis y similares buscan aquellos que lo asocien como ... araña. ;)

La forma en que lo he visto es a través del encabezado de solicitud User-Agent


Pensé que generalmente era un "robot" o un "robot". Sé que Google es Googlebot.
Aaronaught

Buen punto. Mientras se pueda distinguir. Probablemente hay una publicación en SO que los expone.
jcolebrand

2
  • Preserve las cookies, cuando sea necesario, para evitar que el sitio web cree sesiones innecesarias.
  • Implemente el comportamiento de análisis de enlaces, el más cercano al navegador uno. Nuestro sitio en vivo informa una gran cantidad de '404', debido a solicitudes de bot para archivos faltantes.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.