Le fichier robots.txt est destiné aux robots (crawlers) comme son nom l’indique. Censé bloquer l’indexation de certaines URL, son efficacité peut parfois laisser songeur…
Ils peuvent cepandant être lus par les humains. Il suffit de rajouter /robots.txt à la fin d’une nom de domaine. Et cela peut parfois donner des informations intéressantes aux indiscrets!
Répertoires privés publics
Si vous souhaitez par exemple bloquer l’indexation de votre répertoire /perso/ aux yeux de Google en ajout la ligne « Disallow: /perso/ » dans votre fichier robots.txt, une simple commande Google permettra de le trouver, pour ensuite aller fouiller dedans…Ex: http://www.google.fr/search?q=etquelquesparamètres
Si vous n’avez pas été plus prudent que ça et que vous n’avez pas bloqué l’affichage des contenus des dossiers dans les paramètres de votre serveur Web, n’importe quel internaute curieux pourra accéder aux fichiers « perso » que vous souhaitiez rendre invisibles (et oui, quand vous utilisez le FTP perso de Free, n’oublie pas que le contenu de vos dossiers est accessible via le protocole HTTP).
Humans.txt pour les humains
Les humains aussi ont droit à leur fichier: http://fr.wikipedia.org/wiki/Humans.txt, le blog d’Axenet par exemple: http://blog.axe-net.fr/humans.txt, ou encore celui de Google: http://www.google.fr/humans.txt.
Alors, pour ne pas donner trop d’informations aux inquisiteurs du dimanche, pourquoi ne pas faire du cloaking et afficher le contenu de ce fichier aux internautes qui tenteraient de connaître le contenu de votre fichier robotx.txt? Allez, je vous dois bien un petit bout de code pour votre .htaccess après cette longue introduction.
Règle pour masquer mon robots.txt aux humains
Comme nous avons vu que les robots ne parlaient aucune langue, nous allons renvoyer le contenu du fichier humans.txt à ceux qui ont un HTTP_ACCEPT_LANGUAGE et qui ne sont donc à priori pas des robots. Pour être vraiment certains de ne pas empêcher les robots d’accéder au fichier, j’ajoute aussi une condition qui vérifie le USER_AGENT :
RewriteBase / RewriteCond %{REQUEST_URI} ^/robots.txt$ RewriteCond %{HTTP:Accept-Language} !^$ RewriteCond %{HTTP_USER_AGENT} !(msnbot|slurp|googlebot) [NC] RewriteRule ^robots.txt$ /humans.txt [L]
Et voilà, vous ne verrez pas mon fichier robots.txt. Enfin avec quelques plugins {Chrome|Firefox}, on peut y arriver 😉
Les instructions du robot txt à la base c’etait pour que les robots s’y conforme, aujourd’hui ils le considèrent ‘j’ai l’impression, comme une suggestion.
Pareil pour le Htaccess…
Ma chère Simone tout se perd aujourd’hui, c’était mieux avant… 😉
Une astuce toute bête, mais il fallait y penser.
Je me demande quand même si nos chers amis les robots ne s’offusqueraient pas en constatant que le robots.txt est cloaké.
Astuce pas bête pour ceux qui ont des choses à cacher. Quoi que c’est pas sur un site web qu’il faut cacher des choses mais dans un coffre. C’est plus sur ^^
« Pour être vraiment certains de ne pas empêcher les robots d’accéder au fichier, j’ajoute aussi une condition qui vérifie le USER_AGENT ».
Et pourquoi ne pas se baser sur des éléments un peu moins fakables tels que l’IP et/ou le reverse dns ?
oui on pourrait blinder plus effectivement! Sans doute parce que j’avais la flemme ;p Bon, je remets un peu d’infos là-dessus pour ceux qui voudraient aller plus loin avec un vieil article de Paul http://www.seoblackout.com/2007/12/28/cloaking-sur-ip-comment-ca-marche/
Pour avoir analysé des années de logs serveur, les robots changent très régulièrement d’IP. Donc faire des conditions sur des range d’IP est théoriquement faisable mais en pratique impossible à gérer.
Pour les User-agent, il n’y a pas que Google, Bing et Yahoo! comme robots 🙂 C’est une condition à mon avis également impossible à gérer totalement.
Toujours bon de rappeler les fondamentaux 😉
Perso je ne met rien de gênant dans mes fichiers robots.txt, et je bloque tout par GWT ou meta noindex 😉
Bonjour Aymeric,
L’astuce est intéressante malgré que je ne pense pas en avoir l’utilité. Mais sait-on jamais, c’est toujours bien à savoir.
amicalement
Sympa l’astuce mais comme Julien, je me demande ce que va penser notre ami GG s’il s’amuse à crawler en singeant l’être humain …
Comme certains le disent, je ne tenterai pas cette technique de cloaking, c’est à mon sens un peu trop risqué.
Si on veut se faire un dossier en ligne, autant se créer un sous domaine.
Cette technique était surtout pour « le fun » (j’avais surtout envie de caser Matt cutts en Ascii Art) et alerter certaines personnes qui pensent être discrets en mettant des Disallow: /privatefolder/ sur des répertoires privés… Il y a bien mieux à faire 😉
T’avais surtout envie de lancer un troll ! Avoue !
Bien vu pour cette astuce + celle de Kevin. Honnêtement, je n’y avais jamais penser, parce qu’on peut passer par d’autres possibilités peut-être plus secure. Mais ça risque fort de me servir.
Salut !
C’est triste, mais c’est la première fois que j’entends parler de ce « Humans.txt » (mettez ça sur le compte que je suis novice ^^). Au passage, celui d’axet net est plutôt sympa :).
Quoi qu’il en soit, je vais sans plus attendre mettre en pratique ce système parce qu’actuellement, le mien est visible sur l’un de mes sites (honte à moi !!!!^^).
En autre possibilité : ne pas mettre nos dossiers et fichiers dans le robots.txt mais mettre directement la balise meta « robot » directement dans nos fichiers?
Sauf que tu ne peux pas implémenter la balise meta robots sur des fichiers, seulement sur des pages web. Pour les fichiers, tu peux en revanche utiliser l’en-tête HTTP X-Robots-Tag pour faire la même chose que la balise meta robots mais c’est déjà plus délicat à implémenter ! (cf. http://robots-txt.com/x-robots-tag/ )
Autant pour moi, je voulais parler de pages web… toutes mes excuses.
Comme Lionel, je ne pense en avoir besoin mais je trouve l’expérience intéressante.
En général on a pas grand chose à cacher, en tout cas pas dans les répertoires publics 🙂
Ton astuce est excellente, je mets cet article dans mes favoris 😉
J’avais déjà pensé à faire des recherches sur les robots.txt (peut être utile si on veut détecter des CMS en particulier, même s’il n’y a pas que ça), mais je n’étais pas allé plus loin.
Y a t-il un risque de blacklistage avec cette méthode ?
Avec le cloaking.. euh toujours un peu… 🙂 Mais sur un robots.txt qui est uniquement destiné aux robots, je ne vois pas le problème ^_^