Cloaker Google comme un(e) PRO
Sommaire
Savoir comment cloaker Google
Je ne vais pas vous apprendre ce qu’est le cloaking je vous est déjà créer un article pour découvrir le cloaking.
Dans cet article, je vais vous montrer comment cloaker les moteurs de recherche et principalement Google qui est le moteur le plus compliqué à cloaker. Si vous savez faire pour lui vous savez faire pour les autres 😉
Pour savoir cloacker il faut déjà comprendre le fonctionnement de la navigation ou du crawling qui se produit sur le web.
Lorsque vous visitez une page Web avec un navigateur, votre navigateur communique avec un serveur qui héberge la page Web.
Le navigateur indique par exemple au serveur que vous utilisez le navigateur chrome, que vous utilisez tel IP et que votre navigateur est en Français. Ainsi le serveur peut vous retourner une page bien formaté pour chrome, mais avant il peut aussi vérifier si votre IP est bannis ou pas de son système, et biensur vous retourner la version française de sa page Web.
Un navigateur sur mobile indiquera que vous utilisez un mobile, idem pour un pc qui indiquera que vous êtes sur PC.
Les informations qui transistent entre serveur et navigateur nous pouvons les intercepter très facilement de différentes manières…
ici je vous montre comment faire en PHP mais pas de panique pas besoin d’être devellopeur
il suffit de prendre le temps de comprendre avec les exemples données ici et pourquoi pas quelques recherches sur le Web pour compléter votre curiosité et aller toujours plus loin 😉
Les communications entre serveur et navigateur sont présentent dans des variables PHP
Pour identifier ces variables le point de départ c’est de lire la page « les variables de serveur et d’exécution » que vous pouvez retrouver ici : http://php.net/manual/fr/reserved.variables.server.php.
Je sais que vous pouvez paniquer à la simple vue de cette page 🙂
Mais rassurez vous je vous la donne à titre d’information uniquement car ici je vais tout vous expliquer et vous pouvez vous en passer pour cloaker 😉
Les variables à retenir pour cloaker
« IP », « Hote » et « User agent » sont des « variables » à connaitre et maitriser pour ne pas se faire détecter par google ou dénoncer par un concurrent.
- IP permet d’identifier un serveur/ordinateur/machine
- Hote indique le nom du serveur/fournisseur d’accès
- User Agent indique la version du navigateur/robot utilisé pour visiter un site
Par exemple : mettez le code suivant dans un fichier PHP, puis visitez le via un navigateur :
|
1 2 3 4 5 |
<?php echo $_SERVER['HTTP_USER_AGENT']; ?> |
Pour bien comprendre ce code PHP :
Ne touchez pas à la première ligne (<?php) ni la dernière (?>). Ce code indique simplement aux serveurs que ce script est en PHP
La deuxième ligne contient un « echo » c’est une fonction PHP qui indique au serveur d’afficher le contenu d’une variable à l’écran. Vous pouvez tester le fameux echo « Hello World! »; ou echo « User agent : « . $_SERVER[‘HTTP_USER_AGENT’];
Ce code source PHP aura pour effet de vous afficher l’User Agent de votre navigateur ou de celui qui visite la page.
Exemple pour mon cas avec Chrome : Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Exemple pour Google Bot : Mozilla/5.0 (compatible ; Googlebot/2.1 ; +http://www.google.com/bot.html)
A ce stade je peux que vous encourager à placer le script PHP sur un serveur et le visiter avec différents user agent pour réussir à les identifier. Par exemple visitez le en changeant de navigateur ou en comparant avec votre PC et votre smartphone/smartTV etc…Je pense que vous savez maintenant que le cloaking c’est « tracker les visiteurs » pour leur afficher « une version optimisé pour eux » et celà « au cas par cas » et que pour identifier les différents cas la variable « $_SERVER » et « ses options » vont bien nous aider.
L’User Agent permet d’identifier le navigateur de vos visiteurs. Mais les Robots de moteurs de recherche aussi utilisent des Users Agent donc si vous mettez ce script sur un site visité par les moteurs de recherche vous pouvez capturer leurs visites.
Il peut être intéréssant d’enregistrer et étudier ces données pour vos sites :
- L’heure de la visite
- L’user agent du robot
- L’url visité
Par exemple sur notre forum https://www.ghstools.fr/forum/
Nous enregistrons le passage des robots pour les afficher en bas de page ce qui nous permet de vérifier si nous sommes toujours crawler et par {qui|quoi}.

Savoir identifier les robots de Google
Si vous avez placez le script précédent sur une page indexé et crawlé régulièrement je pense que vous savez maintenant identifier Google 🙂
Sinon vous pouvez utiliser ce tableau fournis par Google : https://support.google.com/webmasters/answer/1061943?hl=fr
Google nous informe sur ces robots :
| Robot d’exploration | Jetons user-agent (utilisés dans le fichier robots.txt) | Chaîne complète du user-agent (conformément aux fichiers journaux du site Web) |
|---|---|---|
| APIs-Google |
|
APIs-Google (+https://developers.google.com/webmasters/APIs-Google.html) |
| AdSense |
|
Mediapartners-Google |
| AdsBot Web pour mobile Android
(Vérifie la qualité des annonces sur les pages Web Android) |
|
Mozilla/5.0 (Linux ; Android 5.0 ; SM-G920A) AppleWebKit (KHTML, par exemple Gecko) Chrome Mobile Safari (compatible ; AdsBot-Google-Mobile ; +http://www.google.com/mobile/adsbot.html) |
| AdsBot Web pour mobile
(Vérifie la qualité des annonces sur les pages Web pour iPhone) |
|
Mozilla/5.0 (iPhone ; CPU iPhone OS 9_1, par exemple Mac OS X) AppleWebKit/601.1.46 (KHTML, par exemple Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible ; AdsBot-Google-Mobile ; +http://www.google.com/mobile/adsbot.html) |
| AdsBot
(Vérifie la qualité des annonces sur les pages Web pour ordinateur) |
|
AdsBot-Google (+http://www.google.com/adsbot.html) |
| Googlebot Google Images |
|
Googlebot-Image/1.0 |
| Googlebot Google Actualités |
|
Googlebot-News |
| Googlebot Google Vidéos |
|
Googlebot-Video/1.0 |
| Googlebot
(Ordinateur) |
|
|
| Googlebot
(Smartphone) |
|
Mozilla/5.0 (Linux ; Android 6.0.1 ; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible ; Googlebot/2.1 ; +http://www.google.com/bot.html) |
| AdSense pour mobile |
|
(différents types d’appareils mobiles) (compatible ; Mediapartners-Google/2.1 ; +http://www.google.com/bot.html) |
| Applications mobiles Android
(Vérifie la qualité des annonces sur les pages d’applications Android. Respecte les règles des robots AdsBot-Google.) |
|
AdsBot-Google-Mobile-Apps |
On peut donc facilement identifier si l’user agent est celui de Google bot avec un simple code PHP puisque les users agent qui nous intéresse contiennent le terme « googlebot ».
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php //on capture l'user agent dans une variable $ua = $_SERVER['HTTP_USER_AGENT']; //si le terme "googlebot" match dans la variable ua c'est google bot if(preg_match('#googlebot#i',$ua)){ echo "C'est Google Bot"; } else { //sinon c'est autre chose que google bot echo "Ce n'est pas Google Bot c'est ".$ua; } ?> |
Sauf que c’est trop simple de changer son User agent et de le falsifier donc on ne peux pas se fier uniquement à ça.
N’importe qui peut utiliser l’user agent de google bot et se faire passer pour le robot de google lorsqu’il explore une page web.
C’est même Google lui même qui nous met en garde :
Ces valeurs peuvent faire l’objet de pratiques de spoofing. Pour vérifier que le visiteur est Googlebot, utilisez la résolution DNS inverse.
En effet avec un simple plugin Chrome gratuit comme « User-Agent Switcher for Chrome » vous pouvez en changer en un clique et même usurpé celui de Google.

Vous devez donc aussi récupérer l’ip du visiteur avec la variable « $_SERVER[‘REMOTE_ADDR’] ».
|
1 2 3 4 |
<?php $ip = $_SERVER['REMOTE_ADDR']; echo $ip; ?> |
Vous avez ainsi l’ip du visiteur mais Google nous dit de vérifier aussi le DNS donc nous utilisons la fonction « gethostbyaddr » de PHP qui permet de récupérer les DNS de n’importe quel IP.
Complétez maintenant votre script ainsi :
|
1 2 3 4 5 6 7 |
<?php $ip = $_SERVER['REMOTE_ADDR']; $dns = gethostbyaddr($ip); echo $dns; ?> |
Vous obtenez le Host de l’ip du visiteur. Si c’est un robot de Google, le host contiendra le domaine « googlebot.com » on peut donc très facilement vérifier si le visiteur est un visiteur normal, ou si c’est un robot de google ou si c’est un visiteur qui essaye de se faire passer pour Google.
Le script PHP pour cloacker Google :
Avec ce script fait de différentes conditions vous pouvez savoir si c’est Google qui vous visite et afficher du contenu différent pour chaque cas via la fonction PHP « include()« .
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<?php //on recupère l'User Agent et IP du visiteur avec les variables _SERVER de PHP $ua = $_SERVER['HTTP_USER_AGENT']; $ip = $_SERVER['REMOTE_ADDR']; //si l'User Agent est Googlebot if(preg_match('#googlebot#i',$ua)){ //on recupère le Host avec l'ip $dns = gethostbyaddr($ip); //si le Host contenient googlebot.com if (preg_match('#\.googlebot\.com$#i',$dns)) { //on recupère l'ip par le host $host = gethostbyname($dns); //on verifie que l'ip du host est indentique à l'ip du visiteur if ($host == $ip){ // si l'user agent correspond au bot de googlemobile if(preg_match('#AppleWebKit#i',$ua)) { //<meta name="robots" content="noarchive"> include ('version_cloaking_mobile.php'); // sinon c'est un autre bot de google } else { //<meta name="robots" content="noarchive"> include ('version_cloaking.php'); } } else { // Quelq'un essaye d'usurper Google pour visiter votre site header("HTTP/1.1 503 Service Unavailable"); header("Status: 503 Service Unavailable"); header("Retry-After: 3600"); include ('version_lead.php'); } //sinon le Host ne contient pas googlebot.com } else { // Quelq'un à usurpé l'user agent de Google header("HTTP/1.1 503 Service Unavailable"); header("Status: 503 Service Unavailable"); header("Retry-After: 3600"); include ('version_lead.php'); } } else { // Utilisateur autre que Googlebot header("HTTP/1.1 503 Service Unavailable"); header("Status: 503 Service Unavailable"); header("Retry-After: 3600"); include ('version_lead.php'); } ?> |
Cependant Google utilise la mise en cache de votre contenu et tout le monde peut voir que le cache de Google est différent de la page affiché et pourrais donc vous dénoncer. Heureusement on peut désactiver le cache en ajoutant une meta tag dans vos pages cloaké :
|
1 |
<meta name="robots" content="noarchive"> |
Et pour mettre une sécurité en plus dans votre script de cloaking pensez à toujours ajouter un faux header à vos pages faites pour les visiteurs car la fonction de PHP « gethostbyaddr() » peut parfois ne pas fonctionner et donc Google aurais accès à votre contenu non cloaké.
Exemple :
|
1 2 3 4 5 |
header("HTTP/1.1 503 Service Unavailable"); header("Status: 503 Service Unavailable"); header("Retry-After: 3600"); |
Avec ce header en 503 vous indiquez aux robots des moteurs que la page demandé est temporairement indisponible et qu’il ne faut donc pas la prendre en compte. Ni la supprimer de son index, mais la re-explorer plus tard. Ansi plus tard la fonction « gethostbyaddr() » refonctionnera.
L’include (‘version_cloaking.php’); vous permet ainsi d’afficher du contenu optimisé pour bien se positionner dans Google et l’include (‘version_lead.php’); vous permet d’afficher du contenu optimisé pour mieux vendre ou récolter des leads.