Anonim

Je gère un site Web pour un client où ils affichent une vaste base de données d'informations qu'ils ont rassemblées avec précision et au fil des ans. Ils trouvent leurs données sur le Web à différents endroits. Il est fort probable que cela soit dû au fait qu’un grattoir parcourait leur site page par page et extrayait les informations dont ils avaient besoin dans une base de données qui leur était propre. Et au cas où vous vous le demanderiez, ils savent que ce sont leurs données, car une seule donnée est plantée dans chaque catégorie sur leur site.

J'ai fait beaucoup de recherches à ce sujet ces derniers jours et je peux vous dire qu'il n'y a pas de solution miracle parfaite. Cependant, j'ai trouvé plusieurs choses à faire pour rendre cela plus difficile pour eux. C'est ce que j'ai implémenté pour le client.

Données paginées Ajaxified

Si vous avez beaucoup de données paginées et que vous paginez vos données en ajoutant simplement un numéro différent à la fin de votre URL, c'est-à-dire http://www.domain.com/category/programming/2 - Ensuite, vous créez le travail du robot beaucoup plus facile. Le premier problème est qu’il s’agit d’un motif facilement identifiable. Il est donc simple de décoller un grattoir sur ces pages. Deuxième problème, quelle que soit l'URL des pages suivantes de la catégorie, il y aurait probablement un lien précédent et un lien précédent.

En chargeant les données paginées via javascript sans recharger la page, cela complique considérablement le travail pour de nombreux scrapers. Ce n'est que récemment que Google a commencé à analyser javascript sur la page. Il y a peu d'inconvénient à recharger les données de cette manière. Vous fournissez quelques pages de moins à Google pour indexer, mais, techniquement, les données paginées doivent toutes pointer vers la page de catégorie racine via la canonisation de toute façon. Ajaxifiez vos pages paginées de données.

Aléatoire la sortie du modèle

Les grattoirs seront souvent légèrement personnalisés pour vos données. Ils verrouillent un certain identifiant div ou classe pour le titre, la troisième cellule de chaque ligne pour votre description, etc. Il existe un modèle facilement identifiable pour la plupart des grattoirs, avec lequel la plupart des données provenant de la même table, est affiché par le même modèle. Aléatoire vos identifiants div et noms de classe, insérez des colonnes de tableau vides au hasard avec une largeur de 0. Affichez vos données dans un tableau sur une page, dans des divs stylés et une combinaison sur un autre modèle. En présentant vos données de manière prévisible, elles peuvent être effacées de manière prévisible et précise.

Pot de miel

C'est assez soigné dans sa simplicité. J'ai rencontré cette méthode sur plusieurs pages sur la prévention de la suppression de sites.

  • Créez un nouveau fichier sur votre serveur appelé gotcha.html.
  • Dans votre fichier robots.txt, ajoutez les éléments suivants:
    Agent utilisateur: *
    Interdit: /gotcha.html

    Cela indique à tous les robots et araignées qui indexent votre site de ne pas indexer le fichier gotcha.html. Tout robot d'exploration de site Web respectera les souhaits de votre fichier robots.txt et n'accédera pas à ce fichier. c'est-à-dire Google et Bing. Vous voudrez peut-être mettre en œuvre cette étape et attendre 24 heures avant de passer à l'étape suivante. Cela garantira qu'un robot d'exploration ne soit pas accidentellement bloqué par vous, car il était déjà en cours d'analyse lorsque vous avez mis à jour votre fichier robots.txt.
  • Placez un lien vers gotcha.html quelque part sur votre site Web. Peu importe où. Je recommanderais dans le pied de page, cependant, assurez-vous que ce lien n'est pas visible, en CSS, affichez: aucun;
  • Maintenant, enregistrez l'adresse IP / informations générales de l'auteur qui a visité cette page et bloquez-les. Vous pouvez également créer un script pour leur fournir des données incorrectes et erronées. Ou peut-être un gentil message personnel de vous à eux.

Les internautes habituels ne pourront pas voir le lien, il ne sera donc pas cliqué accidentellement. Des robots d'exploration réputés (Google par exemple) respecteront les souhaits de votre fichier robots.txt et ne visiteront pas le fichier. Donc, les seuls ordinateurs qui devraient trébucher sur cette page sont ceux qui ont des intentions malveillantes, ou quelqu'un qui regarde votre code source et clique au hasard (et bien si cela se produit).

Cela peut ne pas toujours fonctionner pour plusieurs raisons. Premièrement, de nombreux scrapers ne fonctionnent pas comme des robots Web normaux et ne découvrent pas simplement les données en suivant chaque lien de chaque page de votre site. Les grattoirs sont souvent conçus pour se fixer sur certaines pages et ne suivent que certaines structures. Par exemple, un scraper peut être démarré sur une page de catégorie, puis se contenter de visiter des URL contenant le mot / les données dans le slug. Deuxièmement, si une personne utilise son racleur sur le même réseau que les autres et qu’une adresse IP partagée est utilisée, vous devrez interdire tout le réseau. Il faudrait en effet un site Web très populaire pour que cela pose un problème.

Ecrire des données à des images à la volée

Trouvez un champ de données plus petit, pas nécessairement de longues chaînes de texte, car cela peut rendre le style de la page un peu plus difficile. Exporter ces données dans une image, je suis convaincu que dans presque tous les langages de programmation, il existe des méthodes pour écrire du texte dans une image de manière dynamique (en php, imagettftext). Ceci est probablement plus efficace avec les valeurs numériques car les nombres fournissent un avantage beaucoup plus insignifiant sur le référencement.

Alternative

Ce n'était pas une option pour ce projet. Exiger une connexion après un certain nombre de pages vues ou afficher un nombre limité de données sans être connecté. En d'autres termes, si vous avez 10 colonnes, n'en affichez que 5 pour les utilisateurs non connectés.

Ne fais pas cette erreur

Ne cherchez pas une solution basée sur l'utilisateur-agent du bot. Cette information peut facilement être usurpée par un grattoir qui sait ce qu’il fait. Le bot Google, par exemple, peut être facilement imité. Vous ne voulez probablement pas interdire Google.

Prévenir le raclage du site