Cloaking : Cette merveille du SEO

cloaking

On abandonne un instant l’ex slogan de Google “don’t be evil” et on plonge dans la technique du cloaking avec ce billet qui sera très simple. Evidemment je ne vous incite pas à faire ou à ne pas faire du cloaking, c’est juste un peu de culture qui pourrait servir.

Sachez aussi que ce post est vraiment réducteur parce que j’aborde une application très classique du cloaking où l’on montre un contenu à Googlebot et quelque chose d’autre à l’utilisateur humain, mais en réalité les possibilité offertes par cette technique white hat sont beaucoup plus larges.

Qu’est ce que le cloaking?

Le cloaking est une technique SEO white hat consistant à montrer un contenu différent selon des situations différentes. En SEO par exemple on peut vouloir montrer un contenu à l’utilisateur humain un autre chose à Googlebot le spider de Google.

Quelques avantages

L’avantage principal du cloaking est qu’il va détruire le mur qui peut exister entre le marketing et le SEO. En temps normal chacun doit faire des concessions pour léser au minimum les objectifs de l’autre, mais avec le cloaking plus besoin de faire de compromis, marketing is happy, SEO is happy. L’utilisateur reçoit une page parfaitement optimisée pour la conversion, Googlebot reçoit une page parfaitement optimisée pour le référencement.

Montrer un contenu différent à Google a beaucoup d’autres avantages encore. Imaginons que vous ayez détecté sur un site tiers une page tellement qualitative qu’elle attire les backlinks comme un aimant. On peut la dupliquer et entamer immédiatement une campagne de prospection pendant une semaine pour récupérer des liens. En toute logique Google ne doit pas savoir que l’on a copié comme des porcs et donc on lui montre autre chose. Là c’est très très borderline, c’est donc clairement pas à faire sur un site principal, mais sur des sites servant de réservoir à Pagerank ça peut être très sympa.

Pour éviter au maximum les emmerdes ont peut aussi décider de retirer le contenu dupliqué dans la semaine ou les dix jours suivants la campagne de prospection.

Encore un autre avantage, vous avez déjà entendu parler de « l’échange de lien one way » c’est un échange de lien où seul votre site profite de l’échange. L’inconvénient c’est que vous mettez une carotte à quelqu’un, or tout se paye un jour ou l’autre, mais pour la forme et la culture, je vous renvoie à Janvier 2009 et l’article de Mathieu sur les applications du cloaking.

Il y a encore d’autres formes de cloaking, j’ai un faible pour le cloaking sur referer parce que c’est énorme pour passer la modération sur les forums où n’importe quel site où l’on peut placer des liens. On pourra revenir là dessus, mais j’ai déjà donné un exemple avec le serial recruteur dans la série Netlinking Dirty Secrets.

Les risques du cloaking

Je ne vais pas tourner autour du pot, les conséquences peuvent être lourdes. Peu importe par quel biais, mais si Google s’en rend compte vous sortez purement et simplement de l’index. Dommage, mais il faut savoir qu’on pourrait parfaitement réserver cette technique pour les sites secondaires, et c’est aussi bien de rappeler qu’une pénalité manuelle est plus facile à gérer qu’une pénalité algorithmique. Bref c’est à vous de voir si vous voulez tenter le grand saut ou pas.

Le spam report votre principal ennemi

Le plus gros risque reste le spam report. Il est effectivement plus probable que ce soit un concurrent à découvrir le pot aux roses et à vous balancer que Google lui même. Autant dire que votre cloaking doit donc être le plus sécurisé possible, tout en sachant qu’une sécurisation à 100% à mon avis ça n’existe pas. Au minimum il faut s’assurer que n’importe quel pèlerin ne puisse pas découvrir votre cloaking en 2 minutes et pour ça il y a des précautions à prendre et des erreurs à éviter.

Cloaker dans les règles de l’art… ou enfin du mieux possible

Cloaking Google sur User Agent

Notre script de cloaking doit vérifier que l’utilisateur est Googlebot. On a différents moyens de le faire, controler le user agent est rapide mais ce n’est pas fiable. Par exemple Googlebot utilise toujours un User Agent qui l’identifie. Voici un exemple de UA utilisé par le crawler de Google : Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

On pourrait très bien cloaker en vérifiant uniquement le UA, le souci est que n’importe qui peut visiter votre site avec ce user agent et se faire ainsi passer par Googlebot. Vous connaissez la suite de l’histoire. Y a des cas bidons ou vous pouvez vous permettre une simple dérif de l’UA, mais voilà c’est encore plus dangereux car vous ne savez pas formellement si Googlebot est vraiment Googlebot.

Cloaking Google sur IP

On peut aussi cloaker sur les IP Googlebot, mais on a au moins deux problèmes :

  • Il faut connaître tous les range, il faut être au courant si Google ajoute de nouvelles IPs
  • Il existe d’autres services de Google qui utilisent parfois les mêmes IPs que Googlebot, dans certains cas le même User Agent.

Identifier Googlebot de manière plus fiable

Une fois n’est pas coutume, pourquoi ne pas faire confiance aux conseils de Google ? Lui même nous explique comment faire, n’est-ce pas la source la plus fiable ? https://support.google.com/webmasters/answer/80553?hl=en

Si cela vous semble complexe ne vous inquiettez pas, ce qui suit est très simple à comprendre en réalité. Google nous propose en première étape de faire un rDNS (reverse DNS). Cela consiste après avoir récupéré l’IP de l’utilisateur, à demander quel est le serveur de noms associé à cette IP.

En php, on récupère l’IP de l’utilisateur ainsi :

$ip = $_SERVER['REMOTE_ADDR'];

Ensuite nous avons une fonction toute faite pour récupérer le DNS auquel est associée à l’IP que l’on vient de récupérer : Ce reverse DNS est effectué avec la fonction gethostbyaddr()

$dns = gethostbyaddr($ip);

Une fois que l’on a récupéré le DNS on vérifie avec une expression régulière qu’il correspond bien à ceux de Googlebot. Les DNS de Googlebot ressemblent à ça : crawl-66-249-66-1.googlebot.com

Sauf erreur il n’y a que l’IP qui change et ils se terminent tous de la même manière.

Mais est ce qu’on doit s’arrêter là ? Non. Je n’ai aucune idée de comment ça marche mais certains arrivent à faker les DNS (DNS Spoofing). Aurélien Lavorel (agence LavoWeb, un spécialiste Magento) a essayé de m’expliquer le principe, j’ai fait semblant d’avoir capté, mais en réalité j’ai rien capté à comment fonctionne le spoofing de DNS. Aucune importance cela dit, voilà juste ce qu’il faut retenir.

Une IP est associée à un DNS et un DNS à une IP, du moins c’est le cas pour Googlebot. Nous avons déjà récupéré le DNS à partir de l’IP, mais on va devoir maintenant faire l’inverse, récupérer une IP à partir du DNS (forward DNS) avec la fonction gethostbyname(); Si tout est normal, l’IP que nous allons récupérer doit être exactement la même que celle que nous avions déjà récupéré au début. Si jamais l’IP est différente, c’est qu’il y a une merguez dans l’histoire.

Je récapitule les quelques lignes de code :

$ip = $_SERVER['REMOTE_ADDR'];
$dns = gethostbyaddr($ip);
$forward_ip = gethostbyname($dns);

Rappelez-vous qu’après ces trois lignes vous devez vérifier que les valeurs de $ip et $forward_ip sont les mêmes, si elles sont différentes, y a une couille.

if($ip == $forward_ip){

//tout va bien
}
else {

//Merguez party
}

Dans le script de coaking que je balance ici il y a des petites choses en plus. La vérification de Googlebot prend quand même du temps, pour éviter à l’utilisateur humain de se manger le script à chaque fois on peut par exemple vérifier en premier le User Agent. La très grande majorité des visiteurs normaux n’utilise pas l’UA de Googlebot ça sert à rien d’aller plus loin dans la vérification si dès le controle de l’UA on voit que c’est pas Googlebot. Attention ce ne veut pas dire qu’on cloake sur l’UA, c’est juste une vérif préalable pour gagner du temps.

Il y a aussi une verif de Googlebot mobile, c’est utile à savoir pour certaines problématiques.

Note importante : Je ne prétends pas que mon script est plus secure qu’un autre, je le balance comme ça mais je ne garantis rien. Mais c’est gratuit n’hésitez pas à vous faire plaisir.

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
if(preg_match('#googlebot#i',$ua)){

$dns = gethostbyaddr($ip);
if (preg_match('#\.googlebot\.com$#i',$dns)) {

$host = gethostbyname($dns);
if ($host == $ip){

// Ce qui suit permet de cibler googlebot version mobile si besoin
if(preg_match('#AppleWebKit#i',$ua)) {

include ('googlemobilebot.php');
exit;
}
else {

include ('googlebot.php');
return $user;
}
}
else {

// Quelqun essaye de vous mettre une merguez
include ('fakegooglebot.php');
exit;
}
}
else {

// Quelqun essaye de vous mettre une saucisse
include ('fakegooglebot.php');
exit;
}
}
else {
// Utilisateur autre que Googlebot
include ('unknownuser.php');
exit;
}
?>

Il y a d’autres choses à savoir sur le cloaking et si l’initiation concrète au cloaking de Kevin (512) va fêter son huitième anniversaire il y a des dangers dont il parle et que je n’ai pas abordé ici, je pense notamment à la version en cache… mais pas que.

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*