Mardi le 27 octobre 2009 à 22:56
Être notifié au passage du robot google sur son site
Le référencement est parmi les grands soucis qu’un webmaster ou blogueur peuvent avoir, A chaque fois qu’on rajoute du contenu, la question qui se pose est : Quand est ce que le robot de Google passera pour l’indexer ? Aujourd’hui j’ai eu l’idée de partager une petite astuce pour être alerté au passage de Google sur votre site!
En fait pour indexer un site, google possède plusieurs robots (spider/crawler), ce sont des programmes qui tournent en boucle en parcourant le web et enregistrent tous les contenus qu’ils trouvent sur leurs chemin! Il en existe plusieurs :
- GoogleBot : c’est le robot qui indexe les pages de contenu
- Googlebot-Image: celui qui indexe les images (images.google.com)
- AdsBot-Google: le robot de Google Adsense
- Mediapartners-Google: sert à indexer les sites et à proposer la publicité en conséquence dans le cadre d’une partenaria (exemple lycos)
- …
Il est possible de détecter le passage de l’un de ces robots sur son site, l’idée est de faire un test sur la variable global $_SERVER['UserAgent'], qui contient le nom du navigateur qui a effectué la requête HTTP!
Voici un bout de code pour envoyer un mail à chaque passage de GoogleBot sur votre site :
if(!empty($_SERVER['HTTP_USER_AGENT'])
{
if(strpos($_SERVER['HTTP_USER_AGENT'], 'googlebot') !== false)
{
$webmastermail = 'webmaster@domain.ltd';
mail($webmastermail, 'Alerte Googlebot',"GoogleBot t'as rendu visite sur la page : " . $_SERVER['REQUEST_URI']);
}
}
Et voilà, grâce à ce bout de code vous serai notifiés à chaque passage du robot Google sur votre site!
Parcontre ce n’est pas génial coté securité! Dans une requêtte HTTP l’entête HTTP_USER_AGENT est modifiable, du coup un utilisateur malveillant peut flooder votre boite mails avec un grand nombre de requêtes ayant UserAgent: Googlebot! La solution est de faire un lookup sur l’adresse IP envoyant la requête et résoudre le nom de domaine avec la fonction gethostbyaddr, si le nom de la machine ne correspond pas à *.googlebot.com pas d’envoi d’email ;)
if(!empty($_SERVER['HTTP_USER_AGENT'])
{
if(strpos($_SERVER['HTTP_USER_AGENT'], 'googlebot') !== false)
{
if(preg_match('#.*?\.googlebot\.com$#',gethostbyaddr($_SERVER['REMOTE_ADDR'])))
{
$webmastermail = 'webmaster@domain.ltd';
mail($webmastermail, 'Alerte Googlebot',"GoogleBot t'as rendu visite sur la page : " . $_SERVER['REQUEST_URI']);
}
else
{
// on peux bannir l'adresse en la rajoutant au fichier .htaccess
/* if(is_writable('.htaccess'))
{
$h = fopen('.htaccess','a+');
fwrite($h,"\nDeny from: ".$_SERVER['REMOTE_ADDR']);
fclose($h);
}
*/
}
}
}
A savoir que bannir l’utilisateur si le hostname ne correspond pas n’est pas une très bonne idée vu que google peut changer de domaine (*.googlebot.com), par contre ça vous évitera de recevoir un joli paquet d’emails, j’ai commenté cette partie du code pour éviter de bannir google si jamais *.googlebot.com change ;)
J’espère que cet astuce vous sera utile!
Bonne nuit!
Tags :googlebot, notification passage google- Categorie: PHP
- (7) Commentaires













mezgani
octobre 27th, 2009 at 23 h 35 min
Pas mal l’astuce de black listing, mais je pense si l’intrus
est au courant de ce mécanisme il pourait forger des packets en spoofant la source afin de causer un deni de service.
Issam
octobre 27th, 2009 at 23 h 36 min
Merci pour le bout de code. Tu peux aussi facilement vérifier le passage du robot dans l’outil google webmaster !!
Zouhir Bahij
octobre 28th, 2009 at 0 h 20 min
Nice topic brother
fouad
octobre 30th, 2009 at 0 h 21 min
très intéressant, bonne continuation. merci
UpDeL
octobre 31st, 2009 at 3 h 41 min
Faudra un nouveau article pour ton nouveau PR3 :D, congratulation !
shugun
novembre 3rd, 2009 at 11 h 29 min
Sympa simo comme astuce, courage
Thierry
avril 4th, 2010 at 11 h 35 min
Excellente astuce que j’utilise pour envoyer sélectivement la balise d’identification aux « user-agents » concernés (google, yahoo…).
En effet, ces tags ne regardent personne et ça fait toujours une ou deux lignes en moins à envoyer;^_^)
Juste 2 améliorations possibles :
1) utiliser stripos à la place de strpos qui est « case-sensitive »
2) rechercher uniquement le mot-clef « google » (ou « yahoo » ou autre) dans la chaîne de l’agent-user pour intercepter toutes les évolutions possibles du bot avec 1 seul test (comme « Mediapartners-Google », par exemple, qui retournera FALSE avec un test sur « GoogleBot »)
Cordialement, Thierry