Comment empêcher le raclage du site? [fermé]

301

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?

pixel
la source
9
Avez-vous envisagé d'essayer de détecter leur grattoir via IP ou similaire (vérifiez vos journaux) et de simuler entièrement vos données pour celles-ci? De cette façon, oui, ils "gratteraient" votre site, mais leurs "données" seraient inutiles.
Lasse V. Karlsen
30
Des lolcats à l'envers et du texte inversé / brouillé?
Wayne Werner
2
question similaire stackoverflow.com/questions/2705394/…
user279521
2
@JonasCz c'était une blague ironique. Ce qui est triste, c'est qu'une proposition similaire figure dans votre réponse, bien qu'elle soit critiquée.
Tomáš Zato - Reinstate Monica

Réponses:

325

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:

  • 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.

  • Si vous avez besoin de créer un compte et de vous connecter, vous pouvez suivre avec précision les actions des utilisateurs et des scraper. De cette façon, vous pouvez facilement détecter quand un compte spécifique est utilisé pour le scraping et l'interdire. Des choses comme la limitation du taux ou la détection d'abus (comme un grand nombre de recherches en peu de temps) deviennent plus faciles, car vous pouvez identifier des grattoirs spécifiques au lieu de simplement des adresses IP.

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:

  • Désolé, quelque chose s'est mal passé. Vous pouvez contacter le support via [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:

  • De toute façon, le bot / script ne veut pas / n'a pas besoin de l'ensemble de données complet.
  • Vos articles sont diffusés à partir d'une URL qui ressemble à quelque chose example.com/article.php?articleId=12345. Cela (et des choses similaires) qui permettra aux grattoirs de simplement parcourir tous les articleIds et de demander tous les articles de cette façon.
  • Il existe d'autres façons de retrouver éventuellement tous les articles, par exemple en écrivant un script pour suivre les liens dans les articles qui mènent à d'autres articles.
  • La recherche de quelque chose comme "et" ou "le" peut révéler presque tout, donc c'est quelque chose dont il faut être conscient. (Vous pouvez éviter cela en ne renvoyant que les 10 ou 20 premiers résultats).
  • Vous avez besoin de moteurs de recherche pour trouver votre contenu.

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 divavec un identifiant de article-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 la article-contentdiv 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-contentressemble à quelque chose div.a4c36dda13eaf0et 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 utilisera div.[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 divdans un divqui vient après h1est 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 de divs ou spans 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:

<div class="search-result">
  <h3 class="search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"search-result-link" href="/stories/story-link">Read more</a>
</div>
(And so on, lots more identically structured divs with search results)

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:

<div class="the-real-search-result">
  <h3 class="the-real-search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="the-real-search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"the-real-search-result-link" href="/stories/story-link">Read more</a>
</div>

<div class="search-result" style="display:none">
  <h3 class="search-result-title">Visit Example.com now, for all the latest Stack Overflow related news !</h3>
  <p class="search-result-excerpt">Example.com is so awesome, visit now !</p>
  <a class"search-result-link" href="http://example.com/">Visit Now !</a>
</div>
(More real search results follow)

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:

<div class="search-result" style="display:none">
  <h3 class="search-result-title">This search result is here to prevent scraping</h3>
  <p class="search-result-excerpt">If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-)
  Note that clicking the link below will block access to this site for 24 hours.</p>
  <a class"search-result-link" href="/scrapertrap/scrapertrap.php">I'm a scraper !</a>
</div>
(The actual, real, search results follow.)

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.phpquelque 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 styleattribut 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:

  • "Mozilla" (Juste ça, rien d'autre. J'ai vu quelques questions sur le grattage ici, en utilisant ça. Un vrai navigateur ne l'utilisera jamais seulement)
  • "Java 1.7.43_u43" (Par défaut, HttpUrlConnection de Java utilise quelque chose comme ça.)
  • "BIZCO EasyScraping Studio 2.0"
  • "wget", "curl", "libcurl", .. (Wget et cURL sont parfois utilisés pour le grattage de base)

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:

JonasCz - Réintégrer Monica
la source
11
Cela m'a amené ici. Une réponse assez impressionnante. En outre, un historique de révision assez étonnant. Merci pour le post. Vous obtenez un vote positif. Non seulement à cause de la quantité d'efforts consentis, mais parce que cela m'est utile.
DaveTheMinion
1
Très bonne réponse! Voici quelques réflexions. 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.
Eric
5
@ JonH, s'ils sont intéressés, ils le liront. De plus, je l'ai divisé en paragraphes avec des titres et des sous-titres, afin que les gens puissent le scanner et lire les parties qu'ils souhaitent. En fait, il y a pas mal de réponses assez longues sur SO, et les gens les lisent.
JonasCz
2
@JoshCrozier - Je pense simplement que des sites comme celui-ci ne jouent pas bien avec autant d'informations. Je ne dis pas que les informations sont mauvaises.
JonH
2
PS Mon empreinte stéganographique de l'idée de contenu pourrait éventuellement être utilisée par un tribunal. Imaginez le choc lorsque vous prouvez que le détenteur de vos données vous les a obtenues, grâce aux caractéristiques uniques directement dans les données ...
ErikE
241

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:

  1. Mettre en place une page, /jail.html.
  2. Interdisez l'accès à la page robots.txt(afin que les araignées respectueuses ne visitent jamais).
  3. Placez un lien sur l'une de vos pages, en le masquant avec CSS ( display: none).
  4. Enregistrez les adresses IP des visiteurs /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.htmlun 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.

Daniel Trebbien
la source
48
J'ai déjà vu cette technique appelée "pot de miel". C'est une technique également utilisée dans le filtrage du spam, où vous mettez une adresse e-mail sur une page, mais la cachez ou précisez qu'il n'est pas pour les gens d'envoyer du courrier légitime à. Collectez ensuite l'adresse IP de tout serveur de messagerie qui livre le courrier à cette adresse.
thomasrutter
12
Cela suppose qu'il s'agit de liens d'exploration. La plupart des grattoirs essaieront de se soumettre à une forme quelconque et de gratter les données retournées.
Byron Whitlock
9
J'ai vu des pots de miel basés sur Perl pour les e-mails qui ont des liens vers d'autres "pages" qui sont générées par le script Perl. Les robots légitimes qui lisent robots.txt ne le regardent pas et il est caché aux utilisateurs via CSS, mais les grattoirs (ou les récupérateurs d'e-mails) se retrouvent rapidement pris dans un arbre de pages à profondeur infinie, toutes contenant de mauvaises données. Mettez un lien vers le script au début de chacune de vos pages.
Stephen P
18
Une autre chose géniale à jeter pour les pots de miel est le teergrubing (ou tarpitting). C'est une vieille technique que j'aime - lorsque vous identifiez un méchant, vous amenez son processus de spam / scraping à une analyse en gardant délibérément ses connexions ouvertes aussi longtemps que possible physiquement sans les expirer. Bien sûr, cela peut les alerter que vous êtes également sur eux, mais bon sang c'est amusant. en.wikipedia.org/wiki/Teergrubing
womp
11
Le seul problème avec cette approche est que je place [img] yoursite / jail.html [/ img] sur un forum populaire. Vous recevrez des tonnes d'IP connectées à votre système et il sera difficile de filtrer laquelle est la mauvaise. Si vous voulez empêcher ce genre de chose, vous devez ajouter un jeton associé à IP dans l'URL. Quelque chose comme jail.php? T = hoeyvm et dans la base de données vous avez une association de hoeyvm et de l'IP qui a demandé la page.
HoLyVieR
48

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.

Unicron
la source
9
ne fonctionne que dans les pays dotés de cadres juridiques solides.
TomL
3
Les avocats prospèrent dans les conflits - et en profitent. Rarement, voire jamais, un avocat vous conseillera de ne pas aller en justice. Quiconque l'a dit que gagner et perdre n'a rien à voir avec de beaux concepts de «justice», mais avec les arguments, les humeurs et les préjugés de la journée. N'oubliez pas qu'en cas de problème, vous pourriez être tenu responsable non seulement des frais de votre avocat, mais aussi des autres parties, et si elles décident de poursuivre en justice - eh bien. Vous pourriez facilement perdre votre maison et tout autre bien dans votre vie. Pas un pari que je suggérerais. Je vous recommande d'éviter les tribunaux à tout prix.
Frankie
3
Je suis d'accord avec @TomL. S'ils sont en Occident, c'est quelque peu plausible. Mais s'ils sont en Inde / Chine / Russie / Ukraine / peu importe - alors, sérieusement, un minimum ou aucune chance. Je peux dire au sujet des tribunaux russes: ils ne prendront même pas la peine de traiter vos demandes.
Highstaker
35

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.

ryeguy
la source
14
Créer un système qui limite le nombre de pages qu'une IP peut voir par minute est un bon hack, car les grattoirs d'écran déchireront le site beaucoup plus rapidement que toute personne normale.
TravisO
D'accord. Les IP coûtent de l'argent et sont limitées par la plupart des sociétés d'hébergement.
Tal Weiss
re: "Des choses comme changer l'ID ou les noms de classe des éléments de page à chaque chargement, etc." Ce n'est pas si mal si vous créez un nom de classe via PHP, puis utilisez simplement <div class = "<? Php echo $ myPHPGeneratedClassName;?>"> Vous pouvez même utiliser des chaînes aléatoires pour le rendre complètement unique. Tout ce qui les empêche de trouver des modèles rend beaucoup plus difficile l'analyse du DOM.
niggles le
Il n'est pas difficile de trouver une adresse IP. Il y a plein de proxys, d'ordinateurs amis, d'ordinateurs de travail, d'ordinateurs scolaires, d'ordinateurs de bibliothèque ...
Incognito
@ user257493: C'est vrai, mais nous parlons ici de quelqu'un qui gratte des données. Les chances sont qu'ils ne vont pas aller à ce beaucoup d' efforts juste pour les données récolte. Et si c'est le cas, vous finirez par épuiser leur offre d'adresses IP.
ryeguy
31

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. ;)

Williham Totland
la source
3
Cela semble très raisonnable. Le grattage d'écran est sacrément difficile à empêcher, et si vous fournissez une API, vous pouvez lui imposer des restrictions, ajouter des notifications ("Contenu de ----.com") et contrôler essentiellement les données qui sont fournies.
alecwh
6
@alecwh: et facturez l'accès!
André Caron
3
Je vous ai attribué la prime, en partie parce que le Web serait tellement mieux si chaque site Web faisait cela. Espérons que cela devienne plus courant.
JonasCz
1
Dès que vous leur faites vous inscrire au service, ils reviendront sur le site normal
mplungjan
Je suis une de ces personnes de l'autre côté de cette conversation. Je construis des modèles pour les spectacles de Broadway et je dois gratter toutes mes données plutôt que d'y accéder proprement.
Yaakov Bressler
22

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.

Lézard
la source
12

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.

Arshdeep
la source
+1 Utiliser iplists.com est une excellente idée
Daniel Trebbien
10

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:

  • si quelqu'un vraiment veut vos données
  • vous ne pouvez pas (techniquement) masquer efficacement vos données
  • si les données doivent être accessibles au public à vos "utilisateurs réguliers"

Essayer d'utiliser certaines barrières techniques ne vaut pas la peine, car:

  • à vos utilisateurs réguliers en aggravant leur expérience utilisateur
  • aux bots réguliers et bienvenus (moteurs de recherche)
  • etc...

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 souhaitez présenter les informations à vos utilisateurs réguliers de manière cohérente
  • par exemple à nouveau - il suffit d'analyser à nouveau la structure de la page pour configurer le grattoir.
  • et cela peut être fait automatiquement en analysant du "contenu déjà connu"
    • une fois que quelqu'un sait déjà (par raclage antérieur), par exemple:
    • ce qui contient les informations sur "phil collins"
    • assez afficher la page "phil collins" et (automatiquement) analyser comment la page est structurée "aujourd'hui" :)

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:

  • déballer et comprendre le JS et créer un grattoir qui suit la logique Javascript (à la dure)
  • ou (de préférence en utilisant par moi-même) - en utilisant simplement Mozilla avec Mozrepl pour gratter. Par exemple, le véritable grattage se fait dans un navigateur compatible Javascript complet, qui est programmé pour cliquer sur les bons éléments et simplement saisir les réponses "décodées" directement à partir de la fenêtre du navigateur.

Un tel grattage est lent (le grattage se fait comme dans un navigateur classique), mais il est

  • très facile à installer et à utiliser
  • et il est presque impossible de le contrer :)
  • et la "lenteur" est de toute façon nécessaire pour contrer le "blocage rapide des mêmes requêtes basées sur IP"

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,

  • rendre vos données facilement accessibles - par certaines API
    • cela permet un accès facile aux données
    • par exemple, déchargez votre serveur du grattage - bon pour vous
  • configurer les bons droits d'utilisation (par exemple, par exemple, doit citer la source)
  • rappelez-vous, de nombreuses données ne sont pas protégées par le droit d'auteur - et difficiles à protéger
  • ajouter de fausses données (comme vous l'avez déjà fait) et utiliser des outils juridiques
    • comme d'autres l'ont déjà dit, envoyez une "lettre de cesser et de s'abstenir"
    • d'autres actions en justice (poursuivre et similaires) sont probablement trop coûteuses et difficiles à gagner (en particulier contre des sites non américains)

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é ...

jm666
la source
@Parapluie Vous devriez vraiment lire le contenu gratuit et / ou le modèle Open source - les dates, son histoire, ses objectifs et son éthique. Et surtout à propos des données ouvertes - pour lesquelles j'ai créé la plupart de mes grattoirs ...
jm666
Je comprends le concept, bien que je vous remercie pour vos recommandations érudites. Nous aurions peut-être eu une conversation intéressante à ce sujet; mais il semble que mon commentaire d'origine ait été supprimé par un tiers. Et donc, sommes-nous vraiment libres après tout?
Parapluie
8

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.

dengeltrees
la source
1
Même si vous ne pouvez pas être en droit d'auteur des informations, vous pouvez certainement mettre une clause contre le grattage dans les conditions d'utilisation. Ensuite, envoyez une lettre de cesser et de s'abstenir pour violation des conditions d'utilisation.
André Caron
1
La liberté d'expression et les données ouvertes sont en effet l'esprit d'Internet!
Ciara
Oui, la liberté d'expression et tout ça. Mais, les grattoirs pourraient bien gaspiller une quantité importante du budget ou de la bande passante du PO, ainsi que copier des données non soumises à copyright.
jpaugh
8

Choses qui pourraient fonctionner contre les grattoirs débutants:

  • Blocage IP
  • utiliser beaucoup d'ajax
  • vérifier l'en-tête de la demande du référent
  • nécessite une connexion

Choses qui aideront en général:

  • changez votre mise en page chaque semaine
  • robots.txt

Choses qui vous aideront mais qui feront que vos utilisateurs vous détesteront:

  • captcha
pguardiario
la source
8

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.

hoju
la source
8

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.

STW
la source
4
Le blocage IP ralentira un grattoir, mais cela représente également beaucoup de travail pour votre serveur. Disons que je vous gratte avec 1000 proxys, j'ai toujours les données que je veux et maintenant votre pare-feu est un gâchis.
pguardiario
1
Lorsque vous faites cela, ils iront horizontalement sur vous. 100000 adresses aujourd'hui ne leur coûtent rien, mais ralentissent votre site si vous essayez de les interdire toutes - et elles feront pivoter les adresses IP pour ne pas les visiter plus d'une ou deux fois
mplungjan
6

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.

Wayne Werner
la source
6

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:

  • Affichez le texte dans une image. C'est assez fiable, et c'est moins pénible pour l'utilisateur qu'un CAPTCHA, mais cela signifie qu'ils ne pourront pas couper et coller et qu'il ne s'agrandira pas joliment ou ne sera pas accessible.
  • Utilisez un CAPTCHA et exigez qu'il soit complété avant de retourner la page. C'est une méthode fiable, mais aussi la plus grosse douleur à imposer à un utilisateur.
  • Obliger l'utilisateur à ouvrir un compte avant de consulter les pages et confirmer son adresse e-mail. Ce sera assez efficace, mais pas totalement - un grattoir d'écran peut créer un compte et peut intelligemment programmer leur script pour se connecter à leur place.
  • Si la chaîne d'agent utilisateur du client est vide, bloquez l'accès. Un script de site-scraping sera souvent programmé paresseusement et ne définira pas de chaîne d'agent utilisateur, contrairement à tous les navigateurs Web.
  • Vous pouvez configurer une liste noire de chaînes d'agent utilisateur de grattoir d'écran connues au fur et à mesure que vous les découvrez. Encore une fois, cela n'aidera que les codes paresseux; un programmeur qui sait ce qu'il fait peut définir une chaîne d'agent utilisateur pour usurper l'identité d'un navigateur Web.
  • Modifiez souvent le chemin de l'URL. Lorsque vous le modifiez, assurez-vous que l'ancien fonctionne, mais uniquement tant qu'un utilisateur est susceptible d'avoir son navigateur ouvert. Rendez difficile la prévision du nouveau chemin URL. Cela rendra la tâche difficile à saisir par les scripts si leur URL est codée en dur. Il serait préférable de le faire avec une sorte de script.

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.

thomasrutter
la source
6
  1. Non, il n'est pas possible d'arrêter (en aucune façon)
  2. Embrasse le. Pourquoi ne pas publier en RDFa et devenir un super moteur de recherche et encourager la réutilisation des données? Les gens vous remercieront et vous fourniront le crédit nécessaire (voir musicbrainz comme exemple).

Ce n'est pas la réponse que vous voulez probablement, mais pourquoi cacher ce que vous essayez de rendre public?

nathan
la source
5

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? ):

<?php
  function sanitize_output($buffer) {
    $search = array(
      '/\>[^\S ]+/s', // strip whitespaces after tags, except space
      '/[^\S ]+\</s', // strip whitespaces before tags, except space
      '/(\s)+/s'      // shorten multiple whitespace sequences
    );
    $replace = array('>', '<', '\\1');
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
  }
  ob_start("sanitize_output");
?>

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.

headers = {
  "Requested-URI": "/example",
  "Request-Method": "GET",
  "Remote-IP-Address": "656.787.909.121",
  "Remote-IP-Port": "69696",
  "Protocol-version": "HTTP/1.1",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
  "Accept-Encoding": "gzip,deflate",
  "Accept-Language": "en-FU,en;q=0.8",
  "Cache-Control": "max-age=0",
  "Connection": "keep-alive",
  "Dnt": "1",  
  "Host": "http://example.com",
  "Referer": "http://example.com",
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"
}
Communauté
la source
2

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.

Chris
la source
2

Une approche rapide à cela serait de mettre en place un piège booby / bot.

  1. 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).

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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:

<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle"> 

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.

<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass"> 

id="p-12802" > id="p-00392"
Steve Chan
la source
1
Vous ne voulez pas seulement les interdire, vous voulez complètement les baiser ... JE L'ADORE!
Zoidberg
L'interdiction furtive est exactement ce à quoi je pensais (aka shadowbanning, hell banning).
ErikE
1

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.

Dinah
la source
1

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

    <document 
     filename="" 
     height="" 
     width="" 
     title="SKECHERS" 
     linkType="" 
     linkUrl="" 
     imageMap="" 
     href=&quot;http://www.bobsfromskechers.com&quot; 
     alt=&quot;BOBS from Skechers&quot; 
     title=&quot;BOBS from Skechers&quot; 
    />
  • Chrome Web Store : JSON

    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>
  • Bing News : URL de données

    <script type="text/javascript">
      //<![CDATA[
      (function()
        {
        var x;x=_ge('emb7');
        if(x)
          {
          x.src='data:image/jpeg;base64,/*...*/';
          } 
        }() )
  • Protopage : chaînes codées URL

    unescape('Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily')
  • TiddlyWiki : Entités HTML + JSON préformaté

       <pre>
       {&quot;tiddlers&quot;: 
        {
        &quot;GettingStarted&quot;: 
          {
          &quot;title&quot;: &quot;GettingStarted&quot;,
          &quot;text&quot;: &quot;Welcome to TiddlyWiki,
          }
        }
       }
       </pre>
  • Amazon : Chargement paresseux

    amzn.copilot.jQuery=i;amzn.copilot.jQuery(document).ready(function(){d(b);f(c,function() {amzn.copilot.setup({serviceEndPoint:h.vipUrl,isContinuedSession:true})})})},f=function(i,h){var j=document.createElement("script");j.type="text/javascript";j.src=i;j.async=true;j.onload=h;a.appendChild(j)},d=function(h){var i=document.createElement("link");i.type="text/css";i.rel="stylesheet";i.href=h;a.appendChild(i)}})();
    amzn.copilot.checkCoPilotSession({jsUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-js/cs-copilot-customer-js-min-1875890922._V1_.js', cssUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-css/cs-copilot-customer-css-min-2367001420._V1_.css', vipUrl : 'https://copilot.amazon.com'
  • XMLCalabash : XML à espace de noms + Type MIME personnalisé + Extension de fichier personnalisé

       <p:declare-step type="pxp:zip">
            <p:input port="source" sequence="true" primary="true"/>
            <p:input port="manifest"/>
            <p:output port="result"/>
            <p:option name="href" required="true" cx:type="xsd:anyURI"/>
            <p:option name="compression-method" cx:type="stored|deflated"/>
            <p:option name="compression-level" cx:type="smallest|fastest|default|huffman|none"/>
            <p:option name="command" select="'update'" cx:type="update|freshen|create|delete"/>
       </p:declare-step>

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.

Paul Sweatte
la source
Donc ... cette approche rend le grattage encore plus facile, car le contenu est maintenant dans un format uniforme. En fait, ce ne serait plus appelé raclage : cela s'appelle l' analyse , et c'est vraiment très facile à faire par programme.
jpaugh
1

La plupart ont déjà été dit, mais avez-vous envisagé la protection CloudFlare? Je veux dire ceci:

description de l'image

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).

Tomáš Zato - Réintégrer Monica
la source
1

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.

sjobe
la source
0

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.

SorcyCat
la source
0

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.

blacktie24
la source
0

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

  • Générez un fichier Flash pour chaque artiste / album, etc.
  • Générez une image pour chaque contenu d'artiste. Peut-être qu'une simple image pour le nom de l'artiste, etc. suffirait. Pour ce faire, rendez le texte sur un fichier JPEG / PNG sur le serveur et créez un lien vers cette image.

Gardez à l'esprit que cela affecterait probablement votre classement de recherche.

James Westgate
la source
0

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.

Stephan Eggermont
la source