PHP : comment détecter les robots (php crawler detect)
Il est souvent utile de faire des traitements particuliers pour les robots qui indexent votre site (et qui peuvent représenter 50% et plus de votre trafic).
En php il existe nativement browscap (cf sur google "php browscap" ) qui est tres efficace mais qui nécessite une mise à jour de sa base de signatures.
Plus simplement pour repérer 99% des visites de robots, on peut utiliser une petite expression régulière en php pour vérifier si la signature de votre visiteur contient les mots Bot (pour GoogleBot, MsnBot, Dotnetbot, TwicelerBot, Exabot, VoilaBot etc...) , Spider (pour Baidu Spider le géant chinois, Speedy Spider etc ...) et Yahoo (qui n'utilise pas le mot bot ou robot dans sa signature le cochon).
Voici donc les 2 lignes de PHP qui vont bien :
$crawler = 0;
if ( preg_match('/(bot|spider|yahoo)/i', $_SERVER[ "HTTP_USER_AGENT" ] )) $crawler = 1 ;
C'est tout ! , après ces 2 lignes vous pouvez à tout moment utiliser la variable $crawler pour faire des traitements particuliers pour les robots (pour forcer l'utilisation d'un cache sur un CMS , ou lui mettre une petite attente avec la fonction sleep histoire de le ralentir et éviter de pénaliser les vrais visiteurs , ou même pour lui cacher certaines parties du site ) :
// si c'est un crawler , je le ralenti d'1 sec
if ( $crawler ) sleep(1);
Et voici après quelques heures de traçage, les "crawlers" repérés sur mon site , à gauche le nombre de fois et à droite la signature reconnue comme un crawler avec ce test :
12066 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
1385 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
430 (compatible; DotBot/1.1; http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)
375 msnbot/2.0b (+http://search.msn.com/msnbot.htm)
322 (Twiceler-0.9 http://www.cuil.com/twiceler/robot.html)
238 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733) OrangeBot-Mobile 2008.0 (mobilesearch.support@orange-ftgroup.com)
122 ShopWiki/1.0 ( +http://www.shopwiki.com/wiki/Help:Bot)
102 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (support.voilabot@orange-ftgroup.com)
42 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)
36 TurnitinBot/2.1 (http://www.turnitin.com/robot/crawlerinfo.html)
18 (compatible; spbot/2.0.2; +http://www.seoprofiler.com/bot/ )
6 (compatible; bnf.fr_bot; +http://www.bnf.fr/fr/outils/a.dl_web_capture_robot.html)
4 msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)
2 T-Mobile Dash Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 320x240;) MSNBOT-MOBILE/1.1 (+http://search.msn.com/msnbot.htm)
2 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:Spinn3r (Spinn3r 3.1); http://spinn3r.com/robot) Gecko/20021130
2 (compatible; MJ12bot/v1.3.2; http://www.majestic12.co.uk/bot.php?+)
2 Googlebot-Image/1.0
2 Gigabot/3.0 (http://www.gigablast.com/spider.html)
1 msnbot/1.1 (+http://search.msn.com/msnbot.htm)
1 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
1 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)
18 853 clics - Créé le 28/04/2010 par Tito - Modifié le 28/03/2013