Comment être un bon citoyen lors de l'exploration de sites Web?

83

Je vais développer des fonctionnalités qui permettront d'explorer divers sites Web publics et de traiter / regrouper les données les concernant. Rien de plus sinistre que de chercher des adresses e-mail - en fait, c'est quelque chose qui pourrait en réalité générer du trafic supplémentaire sur leurs sites. Mais je m'égare.

Hormis le respect robots.txt, y a-t-il des règles ou des directives, écrites ou non écrites, que je devrais suivre pour (a) éviter de paraître malveillants et potentiellement interdites, et (b) ne pas causer de problèmes aux propriétaires du site / aux webmasters?

Quelques exemples auxquels je peux penser, qui peuvent ou non avoir de l'importance:

  • Nombre de demandes parallèles
  • Temps entre les demandes
  • Temps entre les analyses entières
  • Eviter les liens potentiellement destructifs (ne pas vouloir être l' Araignée du Destin - mais qui sait si c'est même pratique)

C'est vraiment juste cracher-boule, cependant; Existe-t-il une sagesse qui a fait ses preuves et qui soit largement applicable à quiconque a l'intention d'écrire ou d'utiliser une araignée?

Aaronaught
la source
1
Bien que les réponses ci-dessous fournissent une excellente réponse sur la manière d’analyser le contenu avec respect, veuillez garder à l’esprit que l’utilisation acceptable dudit contenu une fois celui-ci analysé. La republier, en tout ou en partie, peut constituer une violation du droit d'auteur.
Gavin Coates

Réponses:

85

En plus d'obéir à robots.txt, obéissez nofollowet noindexdans les <meta>éléments et les liens:

  • Nombreux sont ceux qui pensent que robots.txt n'est pas le bon moyen de bloquer l'indexation et, en raison de ce point de vue, ont demandé à de nombreux propriétaires de sites de s'appuyer sur la <meta name="robots" content="noindex">balise pour indiquer aux robots d'exploration de ne pas indexer une page.

  • Si vous essayez de créer un graphique des connexions entre les sites Web (tout ce qui ressemble au PageRank), (et <meta name="robots" content="nofollow">) est censé indiquer que le site source ne fait pas suffisamment confiance au site de destination pour lui donner son aval. Ainsi, bien que vous puissiez indexer le site de destination, vous ne devez pas stocker la relation entre les deux sites.

Le référencement est plus un art qu'une science, et il est pratiqué par un grand nombre de personnes qui savent ce qu'elles font et qui lisent les résumés analytiques des personnes qui savent ce qu'elles font. Vous allez rencontrer des problèmes qui vous empêcheront de faire des choses que d'autres sites jugeraient parfaitement acceptables en raison d'une règle ou d'une personne entendue ou lue dans un article de blog sur SEOmoz qui peut ou peut ne pas être interprétée correctement.

En raison de cet élément humain, sauf si vous êtes Google, Microsoft ou Yahoo !, vous êtes présumé malveillant, sauf preuve du contraire. Vous devez faire particulièrement attention à ne pas menacer un propriétaire de site Web et à agir de la manière dont vous voudriez qu'un robot d'exploration potentiellement malveillant (mais heureusement bénin) agisse:

  • arrêtez l'exploration d'un site dès que vous détectez un blocage: 403 / 401s sur les pages dont vous savez le travail, la limitation, les délais d'inactivité, etc.
  • évitez les analyses exhaustives sur des périodes relativement courtes: explorez une partie du site et revenez plus tard (quelques jours plus tard) pour explorer une autre partie. Ne faites pas de demandes parallèles.
  • évitez d’explorer les zones potentiellement sensibles: les URL avec /admin/, par exemple.

Même dans ce cas, la bataille sera rude, à moins que vous utilisiez des techniques de type chapeau noir, telles que la falsification d’UA ou le masquage intentionnel de modèles rampants: de nombreux propriétaires de site, pour les mêmes raisons que précédemment, bloqueront à vue un robot inconnu. la chance que quelqu'un n'essaye pas de "pirater leur site". Préparez-vous à beaucoup d'échec.

Une des choses que vous pouvez faire pour lutter contre l'image négative qu'un robot d'exploration inconnu va avoir est de préciser dans votre chaîne d'agent utilisateur qui vous êtes:

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

http://example.com/aarobot.htmlexplique ce que vous essayez d'accomplir et pourquoi vous n'êtes pas une menace. Cette page devrait contenir quelques éléments:

  • Informations sur la façon de vous contacter directement
  • Informations sur ce que le robot rassemble et pourquoi il le collecte
  • Informations sur la manière de ne pas participer et de supprimer toutes les données collectées

Cette dernière est la clé: un bon opt-out est comme une garantie de remboursement et génère un achalandage déraisonnable. Il doit être humain: une étape simple (adresse électronique ou, idéalement, un formulaire) et complète (il ne devrait y avoir aucun "piège": la désactivation signifie que vous arrêtez de crawler sans exception).


la source
18
Énorme +1 pour la suggestion de mettre des informations claires dans User-Agent. J'ai eu la tâche de fouiller dans les journaux du serveur Web pour savoir qui spiderait un grand site, et ce n'est pas amusant d'essayer de localiser qui exécute toutes ces araignées obscures.
Carson63000
4
Il est assez courant de mettre l'URL dans le formulaire (+http://example.com/aarobot.html). Je ne sais pas à quoi +sert le panneau, mais je l'ai souvent vu. Web-Sniffer le fait, et beaucoup d'autres.
TRiG
C'est une excellente information, mais je suis confus sur une chose: vous mentionnez rel="noindex"comme s'il s'agissait d'un <a>attribut, mais la page vers laquelle vous pointez le lien le décrit comme faisant partie de l' attribut de la <meta>balise content. Est-ce les deux, ou était-ce une faute de frappe dans la réponse?
Aaronaught
1
"Le référencement est plus un art qu'une vraie science" - ce n'est pas vrai. Si vous êtes un programmeur statistique, le référencement est un art et non une compétence de reconnaissance mathématique. Les diplômés en mathématiques ayant des compétences en programmation ou les programmeurs en mathématiques sont en forte demande dans le secteur du profilage de données Web.
Mardi
32

Bien que cela ne réponde pas à toutes vos questions, je pense que cela vous aidera, ainsi que les sites que vous explorez.

Semblable à la technique utilisée pour forcer les sites Web en force brutale sans attirer l'attention, si vous avez un assez grand nombre de sites à explorer, ne parcourez pas la page suivante du site tant que vous n'avez pas parcouru la page suivante de tous les autres sites. . Eh bien, les serveurs modernes autoriseront la réutilisation de la connexion HTTP . Vous voudrez peut-être en faire plusieurs pour minimiser les frais généraux, mais l'idée est toujours valable. Ne parcourez pas un site jusqu'à épuisement jusqu'à ce que vous passiez au suivant . Partager l'amour.

Pour vous, à la fin de la journée, vous pouvez toujours explorer autant de pages, mais l’utilisation moyenne de la bande passante sur un seul site sera bien moindre.

Si vous voulez éviter d'être l'araignée du destin, il n'y a pas de méthode infaillible. Si quelqu'un veut coller des haricots leur nez , ils et probablement faire ainsi dans les manières que vous pourriez ne jamais prédire. Cela dit, si cela ne vous dérange pas de manquer une page valide occasionnelle, ayez une liste noire de mots pour un lien qui vous empêchera de la suivre. Par exemple:

  • Effacer
  • Retirer
  • Mise à jour
  • Modifier
  • Modifier

Pas infaillible, mais parfois, vous ne pouvez pas empêcher les gens d'apprendre à la dure;)

Dan McGrath
la source
3
Un bon conseil sur "partager l'amour" - n'avait pas du tout envisagé cela, bien que cela semble évidemment évident rétrospectivement.
Aaronaught
Votre réponse sera presque parfaite si vous mentionnez robots.txt;)
deadalnix
7
@deadalnix, mais robots.txtest déjà mentionné dans la question et peut être considéré comme supposé.
TRiG
20

Mon seul conseil est d' écouter ce que le site Web que vous explorez vous dit et de changer dynamiquement votre analyse en réaction à cela.

  • Le site est-il lent? Rampez plus lentement pour ne pas le DDOS. Est-ce rapide? Rampez un peu plus, alors!

  • Le site est-il erroné? Rampez moins afin de ne pas stresser un site déjà sous la contrainte. Utilisez des temps de tentative augmentant de manière exponentielle, afin que vous tentiez de nouveau moins le site avec erreur est long. Mais rappelez-vous de réessayer ultérieurement, pour que vous puissiez voir tout ce qui vous manque en raison d’une erreur d’une semaine sur un chemin d’URL spécifique.

  • Obtenir beaucoup de 404? (N'oubliez pas que nos 404 pages fantastiques prennent également le temps du serveur!) Évitez d'explorer d'autres URL avec ce chemin pour l'instant, car il manque peut-être tout ce qui s'y trouve; si file001.html- file005.htmln'est pas là, je parie que l'argent en beignets file999.htmlne l'est pas non plus! Ou peut-être réduisez-vous le pourcentage de temps pendant lequel vous récupérez quoi que ce soit dans cette voie.

Je pense que c’est là que beaucoup de robots naïfs se trompent profondément en mettant en place une stratégie robotique qui fonctionne de la même manière, quels que soient les signaux qu’ils reçoivent du site cible.

Un robot d'exploration intelligente réagit au (x) site (s) cible (s) qu'il / elle touche.

Jeff Atwood
la source
19

D'autres ont mentionné une partie du mantra, mais laissez-moi en ajouter.

Faites attention au type et à la taille du fichier. Ne tirez pas ces binaires énormes.

Optimisez pour certaines pages "liste de répertoires" de serveur Web typiques. Ils permettent notamment de trier par taille, date, nom, autorisations, etc. Ne traitez pas chaque méthode de tri comme une racine distincte pour l'analyse.

Demandez gzip (compression à la volée) lorsque disponible.

Limitez la profondeur ou détectez la récursivité (ou les deux).

Limiter la taille de la page. Certaines pages implémentent des cibles pour contrecarrer les robots de messagerie. C'est une page qui se charge à la vitesse d'escargot et est longue de téraoctets.

Ne pas indexer 404 pages. Les moteurs qui affichent les plus gros indices y parviennent et reçoivent en retour une haine bien méritée.

Cela peut être délicat, mais essayez de détecter les fermes d’équilibrage de charge. Si v329.host.com/pages/article.php?99999 renvoie la même chose que v132.host.com/pages/article.php?99999, ne parcourez pas la liste complète des serveurs de v001.host.com jusqu'à v999. host.com

SF.
la source
Important corner cases!
M. Dudley
De nos jours, vous pouvez souvent détecter un contenu dupliqué intentionnellement (par exemple, des batteries de serveurs à équilibrage de charge) en recherchant des balises canoniques.
Brian
4

Je vais juste ajouter une petite chose.

Droits d'auteur et autres problèmes juridiques: je sais que vous écrivez qu'il s'agit de sites Web publics. Il est donc possible qu'il n'y ait pas de droits d'auteur, mais il peut exister d'autres problèmes juridiques liés au stockage des données.

Cela dépendra bien sûr des données du pays dans lequel vous les stockez (et de l'endroit où vous les stockez). Exemple typique des problèmes avec le US Patriot Act par rapport à la directive de l'UE sur la protection des données. Un résumé du problème est que les entreprises américaines doivent donner leurs données à, par exemple. le FBI si on lui demande, sans en informer les utilisateurs, que la directive sur la protection des données stipule que les utilisateurs doivent en être informés. Voir http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud

Holger
la source
2
"Je sais que vous écrivez que ce sont des sites Web publics, donc il pourrait ne pas y avoir de droit d'auteur". Chaque site Web sur Internet est public et chaque site Web est protégé par le droit d'auteur, sauf disposition contraire explicite.
Gavin Coates
3

Appelez votre webcrawler ou spider, associé à votre nom. C'est important. Les moteurs d'analyse, etc., recherchent ceux qui vous associent à une ... araignée. ;)

J'ai vu cela se faire via l'en-tête de requête User-Agent

jcolebrand
la source
Je pensais que c'était généralement un "bot" ou un "robot" - je sais que Google appartient à Googlebot.
Aaronaught
Bon point. Tant qu'il peut être distingué. Il y a probablement un post sur SO pour les afficher.
jcolebrand
2
  • Conservez les cookies, si nécessaire, pour empêcher le site Web de créer des sessions inutiles.
  • Implémentez le comportement d'analyse des liens, le plus proche du navigateur un. Notre site en direct rapporte beaucoup de «404», en raison de demandes de bot de fichiers manquants.
Valera Kolupaev
la source