Google BotLe 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!

Partager cet article:
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Netvibes
  • viadeo FR
  • Digg
  • LinkedIn
  • Slashdot
  • Sphinn
  • Mixx
  • Blogplay
  • Identi.ca
  • Print
  • Ping.fm
  • email
  • Posterous
  • Reddit
  • Yahoo! Buzz
  • PDF
  • RSS
  • Diigo
  • Fark
  • Blogosphere News
  • blogtercimlap

  1. mezgani dit :

    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.

  2. Issam dit :

    Merci pour le bout de code. Tu peux aussi facilement vérifier le passage du robot dans l’outil google webmaster !!

  3. Zouhir Bahij dit :

    Nice topic brother

  4. fouad dit :

    très intéressant, bonne continuation. merci

  5. UpDeL dit :

    Faudra un nouveau article pour ton nouveau PR3 :D, congratulation !

  6. shugun dit :

    Sympa simo comme astuce, courage

  7. Thierry dit :

    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