La détection des "stealth" web crawlers
Quelles options sont là pour détecter le web crawlers qui ne veulent pas être détecté?
(Je sais que la liste des techniques de détection permettra à la smart stealth-robot programmeur pour faire une meilleure araignée, mais je ne pense pas que nous serons jamais en mesure de bloquer les smart stealth-robots de toute façon, que ceux qui font des erreurs.)
Je ne parle pas de la belle robots comme googlebot, Yahoo! Slurp.
Je considère qu'un bot bien si c':
- identifie lui-même comme un bot dans la chaîne de l'agent utilisateur
- lit robots.txt (et obéit)
Je parle de la mauvais robots, se cachant derrière commun des agents utilisateur, à l'aide de ma bande passante et de ne jamais me donner quelque chose en retour.
Il y a quelques trappes de visite qui peut être construit liste mise à jour (merci Chris, gs):
- Ajout d'un répertoire seulement une liste (marqué comme pas) dans le robots.txt,
- L'ajout de liens invisibles (éventuellement marqués comme ?),
- style="display: none;" sur le lien ou conteneur parent
- placé sous un autre élément avec un z-index supérieur
- détecter ceux qui ne comprennent pas la CaPiTaLiSaTioN,
- détecter qui essaie de poster des réponses, mais toujours échouer le Captcha.
- détecter les requêtes GET ou POST-seulement les ressources
- détecter l'intervalle entre les demandes
- détecter ordre des pages demandées
- de détecter (systématiquement) les requêtes https ressources sur http
- détecter qui ne demande pas de fichier d'image (ce qui, en combinaison avec une liste des user-agents de l'image connue capable navigateurs fonctionne étonnamment nice)
Certains pièges déclenchés par les deux "bons" et "mauvais" bots.
vous pouvez combiner ces avec une liste blanche:
- Déclencher un piège
- Il demande
robots.txt
? - Il fais pas déclencher un piège parce qu'il a obéi à
robots.txt
Une autre chose importante ici est:
Veuillez considérer les aveugles à l'aide d'un des lecteurs d'écran: donner aux gens un moyen de vous contacter, ou de résoudre un (sans image) le Captcha pour continuer à naviguer.
Quelles méthodes sont là pour détecter automatiquement le web robots en essayant de masquer eux-mêmes comme des humains normaux visiteurs.
Mise à jour
La question n'est pas: Comment puis-je attraper tous les chenilles. La question est: Comment puis-je maximiser les chances de détecter un robot.
Certaines araignées sont vraiment bons, et fait analyser et de comprendre le langage html, xhtml, css, javascript, VB script, etc...
Je n'ai pas d'illusions: je ne vais pas être en mesure de les battre.
Vous serait toutefois être surpris de voir comment stupide certains robots sont. Avec le meilleur exemple de la bêtise (à mon avis) d'être: le casting de tous les Url de minuscules avant de leur demander.
Et puis il y a tout un tas de robots qui sont tout simplement "pas assez bon" pour éviter les diverses trappes.
Vous devez vous connecter pour publier un commentaire.
A quelques temps, j'ai travaillé dans une petite entreprise d'hébergement pour les aider à mettre en œuvre une solution à cette question. Le système que j'ai développé examiné les journaux de serveur web pour une activité excessive, à partir d'une adresse IP donnée et a émis des règles de pare-feu pour bloquer les délinquants. Il inclus des listes blanches d'adresses IP/fourchette sur la base d' http://www.iplists.com/, qui ont ensuite été mis à jour automatiquement selon les besoins de la vérification revendiquée chaînes user-agent et, si le client se prétend légitime d'araignée, mais pas sur la liste blanche, il a réalisé DNS/reverse-DNS recherches pour vérifier que l'adresse IP source correspond à la revendiquée propriétaire du bot. Comme un failsafe, ces actions ont été signalés à l'administrateur par e-mail, avec des liens vers noire/liste blanche de l'adresse dans le cas d'une évaluation inexacte.
Je n'ai pas parlé de ce client dans les 6 mois ou plus, mais le dernier que j'ai entendu, le système a été effectuer de façon très efficace.
Côté point: Si vous pensez que vous faites un semblable système de détection basé sur le hit de limitation de vitesse, assurez-vous d'utiliser au moins une minute (et de préférence au moins cinq minutes) totaux. Je vois beaucoup de gens parler de ces types de régimes qui veulent bloquer quiconque tops 5 à 10 coups par seconde, ce qui peut générer des faux positifs sur l'image lourde de pages (à moins que les images sont exclus du décompte) et sera de générer de faux positifs lorsque quelqu'un comme moi trouve un site intéressant qu'il veut lire tous, de sorte qu'il ouvre tous les liens dans des onglets à la charge en arrière-plan pendant qu'il lit le premier.
Voir Projet Honeypot - ils de la configuration de bot pièges à grande échelle (et ont DNSRBL avec leurs adresses ip).
Utilisation délicate Url et HTML:
En HTML, vous pouvez utiliser beaucoup de trucs avec des commentaires, CDATA éléments, les entités, etc:
Une solution simple est de créer un lien et de le rendre invisible
De sûr, vous devriez s'attendre à ce que certaines personnes qui regarde le code source, suivez ce lien juste pour voir où cela mène. Mais vous pouvez présenter ces utilisateurs avec un captcha...
Valide robots serait, bien sûr, aussi, suivez le lien. Mais vous ne devez pas mettre en œuvre un rel=nofollow, mais le signe d'un permis de robot. (comme l'agent de l'utilisateur)
Une chose que vous n'avez pas de liste, qui sont couramment utilisés pour détecter les mauvais robots.
Frappé de la vitesse, de la bonne robots d'indexation va briser leurs coups jusqu'alors, ils n'ont pas de déluge d'un site avec les demandes. Les mauvaises nouvelles vont faire une des trois choses:
Aussi, certains hors ligne navigation programmes engloutissent un certain nombre de pages, je ne suis pas sûr de ce genre de seuil que vous voulez les utiliser, à commencer blocage par adresse IP.
Cette méthode sera aussi attraper la mise en miroir des programmes comme fmirror ou wget.
Si le bot rend aléatoire de l'intervalle de temps, vous pouvez vérifier pour voir si les liens sont parcourus dans un ordre séquentiel ou la profondeur de la première manière, ou vous pouvez voir si le bot est en traversant une énorme quantité de texte (comme dans les mots pour le lire) dans une trop courte période de temps. Certains sites de limiter le nombre de requêtes par heure, aussi.
En fait, j'ai entendu une idée quelque part, je ne me souviens plus où, que si un utilisateur reçoit trop de données, en termes de kilo-octets, ils peuvent être présentées avec un captcha leur demander de prouver qu'ils ne sont pas un bot. Je n'ai jamais vu que les mises en œuvre si.
Mise à jour sur le Masquage des Liens
Jusqu'à cacher des liens, vous pouvez mettre une div en vertu d'une autre, avec les CSS (en plaçant d'abord dans l'ordre) et éventuellement le réglage de l'ordre de superposition. Un bot ne peut pas ignorer que, sans analyse tous vos javascript pour voir si c'est un menu. Dans une certaine mesure, des liens à l'intérieur invisible DIV éléments ne peuvent pas être ignorés sans le bot analyse de tous les javascript.
De prendre l'idée à la réalisation, appelée javascript qui pourrait afficher les éléments cachés serait possilby tromper un sous-ensemble de javascript bots. Et, il n'est pas beaucoup de travail à mettre en œuvre.
Un bot simple de détection de la méthode que j'ai entendu parler pendant des formes cachées d'entrée technique. Si vous essayez d'obtenir un formulaire de mettre une entrée dans la forme avec un id qui semble tout à fait légitime. Ensuite, l'utilisation de css dans un fichier externe pour le cacher. Ou si vous êtes vraiment paranoïaque, le programme d'installation quelque chose comme jquery pour masquer la zone de saisie au chargement de la page. Si vous faire de ce droit, j'imagine qu'il serait très difficile pour un bot pour le comprendre. Vous savez, ces robots ont-elle de nature à remplir tout sur une page, surtout si vous donnez à votre cachés entrer un id de quelque chose comme id="fname", etc.
Pas testé, mais voici une belle liste des user-agents vous pourriez faire une expression régulière de. Pourrait vous obtenir la plupart du chemin:
Prises à partir de:
http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/
Ce n'est pas vraiment facile de maintenir le bon chaînes d'agent utilisateur. Les versions de navigateur d'aller et venir. Faire une statistique sur les chaînes d'agent utilisateur par des comportements différents peuvent révéler des choses intéressantes.
Je ne sais pas dans quelle mesure cela pourrait être automatisé, mais au moins c'est une différenciation chose.
Vous pouvez également vérifier les références. Pas de renvoi pourrait soulever bot suspition. Mauvais renvoi de moyens certes, il n'est pas du navigateur.
Je voudrais pas le faire. Vous pouvez vous retrouver blacklisté par google pour le black hat SEO 🙂
Je travaille actuellement pour une société qui scanne les sites web afin de les classer. Nous avons également consulter des sites web pour les logiciels malveillants.
Dans mon expérience, le numéro un des bloqueurs de notre robot d'indexation web (qui utilise IE ou Firefox UA et de ne pas obéir robots.txt. Duh.) sont des sites intentionnellement hébergeant des logiciels malveillants. C'est une douleur parce que le site, puis retombe à un homme qui a pour charger manuellement le site, classer et vérifier les logiciels malveillants.
Je me suis juste dit par le blocage des robots web que vous mettez vous-même dans une mauvaise compagnie.
Bien sûr, si ils sont terriblement impoli et sucer des tonnes de votre bande passante, c'est une autre histoire parce que vous avez une bonne raison.
Les gens gardent l'adressage large robots, mais pas les robots qui sont spécialisés pour votre site web.
J'écris stealth robots et si ils sont construit individuellement aucune quantité de pots de miel ou des liens cachés aura aucun effet que ce soit, la seule véritable façon de détecter spécialisé robots est en inspectant les modes de connexion.
Le meilleur des systèmes de recours à l'IA (par exemple, Linkedin) l'utilisation de l'IA pour remédier à ce problème.
La solution la plus simple est d'écrire des analyseurs de journal qui analysent les connexions IP et simplement de la liste noire des adresses ip ou servir de captcha, au moins temporaire.
par exemple
si IP X est vu toutes les 2 secondes de la connexion à
foo.com/cars/*.html
mais pas toutes les autres pages, c'est probablement un bot ou une faim de puissance de l'utilisateur.Sinon il existe différents javascript défis qui agissent comme protection (par exemple, Cloudflare anti-bot système), mais ceux-ci sont facilement résoluble, vous pouvez écrire quelque chose de personnalisé et qui pourrait être assez dissuasif pour faire qu'il ne vaut pas l'effort pour le robot.
Cependant, vous devez poser une question, êtes-vous prêt à faux-positifs légitimes des utilisateurs, et présenter des inconvénients pour eux pour éviter bot de la circulation. La protection des données est impossible paradoxe.
réponse courte: si un niveau moyen programmeur sait ce qu'il fait, vous ne serez pas en mesure de détecter un robot sans affecter l'utilisateur réel. Avoir vos informations au public, vous ne serez pas en mesure de la défendre contre un robot... c'est comme le 1er amendement de la droite 🙂