J'ai un site Web de musique assez grand avec une grande base de données d'artistes. J'ai remarqué que d'autres sites de musique grattaient les données de notre site (j'entre des noms d'artistes factices ici et là, puis je les recherche sur Google).
Comment puis-je empêcher le grattage de l'écran? Est-ce même possible?
Réponses:
Remarque: Étant donné que la version complète de cette réponse dépasse la limite de longueur de Stack Overflow, vous devrez vous rendre sur GitHub pour lire la version étendue, avec plus de conseils et de détails.
Afin d'empêcher le grattage (également connu sous le nom de Webscraping , Screenscraping , Web data mining , Web harvesting ou Web data extraction ), il est utile de savoir comment ces grattoirs fonctionnent et, par extension, ce qui les empêche de bien fonctionner.
Il existe différents types de grattoir et chacun fonctionne différemment:
Les araignées, comme le bot de Google ou les copieurs de sites Web comme HTtrack , qui suivent récursivement des liens vers d'autres pages afin d'obtenir des données. Ceux-ci sont parfois utilisés pour le scraping ciblé pour obtenir des données spécifiques, souvent en combinaison avec un analyseur HTML pour extraire les données souhaitées de chaque page.
Scripts shell: Parfois, des outils Unix courants sont utilisés pour le scraping: Wget ou Curl pour télécharger des pages, et Grep (Regex) pour extraire les données.
Analyseurs HTML, tels que ceux basés sur Jsoup, Scrapy , et d' autres. Semblables à ceux basés sur des expressions rationnelles shell-script, ceux-ci fonctionnent en extrayant des données de pages basées sur des modèles en HTML, ignorant généralement tout le reste.
Par exemple: si votre site Web dispose d'une fonction de recherche, un tel grattoir peut soumettre une demande de recherche, puis obtenir tous les liens de résultats et leurs titres à partir de la page de résultats HTML, afin d'obtenir spécifiquement uniquement les liens de résultats de recherche et leurs titres . Ce sont les plus courants.
Écrans de veille, basés par exemple sur. Sélénium ou PhantomJS , qui ouvrent votre site Web dans un vrai navigateur, exécutent JavaScript, AJAX, etc., puis obtiennent le texte souhaité de la page Web, généralement en:
Récupérer le code HTML du navigateur après le chargement de votre page et l'exécution de JavaScript, puis en utilisant un analyseur HTML pour extraire les données souhaitées. Ce sont les plus courantes, et de nombreuses méthodes pour casser les analyseurs / scrapers HTML fonctionnent également ici.
Prendre une capture d'écran des pages rendues, puis utiliser l'OCR pour extraire le texte souhaité de la capture d'écran. Ce sont rares, et seuls les grattoirs dédiés qui veulent vraiment que vos données le configurent.
Services de webscraping tels que ScrapingHub ou Kimono . En fait, il y a des gens dont le travail consiste à comprendre comment gratter votre site et retirer le contenu pour que les autres puissent l'utiliser.
Sans surprise, les services de grattage professionnels sont les plus difficiles à dissuader, mais si vous faites en sorte qu'il soit difficile et long de comprendre comment gratter votre site, ceux-ci (et les personnes qui les paient pour le faire) ne seront pas gênés de gratter votre site Web.
Incorporer votre site Web dans les pages d'autres sites avec des cadres et intégrer votre site dans des applications mobiles.
Bien qu'elles ne soient pas techniquement grattantes, les applications mobiles (Android et iOS) peuvent intégrer des sites Web et injecter des CSS et JavaScript personnalisés, modifiant ainsi complètement l'apparence de vos pages.
Copier-coller humain: les gens vont copier et coller votre contenu afin de l'utiliser ailleurs.
Il y a beaucoup de chevauchement entre ces différents types de grattoirs, et de nombreux grattoirs se comporteront de la même manière, même s'ils utilisent des technologies et des méthodes différentes.
Ces conseils concernent principalement mes propres idées, diverses difficultés que j'ai rencontrées lors de l'écriture de grattoirs, ainsi que des informations et des idées provenant des différents sites Web.
Comment arrêter de gratter
Vous ne pouvez pas complètement l'empêcher , car quoi que vous fassiez, des grattoirs déterminés peuvent toujours comprendre comment gratter. Cependant, vous pouvez arrêter beaucoup de raclage en faisant quelques choses:
Surveillez vos journaux et modèles de trafic; limiter l'accès si vous voyez une activité inhabituelle:
Vérifiez régulièrement vos journaux et en cas d'activité inhabituelle indiquant un accès automatisé (grattoirs), comme de nombreuses actions similaires à partir de la même adresse IP, vous pouvez bloquer ou limiter l'accès.
Plus précisément, quelques idées:
Limitation de débit:
Autorisez uniquement les utilisateurs (et les grattoirs) à effectuer un nombre limité d'actions dans un certain temps - par exemple, n'autorisez que quelques recherches par seconde à partir d'une adresse IP ou d'un utilisateur spécifique. Cela ralentira les racleurs et les rendra inefficaces. Vous pouvez également afficher un captcha si les actions sont effectuées trop rapidement ou plus rapidement qu'un utilisateur réel.
Détecter une activité inhabituelle:
Si vous voyez une activité inhabituelle, comme de nombreuses demandes similaires à partir d'une adresse IP spécifique, quelqu'un qui regarde un nombre excessif de pages ou effectue un nombre inhabituel de recherches, vous pouvez empêcher l'accès ou afficher un captcha pour les demandes suivantes.
Ne vous contentez pas de surveiller et de limiter le débit par adresse IP - utilisez également d'autres indicateurs:
Si vous bloquez ou limitez le débit, ne le faites pas uniquement par adresse IP; vous pouvez utiliser d'autres indicateurs et méthodes pour identifier des utilisateurs ou des grattoirs spécifiques. Voici quelques indicateurs qui peuvent vous aider à identifier des utilisateurs / grattoirs spécifiques:
La rapidité avec laquelle les utilisateurs remplissent les formulaires et où cliquer sur un bouton;
Vous pouvez collecter de nombreuses informations avec JavaScript, telles que la taille / résolution d'écran, le fuseau horaire, les polices installées, etc. vous pouvez l'utiliser pour identifier les utilisateurs.
En-têtes HTTP et leur ordre, en particulier User-Agent.
Par exemple, si vous obtenez plusieurs requêtes à partir d'une seule adresse IP, toutes utilisant le même agent utilisateur, la taille d'écran (déterminée avec JavaScript), et l'utilisateur (scraper dans ce cas) clique toujours sur le bouton de la même manière et à à intervalles réguliers, c'est probablement un grattoir d'écran; et vous pouvez bloquer temporairement des demandes similaires (par exemple, bloquer toutes les demandes avec cet agent utilisateur et la taille d'écran provenant de cette adresse IP particulière), et de cette façon vous ne gênerez pas les vrais utilisateurs sur cette adresse IP, par exemple. en cas de connexion internet partagée.
Vous pouvez également aller plus loin, car vous pouvez identifier des demandes similaires, même si elles proviennent d'adresses IP différentes, indiquant un grattage distribué (un grattoir utilisant un botnet ou un réseau de proxys). Si vous recevez un grand nombre de demandes par ailleurs identiques, mais qu'elles proviennent d'adresses IP différentes, vous pouvez bloquer. Encore une fois, soyez conscient de ne pas bloquer par inadvertance de vrais utilisateurs.
Cela peut être efficace contre les screenscrapers qui exécutent JavaScript, car vous pouvez obtenir beaucoup d'informations d'eux.
Questions connexes sur Security Stack Exchange:
Comment identifier de manière unique les utilisateurs avec la même adresse IP externe? pour plus de détails, et
Pourquoi les gens utilisent-ils des interdictions d'adresses IP alors que les adresses IP changent souvent? pour plus d'informations sur les limites de ces méthodes.
Au lieu de bloquer temporairement l'accès, utilisez un Captcha:
Le moyen simple de mettre en œuvre la limitation de débit serait de bloquer temporairement l'accès pendant un certain temps, mais l'utilisation d'un Captcha peut être meilleure, voir la section sur les Captcha plus loin.
Nécessite une inscription et une connexion
Exiger la création de compte afin de visualiser votre contenu, si cela est possible pour votre site. C'est un bon moyen de dissuasion pour les grattoirs, mais c'est aussi un bon moyen de dissuasion pour les vrais utilisateurs.
Afin d'éviter que les scripts créent de nombreux comptes, vous devez:
Exigez une adresse e-mail pour l'inscription et vérifiez cette adresse e-mail en envoyant un lien qui doit être ouvert pour activer le compte. Autorisez un seul compte par adresse e-mail.
Exiger un captcha à résoudre lors de l'enregistrement / création de compte.
Exiger la création de compte pour afficher le contenu éloignera les utilisateurs et les moteurs de recherche; si vous avez besoin de créer un compte pour voir un article, les utilisateurs iront ailleurs.
Bloquer l'accès à partir des adresses IP du service d'hébergement et de suppression de cloud
Parfois, les grattoirs seront exécutés à partir de services d'hébergement Web, tels que Amazon Web Services ou GAE, ou VPS. Limitez l'accès à votre site Web (ou affichez un captcha) pour les demandes provenant des adresses IP utilisées par ces services d'hébergement cloud.
De même, vous pouvez également limiter l'accès à partir des adresses IP utilisées par les fournisseurs de proxy ou VPN, car les grattoirs peuvent utiliser de tels serveurs proxy pour éviter la détection de nombreuses demandes.
Sachez qu'en bloquant l'accès à partir de serveurs proxy et de VPN, vous affecterez négativement les utilisateurs réels.
Rendez votre message d'erreur non descriptif si vous bloquez
Si vous bloquez / limitez l'accès, vous devez vous assurer que vous ne dites pas au racleur ce qui a causé le blocage, ce qui lui donne des indices sur la façon de réparer son racleur. Une mauvaise idée serait donc d'afficher des pages d'erreur avec du texte comme:
Trop de demandes provenant de votre adresse IP, veuillez réessayer plus tard.
Erreur, l'en-tête de l'agent utilisateur n'est pas présent!
Au lieu de cela, affichez un message d'erreur convivial qui ne dit pas au grattoir ce qui l'a causé. Quelque chose comme ça est beaucoup mieux:
[email protected]
, si le problème persiste.C'est également beaucoup plus convivial pour les vrais utilisateurs, s'ils voient une telle page d'erreur. Vous devriez également envisager d'afficher un captcha pour les demandes suivantes au lieu d'un blocage dur, au cas où un utilisateur réel verrait le message d'erreur, afin de ne pas bloquer et donc de faire en sorte que des utilisateurs légitimes vous contactent.
Utilisez Captchas si vous pensez que votre site Web est accessible par un grattoir.
Les captchas ("Test complètement automatisé pour distinguer les ordinateurs et les humains") sont très efficaces contre l'arrêt des grattoirs. Malheureusement, ils sont également très efficaces pour irriter les utilisateurs.
En tant que tels, ils sont utiles lorsque vous suspectez un grattoir possible et que vous souhaitez arrêter le grattage, sans bloquer également l'accès au cas où ce ne serait pas un grattoir mais un véritable utilisateur. Vous voudrez peut-être envisager de montrer un captcha avant d'autoriser l'accès au contenu si vous suspectez un grattoir.
Choses à savoir lors de l'utilisation de Captchas:
Ne lancez pas le vôtre, utilisez quelque chose comme reCaptcha de Google : c'est beaucoup plus facile que d'implémenter un captcha vous-même, c'est plus convivial que certaines solutions de texte flou et déformé que vous pourriez trouver vous-même (les utilisateurs n'ont souvent qu'à cocher une case ), et c'est aussi beaucoup plus difficile à résoudre pour un scripteur qu'une simple image servie depuis votre site
N'incluez pas la solution au captcha dans le balisage HTML: j'ai en fait vu un site Web qui avait la solution pour le captcha dans la page elle - même , (bien que très bien cachée), ce qui la rend plutôt inutile. Ne faites pas quelque chose comme ça. Encore une fois, utilisez un service comme reCaptcha, et vous n'aurez pas ce genre de problème (si vous l'utilisez correctement).
Les captchas peuvent être résolus en vrac: il existe des services de résolution de captcha où les humains réels et peu payés résolvent les captchas en vrac. Encore une fois, l'utilisation de reCaptcha est une bonne idée ici, car ils ont des protections (comme le temps relativement court dont dispose l'utilisateur pour résoudre le captcha). Ce type de service est peu susceptible d'être utilisé à moins que vos données ne soient vraiment utiles.
Servez votre contenu texte comme une image
Vous pouvez restituer du texte dans une image côté serveur et servir celle-ci à afficher, ce qui empêchera les simples grattoirs d'extraire du texte.
Cependant, cela est mauvais pour les lecteurs d'écran, les moteurs de recherche, les performances et à peu près tout le reste. C'est également illégal dans certains endroits (en raison de l'accessibilité, par exemple, l'Americans with Disabilities Act), et il est également facile de le contourner avec certains OCR, alors ne le faites pas.
Vous pouvez faire quelque chose de similaire avec les sprites CSS, mais cela souffre des mêmes problèmes.
N'exposez pas votre ensemble de données complet:
Si possible, ne fournissez pas un moyen pour un script / bot d'obtenir tout votre ensemble de données. Par exemple: vous avez un site d'actualités, avec beaucoup d'articles individuels. Vous pouvez rendre ces articles accessibles uniquement en les recherchant via la recherche sur site, et, si vous n'avez pas la liste de tous les articles sur le site et leurs URL n'importe où, ces articles ne seront accessibles qu'en utilisant la recherche fonctionnalité. Cela signifie qu'un script voulant retirer tous les articles de votre site devra effectuer des recherches pour toutes les phrases possibles qui peuvent apparaître dans vos articles afin de les trouver toutes, ce qui prendra du temps, horriblement inefficace et fera, espérons-le, le grattoir abandonne.
Cela sera inefficace si:
example.com/article.php?articleId=12345
. Cela (et des choses similaires) qui permettra aux grattoirs de simplement parcourir tous lesarticleId
s et de demander tous les articles de cette façon.N'exposez pas vos API, points de terminaison et autres éléments similaires:
Assurez-vous de ne pas exposer d'API, même involontairement. Par exemple, si vous utilisez AJAX ou des requêtes réseau depuis Adobe Flash ou Java Applets (Dieu nous en préserve!) Pour charger vos données, il est trivial de regarder les requêtes réseau à partir de la page et de savoir où ces requêtes vont aller, et rétroconcevoir et utiliser ces points d'extrémité dans un programme de décapage. Assurez-vous d'obscurcir vos points de terminaison et de les rendre difficiles à utiliser pour les autres, comme décrit.
Pour dissuader les analyseurs et les grattoirs HTML:
Étant donné que les analyseurs HTML fonctionnent en extrayant le contenu des pages en fonction de modèles identifiables dans le HTML, nous pouvons intentionnellement modifier ces modèles de manière à casser ces grattoirs, ou même les visser. La plupart de ces conseils s'appliquent également à d'autres grattoirs comme les araignées et les grattoirs.
Changez fréquemment votre HTML
Les grattoirs qui traitent directement le HTML le font en extrayant le contenu de parties spécifiques et identifiables de votre page HTML. Par exemple: si toutes les pages de votre site Web ont un
div
avec un identifiant dearticle-content
, qui contient le texte de l'article, alors il est trivial d'écrire un script pour visiter toutes les pages d'article de votre site et d'extraire le texte du contenu de laarticle-content
div sur chaque page d'article, et voilà, le grattoir a tous les articles de votre site dans un format qui peut être réutilisé ailleurs.Si vous modifiez fréquemment le code HTML et la structure de vos pages, ces grattoirs ne fonctionneront plus.
Vous pouvez fréquemment changer les identifiants et les classes d'éléments dans votre code HTML, peut-être même automatiquement. Donc, si votre produit
div.article-content
ressemble à quelque chosediv.a4c36dda13eaf0
et change chaque semaine, le grattoir fonctionnera bien au début, mais se cassera après une semaine. Assurez-vous également de modifier la longueur de vos identifiants / classes, sinon le grattoir utiliseradiv.[any-14-characters]
pour trouver le div souhaité à la place. Méfiez-vous des autres trous similaires aussi ..S'il n'y a aucun moyen de trouver le contenu souhaité à partir du balisage, le grattoir le fera à partir de la façon dont le code HTML est structuré. Donc, si toutes les pages de votre article sont similaires en ce que chaque contenu
div
dans undiv
qui vient aprèsh1
est le contenu de l'article, les grattoirs obtiendront le contenu de l'article en fonction de cela. Encore une fois, pour briser cela, vous pouvez ajouter / supprimer du balisage supplémentaire à votre code HTML, périodiquement et au hasard, par exemple. l'ajout dediv
s ouspan
s supplémentaires . Avec le traitement HTML côté serveur moderne, cela ne devrait pas être trop difficile.Choses à savoir:
Il sera fastidieux et difficile à mettre en œuvre, à maintenir et à déboguer.
Vous gênerez la mise en cache. Surtout si vous changez les identifiants ou les classes de vos éléments HTML, cela nécessitera des changements correspondants dans vos fichiers CSS et JavaScript, ce qui signifie que chaque fois que vous les changez, ils devront être téléchargés à nouveau par le navigateur. Cela se traduira par des temps de chargement de page plus longs pour les visiteurs réguliers et une charge de serveur accrue. Si vous ne le changez qu'une fois par semaine, ce ne sera pas un gros problème.
Des grattoirs intelligents pourront toujours obtenir votre contenu en déduisant où se trouve le contenu réel, par exemple. en sachant qu'un grand bloc de texte unique sur la page est susceptible d'être l'article réel. Cela permet de toujours trouver et extraire les données souhaitées de la page. Boilerpipe fait exactement cela.
Essentiellement, assurez-vous qu'il n'est pas facile pour un script de trouver le contenu réel souhaité pour chaque page similaire.
Voir aussi Comment empêcher les robots d'exploration en fonction de XPath d'obtenir le contenu de la page pour plus de détails sur la façon dont cela peut être implémenté en PHP.
Modifiez votre code HTML en fonction de l'emplacement de l'utilisateur
C'est un peu similaire à l'astuce précédente. Si vous servez du code HTML différent en fonction de l'emplacement / du pays de votre utilisateur (déterminé par l'adresse IP), cela peut casser les grattoirs qui sont livrés aux utilisateurs. Par exemple, si quelqu'un écrit une application mobile qui érafle les données de votre site, cela fonctionnera bien au début, mais s'arrêtera lorsqu'elle sera réellement distribuée aux utilisateurs, car ces utilisateurs peuvent se trouver dans un pays différent, et ainsi obtenir un HTML différent, que le le grattoir intégré n'a pas été conçu pour consommer.
Changez fréquemment votre HTML, vissez activement les grattoirs en le faisant!
Un exemple: vous avez une fonction de recherche sur votre site Web, située à
example.com/search?query=somesearchquery
, qui renvoie le code HTML suivant:Comme vous l'avez peut-être deviné, c'est facile à gratter: tout ce qu'un grattoir doit faire est d'appuyer sur l'URL de recherche avec une requête et d'extraire les données souhaitées du code HTML renvoyé. En plus de changer périodiquement le HTML comme décrit ci-dessus, vous pouvez également laisser l'ancien balisage avec les anciens identifiants et classes, le masquer avec CSS et le remplir de fausses données, empoisonnant ainsi le grattoir. Voici comment modifier la page des résultats de recherche:
Cela signifie que les grattoirs écrits pour extraire des données du HTML en fonction des classes ou des ID continueront de fonctionner, mais ils obtiendront de fausses données ou même des publicités, des données que les vrais utilisateurs ne verront jamais, car elles sont cachées avec CSS.
Vissez avec le grattoir: insérez de fausses données de pot de miel invisibles dans votre page
En plus de l'exemple précédent, vous pouvez ajouter des éléments de pot de miel invisibles à votre code HTML pour attraper les grattoirs. Un exemple qui pourrait être ajouté à la page de résultats de recherche décrite précédemment:
Un grattoir écrit pour obtenir tous les résultats de la recherche le récupérera, tout comme les autres résultats de recherche réels sur la page, et visitera le lien, à la recherche du contenu souhaité. Un vrai humain ne le verra jamais en premier lieu (car il est caché avec CSS) et ne visitera pas le lien. Une araignée authentique et souhaitable comme celle de Google ne visitera pas le lien non plus parce que vous avez refusé
/scrapertrap/
dans votre robots.txt.Vous pouvez faire
scrapertrap.php
quelque chose comme bloquer l'accès à l'adresse IP qui l'a visitée ou forcer un captcha pour toutes les demandes ultérieures de cette IP.N'oubliez pas de désactiver votre pot de miel (
/scrapertrap/
) dans votre fichier robots.txt afin que les robots des moteurs de recherche n'y tombent pas.Vous pouvez / devez combiner cela avec l'astuce précédente de modification fréquente de votre code HTML.
Changez aussi fréquemment, car les grattoirs apprendront finalement à l'éviter. Modifiez l'URL et le texte du pot de miel. Vous souhaitez également envisager de modifier le CSS intégré utilisé pour le masquage, et utiliser un attribut ID et un CSS externe à la place, car les grattoirs apprendront à éviter tout ce qui a un
style
attribut avec CSS utilisé pour masquer le contenu. Essayez également de ne l'activer que parfois, afin que le grattoir fonctionne initialement, mais se casse après un certain temps. Cela vaut également pour le conseil précédent.Les personnes malveillantes peuvent empêcher l'accès aux vrais utilisateurs en partageant un lien vers votre pot de miel, ou même en incorporant ce lien quelque part sous forme d'image (par exemple sur un forum). Modifiez fréquemment l'URL et raccourcissez les délais d'interdiction.
Servez des données fausses et inutiles si vous détectez un grattoir
Si vous détectez ce qui est évidemment un grattoir, vous pouvez fournir des données fausses et inutiles; cela corrompra les données que le racleur obtient de votre site Web. Vous devez également empêcher de distinguer ces fausses données des vraies données, afin que les grattoirs ne sachent pas qu'ils sont foutus.
À titre d'exemple: vous avez un site Web d'actualités; si vous détectez un grattoir, au lieu de bloquer l'accès, servez de faux articles générés de manière aléatoire , ce qui empoisonnera les données que le grattoir obtient. Si vous rendez vos fausses données indiscernables de la vraie chose, vous aurez du mal à ce que les gratteurs obtiennent ce qu'ils veulent, à savoir les vraies données réelles.
N'accepte pas les demandes si l'agent utilisateur est vide / manquant
Souvent, les gratteurs écrits paresseusement n'enverront pas d'en-tête d'agent utilisateur avec leur demande, contrairement à tous les navigateurs ainsi qu'aux araignées des moteurs de recherche.
Si vous obtenez une demande où l'en-tête de l'agent utilisateur n'est pas présent, vous pouvez afficher un captcha, ou simplement bloquer ou limiter l'accès. (Ou servez de fausses données comme décrit ci-dessus, ou autre chose ..)
Il est trivial d'usurper, mais comme mesure contre les grattoirs mal écrits, cela vaut la peine d'être mis en œuvre.
N'acceptez pas les demandes si l'agent utilisateur est un grattoir courant; liste noire celles utilisées par les grattoirs
Dans certains cas, les grattoirs utiliseront un agent utilisateur qu'aucun véritable navigateur ou moteur de recherche spider n'utilise, comme:
Si vous constatez qu'une chaîne d'agent utilisateur spécifique est utilisée par les grattoirs de votre site et qu'elle n'est pas utilisée par de vrais navigateurs ou araignées légitimes, vous pouvez également l'ajouter à votre liste noire.
S'il ne demande pas d'actifs (CSS, images), ce n'est pas un vrai navigateur.
Un vrai navigateur demandera (presque toujours) et téléchargera des ressources telles que des images et du CSS. Les analyseurs et les grattoirs HTML ne le seront pas car ils ne sont intéressés que par les pages réelles et leur contenu.
Vous pouvez consigner les demandes dans vos actifs, et si vous voyez beaucoup de demandes uniquement pour le HTML, cela peut être un grattoir.
Attention, les robots des moteurs de recherche, les anciens appareils mobiles, les lecteurs d'écran et les appareils mal configurés ne peuvent pas non plus demander d'actifs.
Utiliser et exiger des cookies; utilisez-les pour suivre les actions des utilisateurs et des grattoirs.
Vous pouvez exiger l'activation des cookies pour visualiser votre site Web. Cela dissuadera les rédacteurs de grattoirs inexpérimentés et débutants, mais il est facile pour un grattoir d'envoyer des cookies. Si vous les utilisez et en avez besoin, vous pouvez suivre les actions des utilisateurs et des grattoirs avec eux, et ainsi implémenter la limitation de débit, le blocage ou l'affichage des captchas par utilisateur plutôt que par IP.
Par exemple: lorsque l'utilisateur effectue une recherche, définissez un cookie d'identification unique. Lorsque les pages de résultats sont affichées, vérifiez ce cookie. Si l'utilisateur ouvre tous les résultats de la recherche (vous pouvez le voir à partir du cookie), c'est probablement un grattoir.
L'utilisation de cookies peut être inefficace, car les grattoirs peuvent également envoyer les cookies avec leurs demandes et les supprimer au besoin. Vous empêcherez également l'accès pour les utilisateurs réels qui ont désactivé les cookies, si votre site ne fonctionne qu'avec des cookies.
Notez que si vous utilisez JavaScript pour définir et récupérer le cookie, vous bloquerez les grattoirs qui n'exécutent pas JavaScript, car ils ne peuvent pas récupérer et envoyer le cookie avec leur demande.
Utilisez JavaScript + Ajax pour charger votre contenu
Vous pouvez utiliser JavaScript + AJAX pour charger votre contenu après le chargement de la page elle-même. Cela rendra le contenu inaccessible aux analyseurs HTML qui n'exécutent pas JavaScript. C'est souvent un moyen de dissuasion efficace pour les débutants et les programmeurs inexpérimentés qui écrivent des grattoirs.
Soyez conscient de:
L'utilisation de JavaScript pour charger le contenu réel dégradera l'expérience utilisateur et les performances
Les moteurs de recherche peuvent ne pas exécuter JavaScript non plus, ce qui les empêche d'indexer votre contenu. Cela peut ne pas être un problème pour les pages de résultats de recherche, mais peut l'être pour d'autres choses, telles que les pages d'articles.
Obscurcissez votre balisage, les demandes de réseau à partir de scripts et tout le reste.
Si vous utilisez Ajax et JavaScript pour charger vos données, masquez les données qui sont transférées. Par exemple, vous pouvez encoder vos données sur le serveur (avec quelque chose d'aussi simple que base64 ou plus complexe), puis les décoder et les afficher sur le client, après avoir récupéré via Ajax. Cela signifie que quelqu'un qui inspecte le trafic réseau ne verra pas immédiatement comment votre page fonctionne et charge les données, et il sera plus difficile pour quelqu'un de demander directement les données de demande à vos points de terminaison, car ils devront procéder à une rétro-ingénierie de votre algorithme de désembrouillage.
Si vous utilisez Ajax pour charger les données, vous devez rendre difficile l'utilisation des points de terminaison sans charger d'abord la page, par exemple en exigeant une clé de session comme paramètre, que vous pouvez intégrer dans votre JavaScript ou votre HTML.
Vous pouvez également incorporer vos données obscurcies directement dans la page HTML initiale et utiliser JavaScript pour les désobfusquer et les afficher, ce qui éviterait les demandes réseau supplémentaires. Cela rendra considérablement plus difficile l'extraction des données à l'aide d'un analyseur HTML uniquement qui n'exécute pas JavaScript, car celui qui écrit le scraper devra inverser l'ingénierie de votre JavaScript (que vous devriez également obscurcir).
Vous voudrez peut-être changer vos méthodes d'obscurcissement régulièrement, pour briser les grattoirs qui l'ont compris.
Il y a cependant plusieurs inconvénients à faire quelque chose comme ça:
Il sera fastidieux et difficile à mettre en œuvre, à maintenir et à déboguer.
Il sera inefficace contre les grattoirs et les grattoirs qui exécutent réellement JavaScript puis extraient les données. (La plupart des analyseurs HTML simples n'exécutent pas JavaScript cependant)
Cela rendra votre site non fonctionnel pour les vrais utilisateurs s'ils ont désactivé JavaScript.
Les performances et les temps de chargement des pages en souffriront.
Non technique:
Dites aux gens de ne pas gratter, et certains le respecteront
Trouvez un avocat
Rendez vos données disponibles, fournissez une API:
Vous pouvez rendre vos données facilement disponibles et exiger une attribution et un lien vers votre site. Peut-être facturer $$$ pour cela.
Divers:
Il existe également des services commerciaux de protection contre le grattage, tels que l'anti-grattage par Cloudflare ou Distill Networks (Détails sur la façon dont cela fonctionne ici ), qui font ces choses, et plus pour vous.
Trouvez un équilibre entre la convivialité pour les utilisateurs réels et la résistance aux grattages: tout ce que vous faites aura un impact négatif sur l'expérience utilisateur d'une manière ou d'une autre, trouvez des compromis.
N'oubliez pas votre site mobile et vos applications. Si vous disposez d'une application mobile, celle-ci peut également être économisée et le trafic réseau peut être inspecté pour déterminer les points de terminaison REST qu'elle utilise.
Les grattoirs peuvent gratter d'autres grattoirs: s'il existe un site Web dont le contenu est gratté du vôtre, d'autres grattoirs peuvent gratter le site Web de ce grattoir.
Lectures complémentaires:
Article de Wikipédia sur le grattage Web . Beaucoup de détails sur les technologies impliquées et les différents types de grattoir web.
Empêcher les scripteurs de claquer votre site Web des centaines de fois par seconde . Q & A sur un problème très similaire - les robots vérifient un site Web et achètent des choses dès leur mise en vente. Beaucoup d'informations pertinentes, en particulier. sur Captchas et limitant le débit.
la source
A real browser will (almost always) request and download assets such as images and CSS
également vrai pour les lecteurs d'accessibilité? CAPTCHA est cassé donc au moins les services professionnels ne sont probablement pas entravés par cela. L'utilisation de cookies nécessite une notification / consentement dans l'UE.Find a balance between usability for real users and scraper-proofness
équilibrer également le temps de programmation / la complexité par rapport aux avantages financiers.Je suppose que vous vous êtes installé
robots.txt
.Comme d'autres l'ont mentionné, les grattoirs peuvent simuler presque tous les aspects de leurs activités, et il est probablement très difficile d'identifier les demandes émanant des méchants.
Je considérerais:
/jail.html
.robots.txt
(afin que les araignées respectueuses ne visitent jamais).display: none
)./jail.html
.Cela pourrait vous aider à identifier rapidement les demandes des gratteurs qui ignorent de manière flagrante votre
robots.txt
.Vous pouvez également faire votre
/jail.html
un site Web complet qui a tout le même, le balisage exact que les pages normales, mais avec des données de faux (/jail/album/63ajdka
,/jail/track/3aads8
, etc.). De cette façon, les mauvais racleurs ne seront pas alertés d'une "entrée inhabituelle" jusqu'à ce que vous ayez la chance de les bloquer complètement.la source
Sue 'em.
Sérieusement: si vous avez de l'argent, parlez à un bon, gentil et jeune avocat qui connaît bien les Internets. Vous pourriez vraiment pouvoir faire quelque chose ici. Selon l'endroit où les sites sont basés, vous pouvez demander à un avocat de rédiger un cessez-et-vous abstenir ou son équivalent dans votre pays. Vous pourrez peut-être au moins effrayer les salauds.
Documentez l'insertion de vos valeurs fictives. Insérez des valeurs fictives qui vous indiquent clairement (mais obscurément). Je pense que c'est une pratique courante dans les entreprises de l'annuaire téléphonique, et ici en Allemagne, je pense qu'il y a eu plusieurs cas où des copieurs ont été éliminés par de fausses entrées qu'ils ont copiées 1: 1.
Ce serait dommage si cela vous poussait à gâcher votre code HTML, à faire glisser le référencement, la validité et d'autres choses (même si un système de modèles qui utilise une structure HTML légèrement différente à chaque demande de pages identiques pourrait déjà aider beaucoup contre grattoirs qui s'appuient toujours sur des structures HTML et des noms de classe / ID pour extraire le contenu.)
Des cas comme celui-ci sont à quoi servent les lois sur le droit d'auteur. Arracher le travail honnête des autres pour gagner de l'argent est quelque chose contre lequel vous devriez pouvoir vous battre.
la source
Il n'y a vraiment rien que vous puissiez faire pour empêcher complètement cela. Les grattoirs peuvent simuler leur agent utilisateur, utiliser plusieurs adresses IP, etc. et apparaître comme un utilisateur normal. La seule chose que vous pouvez faire est de rendre le texte non disponible au moment du chargement de la page - faites-le avec image, flash ou chargez-le avec JavaScript. Cependant, les deux premières sont de mauvaises idées, et la dernière serait un problème d'accessibilité si JavaScript n'est pas activé pour certains de vos utilisateurs réguliers.
S'ils claquent absolument votre site et parcourent toutes vos pages, vous pouvez faire une sorte de limitation de taux.
Il y a cependant de l'espoir. Les grattoirs comptent sur les données de votre site dans un format cohérent. Si vous pouviez le randomiser, cela pourrait briser leur grattoir. Des choses comme changer l'ID ou les noms de classe des éléments de page à chaque chargement, etc. Mais c'est beaucoup de travail à faire et je ne sais pas si cela en vaut la peine. Et même alors, ils pourraient probablement contourner cela avec suffisamment de dévouement.
la source
Fournissez une API XML pour accéder à vos données; d'une manière simple à utiliser. Si les gens veulent vos données, ils les obtiendront, vous feriez aussi bien de tout faire.
De cette façon, vous pouvez fournir un sous-ensemble de fonctionnalités de manière efficace, garantissant que, à tout le moins, les grattoirs ne gâcheront pas les demandes HTTP et les énormes quantités de bande passante.
Ensuite, tout ce que vous avez à faire est de convaincre les personnes qui souhaitent que vos données utilisent l'API. ;)
la source
Désolé, c'est vraiment assez difficile de faire ça ...
Je vous suggère de leur demander poliment de ne pas utiliser votre contenu (si votre contenu est protégé par le droit d'auteur).
Si c'est le cas et qu'ils ne le retirent pas, alors vous pouvez prendre des mesures supplémentaires et leur envoyer une lettre de cesser et de s'abstenir .
Généralement, tout ce que vous faites pour empêcher le grattage se terminera probablement par un effet plus négatif, par exemple l'accessibilité, les robots / araignées, etc.
la source
D'accord, comme le disent tous les articles, si vous voulez le rendre convivial pour les moteurs de recherche, les bots peuvent se gratter à coup sûr.
Mais vous pouvez toujours faire quelques choses, et cela peut être affectif pour les robots de grattage à 60-70%.
Faites un script de vérificateur comme ci-dessous.
Si une adresse IP particulière visite très rapidement, après quelques visites (5-10), mettez son adresse IP + les informations du navigateur dans un fichier ou une base de données.
L'étape suivante
(Ce serait un processus d'arrière-plan et s'exécutant en tout temps ou planifié après quelques minutes.) Créez-vous un autre script qui continuera à vérifier ces adresses IP suspectes.
Cas 1. Si l'agent utilisateur est d'un moteur de recherche connu comme Google, Bing , Yahoo (vous pouvez trouver plus d'informations sur les agents utilisateurs en le recherchant sur Google). Ensuite, vous devez voir http://www.iplists.com/ . Cette liste et essayez de faire correspondre les modèles. Et si cela ressemble à un faux user-agent, demandez à remplir un CAPTCHA lors de la prochaine visite. (Vous devez rechercher un peu plus sur les adresses IP des bots. Je sais que cela est réalisable et essayez également le whois de l'adresse IP. Cela peut être utile.)
Cas 2. Aucun agent utilisateur d'un robot de recherche: demandez simplement de remplir un CAPTCHA lors de la prochaine visite.
la source
Réponse tardive - et cette réponse n'est probablement pas non plus celle que vous souhaitez entendre ...
Moi-même, j'ai déjà écrit plusieurs (plusieurs dizaines) de différents grattoirs d'exploration de données spécialisés . (juste parce que j'aime la philosophie des "données ouvertes").
Voici déjà de nombreux conseils dans d'autres réponses - maintenant je jouerai le rôle d'avocat du diable et étendrai et / ou corrigerai leur efficacité.
Première:
Essayer d'utiliser certaines barrières techniques ne vaut pas la peine, car:
Plain HMTL - la façon la plus simple est d'analyser les pages HTML simples, avec une structure bien définie et des classes CSS. Par exemple, il suffit d'inspecter l'élément avec Firebug et d'utiliser les bons chemins Xpath et / ou CSS dans mon grattoir.
Vous pouvez générer la structure HTML dynamiquement et aussi, vous pouvez générer dynamiquement les noms de classe CSS (et le CSS lui-même aussi) (par exemple en utilisant des noms de classe aléatoires) - mais
Vous ne pouvez pas modifier la structure de chaque réponse, car vos utilisateurs réguliers vous détesteront. En outre, cela causera plus de problèmes pour vous (maintenance) et non pour le grattoir. Le chemin XPath ou CSS peut être déterminé par le script de scraping automatiquement à partir du contenu connu.
Ajax - un peu plus difficile au début, mais accélère souvent le processus de raclage :) - pourquoi?
Lors de l'analyse des demandes et des réponses, je viens de configurer mon propre serveur proxy (écrit en perl) et mon firefox l'utilise. Bien sûr, parce que c'est mon propre proxy - il est complètement caché - le serveur cible le voit comme un navigateur normal. (Donc, pas d'en-têtes X-Forwarded-for et tels). Sur la base des journaux de proxy, il est principalement possible de déterminer la "logique" des demandes ajax, par exemple, je pourrais ignorer la plupart du scraping html, et utiliser simplement les réponses ajax bien structurées (principalement au format JSON).
Donc, l' ajax n'aide pas beaucoup ...
Certaines pages plus compliquées utilisent des fonctions javascript très compactes .
Voici possible d'utiliser deux méthodes de base:
Un tel grattage est lent (le grattage se fait comme dans un navigateur classique), mais il est
Le filtrage basé sur l' agent utilisateur n'aide pas du tout. Tout mineur de données sérieux le réglera sur un correct dans son grattoir.
Connexion requise - n'aide pas. Le moyen le plus simple de le battre (sans aucune analyse et / ou scriptage du protocole de connexion) est simplement de se connecter au site en tant qu'utilisateur régulier, en utilisant Mozilla et après avoir simplement exécuté le grattoir basé sur Mozrepl ...
Rappelez-vous, la connexion requise aide les robots anonymes, mais n'aide pas contre quelqu'un qui veut gratter vos données. Il vient de s'enregistrer sur votre site en tant qu'utilisateur régulier.
L'utilisation de cadres n'est pas très efficace non plus. Il est utilisé par de nombreux services de cinéma en direct et n'est pas très difficile à battre. Les cadres sont simplement des pages HTML / Javascript supplémentaires qu'il faut analyser ... Si les données en valent la peine - le mineur de données fera l'analyse requise.
La limitation basée sur IP n'est pas du tout efficace - voici trop de serveurs proxy publics et voici également le TOR ... :) Cela ne ralentit pas le raclage (pour quelqu'un qui veut vraiment vos données).
Très difficile est de gratter les données cachées dans les images. (par exemple, simplement convertir les données en images côté serveur). L'emploi de "tesseract" (OCR) aide plusieurs fois - mais honnêtement - les données doivent valoir le coup pour le grattoir. (qui plusieurs fois ne vaut pas).
De l'autre côté, vos utilisateurs vous détesteront pour cela. Moi-même, (même en ne grattant pas), je déteste les sites Web qui ne permettent pas de copier le contenu de la page dans le presse-papiers (car les informations sont dans les images, ou (les idiotes) essayant de lier avec le bouton droit un événement Javascript personnalisé.: )
Les sites les plus difficiles sont ceux qui utilisent des applets Java ou Flash , et l'applet utilise elle-même des requêtes https sécurisées en interne . Mais réfléchissez-y à deux fois - à quel point les utilisateurs de votre iPhone seront heureux ...;). Par conséquent, actuellement très peu de sites les utilisent. Moi-même, bloquer tout le contenu flash dans mon navigateur (dans les sessions de navigation régulières) - et ne jamais utiliser de sites qui dépendent de Flash.
Vos jalons pourraient être ..., vous pouvez donc essayer cette méthode - rappelez-vous simplement que vous perdrez probablement certains de vos utilisateurs. Souvenez-vous également que certains fichiers SWF sont décompilables. ;)
Captcha (les bons - comme reCaptcha) aide beaucoup - mais vos utilisateurs vous détesteront ... - imaginez comment vos utilisateurs vous aimeront quand ils auront besoin de résoudre certains captchas dans toutes les pages montrant des informations sur les artistes musicaux.
Vous n'avez probablement pas besoin de continuer - vous êtes déjà entré dans l'image.
Maintenant ce que vous devez faire:
N'oubliez pas: il est presque impossible de cacher vos données, si vous, de l'autre côté, souhaitez les publier (de manière conviviale) auprès de vos utilisateurs réguliers.
Alors,
Réfléchissez bien avant d'essayer d'utiliser certains obstacles techniques.
Plutôt que d'essayer de bloquer les mineurs de données, ajoutez simplement plus d'efforts à la convivialité de votre site Web. Votre utilisateur vous aimera. Le temps (et l'énergie) investis dans les barrières techniques ne valent généralement pas - il vaut mieux passer du temps à créer un site Web encore meilleur ...
De plus, les voleurs de données ne sont pas comme des voleurs normaux.
Si vous achetez une alarme domestique bon marché et ajoutez un avertissement "cette maison est connectée à la police" - de nombreux voleurs n'essaieront même pas de s'introduire par effraction. Parce qu'un mauvais geste de sa part - et il va aller en prison ...
Donc, vous investissez seulement quelques dollars, mais le voleur investit et risque beaucoup.
Mais le voleur de données n'a pas de tels risques. bien au contraire - si vous faites un mauvais mouvement (par exemple, si vous introduisez un BUG à la suite d'obstacles techniques), vous perdrez vos utilisateurs. Si le bot de grattage ne fonctionne pas pour la première fois, rien ne se passe - le mineur de données essaiera simplement une autre approche et / ou déboguera le script.
Dans ce cas, vous devez investir beaucoup plus - et le racleur investir beaucoup moins.
Pensez simplement où vous voulez investir votre temps et votre énergie ...
Ps: l'anglais n'est pas mon natif - alors pardonnez mon anglais cassé ...
la source
Du point de vue technique: modélisez simplement ce que fait Google lorsque vous les frappez avec trop de requêtes à la fois. Cela devrait mettre un terme à beaucoup de choses.
D'un point de vue juridique: il semble que les données que vous publiez ne soient pas propriétaires. Cela signifie que vous publiez des noms, des statistiques et d'autres informations qui ne peuvent pas être protégés par des droits d'auteur.
Si tel est le cas, les grattoirs ne violent pas le droit d'auteur en redistribuant vos informations sur le nom de l'artiste, etc.
Je recommande de lire sur Facebook v.Power.com et de voir les arguments utilisés par Facebook pour arrêter le grattage d'écran. Il existe de nombreuses façons légales d'essayer d'empêcher quelqu'un de gratter votre site Web. Ils peuvent être d'une grande portée et imaginatifs. Parfois, les tribunaux achètent les arguments. Parfois non.
Mais, en supposant que vous publiez des informations du domaine public qui ne sont pas protégées par le droit d'auteur comme les noms et les statistiques de base ... vous devez simplement les laisser passer au nom de la liberté d'expression et des données ouvertes. C'est-à-dire ce qu'est le Web.
la source
Choses qui pourraient fonctionner contre les grattoirs débutants:
Choses qui aideront en général:
Choses qui vous aideront mais qui feront que vos utilisateurs vous détesteront:
la source
J'ai fait beaucoup de grattage Web et résumé certaines techniques pour arrêter les grattoirs Web sur mon blog en fonction de ce que je trouve ennuyeux.
C'est un compromis entre vos utilisateurs et les grattoirs. Si vous limitez les IP, utilisez les CAPTCHA, exigez une connexion, etc., vous rendez difficile pour les grattoirs. Mais cela peut également éloigner vos véritables utilisateurs.
la source
Votre meilleure option est malheureusement assez manuelle: recherchez les modèles de trafic qui, selon vous, indiquent le raclage et bannissez leurs adresses IP.
Puisque vous parlez d'un site public, le fait de le rendre convivial pour le moteur de recherche rendra également le site convivial pour le grattage. Si un moteur de recherche peut explorer et gratter votre site, un grattoir malveillant peut également le faire. C'est une ligne fine pour marcher.
la source
Bien sûr, c'est possible. Pour un succès à 100%, mettez votre site hors ligne.
En réalité , vous pouvez faire un peu choses qui rendent le raclage un peu plus difficile. Google vérifie le navigateur pour s'assurer que vous n'êtes pas un robot grattant les résultats de recherche (bien que cela, comme la plupart des autres, puisse être usurpé).
Vous pouvez faire des choses comme nécessiter plusieurs secondes entre la première connexion à votre site et les clics suivants. Je ne sais pas quel serait le moment idéal ni comment le faire, mais c'est une autre idée.
Je suis sûr qu'il y a plusieurs autres personnes qui ont beaucoup plus d'expérience, mais j'espère que ces idées sont au moins quelque peu utiles.
la source
Il y a quelques choses que vous pouvez faire pour éviter de gratter l'écran. Certains ne sont pas très efficaces, tandis que d'autres (un CAPTCHA) le sont, mais entravent la convivialité. Vous devez également garder à l'esprit que cela peut entraver les grattoirs de sites légitimes, tels que les index des moteurs de recherche.
Cependant, je suppose que si vous ne voulez pas le supprimer, cela signifie que vous ne voulez pas non plus que les moteurs de recherche l'indexent.
Voici certaines choses que vous pouvez essayer:
Si je devais le faire, j'utiliserais probablement une combinaison des trois derniers, car ils minimisent les inconvénients pour les utilisateurs légitimes. Cependant, vous devez accepter que vous ne pourrez pas bloquer tout le monde de cette façon et qu'une fois que quelqu'un aura compris comment le contourner, il pourra le gratter pour toujours. Vous pourriez alors juste essayer de bloquer leurs adresses IP pendant que vous les découvrez, je suppose.
la source
Ce n'est pas la réponse que vous voulez probablement, mais pourquoi cacher ce que vous essayez de rendre public?
la source
Première méthode (petits sites uniquement):
servir des données cryptées / codées.
J'ai scapé le web en utilisant python (urllib, requêtes, beautifulSoup etc ...) et j'ai trouvé de nombreux sites Web qui servent des données cryptées / encodées qui ne sont pas décryptables dans aucun langage de programmation simplement parce que la méthode de cryptage n'existe pas.
J'ai réalisé cela dans un site Web PHP en chiffrant et en minimisant la sortie (AVERTISSEMENT: ce n'est pas une bonne idée pour les grands sites) la réponse était toujours un contenu brouillé.
Exemple de minimisation de la sortie en PHP ( Comment réduire la sortie html de la page php? ):
Deuxième méthode:
si vous ne pouvez pas les empêcher de les visser, servez-vous de fausses données inutiles en guise de réponse.
Troisième méthode:
bloquez les agents utilisateurs de grattage courants, vous verrez cela dans les sites Web majeurs / grands car il est impossible de les gratter avec "python3.4" en tant qu'agent utilisateur.
Méthode quatre:
Assurez-vous que tous les en-têtes d'utilisateur sont valides, je fournis parfois autant d'en-têtes que possible pour que mon grattoir ressemble à un utilisateur authentique, certains d'entre eux ne sont même pas vrais ou valides comme en-FU :).
Voici une liste de certains des en-têtes que je fournis couramment.
la source
Plutôt que de mettre des robots sur liste noire, vous devriez peut-être les mettre sur liste blanche. Si vous ne souhaitez pas supprimer vos résultats de recherche pour les moteurs les plus performants, vous pouvez ajouter à la liste blanche leurs chaînes d'agent utilisateur, qui sont généralement bien publiées. Les robots moins éthiques tendent à forger des chaînes d'agent utilisateur de navigateurs Web populaires. Les premiers moteurs de recherche devraient générer plus de 95% de votre trafic.
L'identification des robots eux-mêmes devrait être assez simple, en utilisant les techniques suggérées par d'autres affiches.
la source
Une approche rapide à cela serait de mettre en place un piège booby / bot.
Créez une page qui, si elle est ouverte un certain nombre de fois ou même ouverte, collectera certaines informations comme l'adresse IP et ainsi de suite (vous pouvez également prendre en compte les irrégularités ou les modèles, mais cette page ne devrait pas du tout être ouverte).
Faites un lien vers cela dans votre page qui est caché avec l'affichage CSS: aucun; ou à gauche: -9999px; position: absolue; essayez de le placer dans des endroits qui sont moins susceptibles d'être ignorés, comme votre contenu et non dans votre pied de page, car les robots peuvent parfois choisir d'oublier certaines parties d'une page.
Dans votre fichier robots.txt, définissez tout un tas de règles d'interdiction sur les pages sur lesquelles vous ne voulez pas que des robots amis (LOL, comme ils ont des visages heureux!) Recueillent des informations et définissent cette page comme l'une d'entre elles.
Maintenant, si un bot amical passe, il doit ignorer cette page. D'accord, mais ce n'est toujours pas assez bon. Créez quelques pages supplémentaires ou réacheminez en quelque sorte une page pour accepter des noms différents. puis placez davantage de règles d'interdiction sur ces pages d'interruption dans votre fichier robots.txt à côté des pages que vous souhaitez ignorer.
Collectez l'IP de ces robots ou de toute personne qui entre dans ces pages, ne les interdisez pas mais créez une fonction pour afficher du texte nouillé dans votre contenu comme des nombres aléatoires, des avis de droit d'auteur, des chaînes de texte spécifiques, afficher des images effrayantes, essentiellement tout ce qui peut entraver votre bon contenu. Vous pouvez également définir des liens qui pointent vers une page qui prendra une éternité à charger, par exemple. en php, vous pouvez utiliser la fonction sleep (). Cela repoussera le robot s'il a une sorte de détection pour contourner les pages qui prennent trop de temps à charger car certains bots bien écrits sont configurés pour traiter X quantité de liens à la fois.
Si vous avez créé des chaînes / phrases de texte spécifiques, pourquoi ne pas aller dans votre moteur de recherche préféré et les rechercher, cela pourrait vous montrer où se trouve votre contenu.
Quoi qu'il en soit, si vous pensez de manière tactique et créative, cela pourrait être un bon point de départ. La meilleure chose à faire serait d'apprendre comment fonctionne un bot.
Je penserais également à brouiller certains ID ou à la façon dont les attributs de l'élément de page sont affichés:
qui change de forme à chaque fois, car certains robots peuvent être configurés pour rechercher des modèles spécifiques dans vos pages ou des éléments ciblés.
la source
Vous ne pouvez pas arrêter le grattage d'écran normal. Pour le meilleur ou pour le pire, c'est la nature du Web.
Vous pouvez le faire pour que personne ne puisse accéder à certaines choses (y compris les fichiers musicaux) à moins d'être connecté en tant qu'utilisateur enregistré. Ce n'est pas trop difficile à faire dans Apache . Je suppose que ce ne serait pas trop difficile à faire dans IIS également.
la source
Une façon serait de servir le contenu en tant qu'attributs XML, chaînes encodées URL, texte préformaté avec JSON encodé HTML ou URI de données, puis le transformer en HTML sur le client. Voici quelques sites qui le font:
Skechers : XML
Chrome Web Store : JSON
Bing News : URL de données
Protopage : chaînes codées URL
TiddlyWiki : Entités HTML + JSON préformaté
Amazon : Chargement paresseux
XMLCalabash : XML à espace de noms + Type MIME personnalisé + Extension de fichier personnalisé
Si vous affichez la source sur l'un des éléments ci-dessus, vous voyez que le grattage retournera simplement les métadonnées et la navigation.
la source
La plupart ont déjà été dit, mais avez-vous envisagé la protection CloudFlare? Je veux dire ceci:
D'autres entreprises le font probablement aussi, CloudFlare est la seule que je connaisse.
Je suis presque sûr que cela compliquerait leur travail. J'ai également une fois obtenu l'IP banni automatiquement pendant 4 mois lorsque j'ai essayé de supprimer les données d'un site protégé par CloudFlare en raison de la limite de taux (j'ai utilisé une boucle de demande AJAX simple).
la source
Je suis d'accord avec la plupart des articles ci-dessus, et j'aimerais ajouter que plus votre site est convivial pour les moteurs de recherche, plus il sera grattable. Vous pouvez essayer de faire quelques choses qui sont très là-bas qui rendent plus difficile pour les grattoirs, mais cela peut également affecter votre capacité de recherche ... Cela dépend de la façon dont vous souhaitez que votre site se classe sur les moteurs de recherche, bien sûr.
la source
Mettre votre contenu derrière un captcha signifierait que les robots auraient du mal à accéder à votre contenu. Cependant, les humains seraient incommodés, ce qui pourrait ne pas être souhaitable.
la source
Si vous voulez voir un bon exemple, consultez http://www.bkstr.com/ . Ils utilisent l'algorithme aj / s pour définir un cookie, puis rechargent la page afin qu'il puisse utiliser le cookie pour valider que la demande est exécutée dans un navigateur. Une application de bureau conçue pour gratter pourrait certainement y arriver, mais elle arrêterait la plupart des grattages de type cURL.
la source
Les grattoirs d'écran fonctionnent en traitant le HTML. Et s'ils sont déterminés à obtenir vos données, vous ne pouvez pas faire grand-chose techniquement, car le globe oculaire humain traite quoi que ce soit. Légalement, il a déjà été signalé que vous pourriez avoir un certain recours et ce serait ma recommandation.
Cependant, vous pouvez masquer la partie critique de vos données en utilisant une logique de présentation non HTML
Gardez à l'esprit que cela affecterait probablement votre classement de recherche.
la source
Générez le HTML, CSS et JavaScript. Il est plus facile d'écrire des générateurs que des analyseurs, vous pouvez donc générer chaque page servie différemment. Vous ne pouvez alors plus utiliser de cache ni de contenu statique.
la source