¿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. No hay nada siniestro como buscar direcciones de correo electrónico, de hecho, es algo que en realidad puede generar tráfico adicional a sus sitios. Pero estoy divagando.

Además de cumplir con robots.txt , ¿existen reglas o pautas, escritas o no escritas, que debo seguir para (a) evitar aparecer malintencionado y potencialmente ser 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 Spider of Doom , pero quién sabe si esto es parejo. práctico)

Eso es realmente solo escupir bolas, sin embargo; ¿Existe alguna sabiduría probada y comprobada que sea ampliamente aplicable para cualquiera que intente escribir o utilizar una araña?

    
pregunta Aaronaught 11.07.2011 - 03:25
fuente

7 respuestas

84

Además de obedecer robots.txt, obedezca los elementos y enlaces nofollow y noindex en <meta> :

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

  • Si está intentando hacer un gráfico de conexiones entre sitios web (algo similar a PageRank), se supone que (y <meta name="robots" content="nofollow"> ) indica que el sitio de origen no confía lo suficiente en el sitio de destino Para darle un aval 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 practica mucha gente que sabe lo que está haciendo, y mucha gente que lee los resúmenes ejecutivos de las personas que saben lo que están haciendo. Se encontrará con problemas en los que se le bloquearán los sitios para hacer cosas que otros sitios consideraron 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 seas Google, Microsoft o Yahoo !, se presume que eres malicioso a menos que se demuestre lo contrario. Debe tener un cuidado especial para actuar como si no fuera una amenaza para el propietario de un sitio web, y actuar de acuerdo con la forma en que desearía que actuara 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 sepa que funcionan, limitaciones, tiempos de espera, etc.
  • evite los rastreos exhaustivos en períodos de tiempo relativamente cortos: rastree una parte del sitio y vuelva más tarde (unos días más tarde) para rastrear otra parte. No hagas solicitudes paralelas.
  • evite rastrear áreas potencialmente sensibles: URL con /admin/ en ellas, por ejemplo.

Incluso entonces, va a ser una batalla cuesta arriba a menos que recurras a técnicas de sombrero negro como la falsificación UA o el enmascaramiento deliberado de tus patrones de rastreo: muchos propietarios de sitios, por las mismas razones anteriores, bloquearán un rastreador desconocido a la vista en lugar de arriesgarse a que alguien no intente "piratear su sitio". Prepárate para muchos fracasos.

Una cosa que podrías hacer para combatir la imagen negativa que tendrá un rastreador desconocido es aclarar en tu cadena de agente de usuario quién eres:

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

Donde http://example.com/aarobot.html explica lo que estás tratando de lograr y por qué no eres una amenaza. Esa página debe tener algunas cosas:

  • Información sobre cómo contactarlo directamente
  • Información sobre lo que recopila el rastreador y por qué lo recopila
  • Información sobre cómo darse de baja y que se eliminen todos los datos recopilados

La última es clave: una buena opción de exclusión es como una Money Back Guarantee ™ y obtiene una buena cantidad de buena voluntad. Debería ser humano: un paso simple (ya sea una dirección de correo electrónico o, idealmente, un formulario) y completo (no debería haber ningún "error": optar por dejar de rastrear sin excepción).

    
respondido por el user8 11.07.2011 - 05:44
fuente
31

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

Similar a la técnica utilizada para atacar con fuerza los sitios web sin llamar la atención, si tiene un grupo lo 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 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 que se agote hasta que pase al siguiente . Comparte el amor.

Para usted al final de un día, aún puede haber rastreado tantas 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 hay un método seguro. Si alguien quiere meter frijoles en la nariz , lo harán y probablemente lo harán por lo que de maneras no se podría nunca predecir. Dicho esto, si no le importa perder una página válida ocasional, tenga una lista negra de palabras para un enlace que le impida seguirla. Por ejemplo:

  • Eliminar
  • Eliminar
  • Actualizar
  • Editar
  • Modificar

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

    
respondido por el Dan McGrath 11.07.2011 - 04:24
fuente
20

Mi consejo es que escuche lo que el sitio web que está rastreando le está diciendo, y cambie dinámicamente su rastreo en respuesta a eso.

  • ¿El sitio es lento? Rastrear más lento para que no lo DDOS. Es rapido ¡Rastrea un poco más, entonces!

  • ¿Se está produciendo un error en el sitio? Rastrear menos para no estresar un sitio que ya está bajo coacción. Utilice tiempos de reintento que aumenten exponencialmente, de modo que vuelva a intentar 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 se está perdiendo debido a, digamos, un error de una semana en una ruta URL específica.

  • ¿Obteniendo muchos 404s? (¡recuerde, nuestras lujosas páginas 404 también requieren tiempo para el servidor!) Evite rastrear otras URL con esa ruta por ahora, ya que quizás todo lo que falte; Si file001.html - file005.html no está allí, ¡le apuesto que los dólares a las donas file999.html tampoco lo están! O quizás rechace el porcentaje de tiempo que recupera algo en esa ruta.

Creo que aquí es donde una gran cantidad de rastreadores ingenuos se equivocan al tener una estrategia robótica que les permite actuar de la misma manera, independientemente de las señales que reciban del sitio de destino.

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

    
respondido por el Jeff Atwood 11.07.2011 - 12:38
fuente
19

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

Preste atención al tipo y tamaño de archivo. No tire de estos enormes binarios.

Optimice para algunas páginas típicas de "listado de directorios" de servidores web. En particular, permiten clasificar 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) cuando esté disponible.

Limite la profundidad o detecte la recursión (o ambas cosas).

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

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

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

    
respondido por el SF. 11.07.2011 - 10:52
fuente
3

Sólo añadiré una cosita.

Copyright & Otras cuestiones legales: Sé que escribes que son sitios web públicos, por lo que es posible que no haya derechos de autor, pero puede haber otros problemas legales para almacenar los datos.

Por supuesto, esto dependerá de los datos del país que esté almacenando (y de dónde los almacene). Por ejemplo, los problemas con la Ley Patriota de los Estados Unidos frente a la Directiva de protección de datos de la UE. Un resumen ejecutivo del problema es que las empresas de EE. UU. Tienen que proporcionar sus datos a, por ejemplo. el FBI, si se lo piden, sin informar a los usuarios, donde la Directiva de protección de datos establece que los usuarios deben ser informados al respecto. Se enlace

    
respondido por el Holger 11.07.2011 - 10:37
fuente
2

Llame a su webcrawler ya sea eso o una araña, asociada con su nombre. Esto es importante. Los motores de análisis y similares buscan aquellos para asociarte como ... araña. ;)

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

    
respondido por el jcolebrand 11.07.2011 - 05:20
fuente
1
  • Conservar 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. Nuestro sitio en vivo informa una gran cantidad de '404s', debido a las solicitudes de bots de archivos faltantes.
respondido por el Valera Kolupaev 11.07.2011 - 15:26
fuente

Lea otras preguntas en las etiquetas