Comment détecter et empêcher les Crawlers de visiter votre site.

Référencement web

Comment détecter et empêcher les Crawlers de visiter votre site.

L'internet étant un secteur de plus en plus compétitif, de faux utilisateurs se sont invités, les « crawlers ». Comme dans beaucoup de domaines, il y a les bons et les mauvais intentionnés. Certain vont parcourir votre site dans le but de récupérer votre contenu, d'autre vont rechercher des adresses e-mail pour envoyer des spams ou même parcourir vos formulaires pour y publier du faut contenu ou le flooder. Pourtant, les robots sont indispensables au bon développement du web.
En effet, les moteurs de recherches ne pourraient pas exister s'ils ne disposaient pas de robots permettant d'indexer le web. Vous l'avez compris, le but est donc de ne bloquer seulement les mauvais robots. Mauvaise nouvelle, il n'y a pas de solution magique pour bloquer les robots, tout ce qui peut être fait par un humain peut être fait par un robot. Les quelques solutions citées ci-dessous ont pour but de rendre le travail des hackers le plus compliqué possible.

Session par ID

Si un utilisateur utilise un grand nombre de sessions toutes les minutes, il peut s'agir d'un crawler qui ne sait pas gérer les cookies. Imaginer qu'une cinquantaine d'utilisateurs utilisent la même connexion pour aller sur votre site, il s'agit d'un comportement anormal. Il est donc conseillé de bloquer ces utilisateurs ou de les obliger à rentrer un captcha pour continuer leur navigation. Bien sûr, le cURL et les différents systèmes d'automatisation (tel que PhantomJS et Selenium) gèrent parfaitement les cookies.
Mais, si on couple ce paramètre avec un compteur de visite par sessions (expliquée après), cette technique peut être efficace. Voici un exemple d’algorithme de base qui pourrait être mis en place et complété :
  1. Rajoutez deux tables à votre base de donnée, l’une pour sauvegarder les IP bannies et l’autre pour stocker les toutes les IP et les sessions.
  2. Pour commencer, supprimez les lignes de ces deux tables qui ont été ajoutées il y a trop longtemps. Il est inutile de garder un historique des connexions datant de plus de deux mois, du moins en ce qui concerne la deuxième table.
  3. Vérifiez que votre utilisateur n’a pas une IP bannie, dans lequel cas vous êtes libre de trouver la manière la plus élégante possible pour le bannir de votre site.
  4. Si c’est un utilisateur non bannie, comptez le nombre de sessions utilisées pour cette IP.
  5. Si elle dépasse le nombre de sessions que vous autorisez, placez cette IP dans la tables des méchants crawlers.

Compteur de visites

Avez-vous déjà vu un utilisateur capable de visiter 60 pages à en 30 secondes ? C’est tout simplement cette idée qui va être développée dans ce paragraphe. Il est possible qu’un robot utilise le même cookie pour crawler tous votre site, dans ce cas, vous serez capable de le bloquer. Voici un exemple :
  1. Créez un tableau contenant le temps des visites dans la session de l’utilisateur.
  2. Supprimez les visites âgées de X secondes.
  3. Ajoutez une nouvelle ligne dans le tableau pour chaque page visitée
  4. Un utilisateur ayant trop de lignes inscrites dans ce tableau signifie qu’il visite trop rapidement vos pages, ce n’ai donc pas un humain, bannissez le !

Une image à télécharger

Le but principal d’un crawler est d’effectuer le plus opérations possibles en un temps réduit. Il va donc charger seulement les contenus utiles de votre site, dans la majorité des cas, votre logo n’en fait pas partie. Voilà un moyen astucieux de détecter un robot ! Pour détecter les images non téléchargées, il y a plusieurs solutions, en voici une :
  1. Utilisez une image présente sur l’ensemble de votre site. Celle-ci ne devra être légère parce qu’elle sera interdit de cache, il peut s’agir du logo du site par exemple. Le but est de remplacer cette image par un scripte php (ou autre). L’une des manière de le faire est d’utiliser mod_rewrite.
  2. Vous pourrez désormais effectuer des opérations dans votre scripte tous en affichant le logo avec des headers :

    //Interdire la mise en cache pour le logo
    header("Cache-Control: no-store, no-cache, must-revalidate");
    // Affichage du logo
    header("Content-type: image/jpg");
    readfile("logo.jpg");
    die();

  3. Fixez un seuil de nombre de visites pour lequel le logo n’a pas été téléchargé.
  4. Votre script doit stocker en session le nombre de fois que votre visiteur n’a pas chargé votre logo. Incrémentez cette variable à chaque nouvelles visites.
  5. Lorsque ce nombre passe au dessus de votre seuil, vous avez un robot en perspective !

Vérification de l’activation du javascript

En javascript, il est possible de gérer facilement des cookies. La technique est simple et ressemble sensiblement à la vérification du chargement des images.
  1. A chaque visites, créez un cookie en javascript avec un nom particulier.
  2. Pour chaque page visitées, vérifiez la présence de ce même cookie. S’il est absent, incrémentez une variable en session.
  3. Si cette variable dépasse un certain seuil, le javascript à probablement été désactivé. Il est donc possible qu’il s’agisse d’un robot.

Conclusion

Il existe une infinité de manière de vérifier si votre site est apprécié des robots, faites tout de même attention à ne pas prendre de mesures de sécurité drastique qui pourraient dégrader la qualité de navigation de certain utilisateurs. Pour finir, les techniques divulguées précédemment ne sont pas faites pour être utilisée séparément mais, bien pour être mise en place ensemble et de manière stratégique. Ainsi, il devient possible de faire corréler les données des différentes techniques pour déterminer s'il s'agit bien d'un robot et pas d'un utilisateur quelque peu spéciale. Nous verrons d’autres techniques dans une seconde partie qui traitera notamment le sujet de la détection de proxy.

louis

Passionné par l'écosystème start-ups et par le web est ses possibilités. Co-fondateur de Wall Street Web, J'ai un goût prononcé pour le web, les nouvelles technologies et l'entreprenariat.