mddetectbots

Analyse du besoin

Lorsque l'on développe des sites Web, on y implante souvent des marqueurs de contenus afin de suivre, par exemple, l'audience de visites de ce dernier. Seulement, la suivi d'audience est nécessaire en production, alors qu'il ne l'est pas en développement, sous peine de fausser les statistiques. Même si certains outils d'analyse permettent d'ignorer le trafic depuis une source donnée (IP), il peut être plus prudent de s'en assurer par le non affichage du marquage. En plus de cela, je voulais m'assurer que le peu de visites qui s'effectuaient sur mon site et qui remontent dans mon outil d'analyse d'audience soient bien des visites d'internautes et pas de moteurs de recherche ou autre application utilisée. J'ai donc développé cette extension afin de me permettre de contextualiser l'affichage du marqueur de contenu en fonction du visiteur en cours (IP + signature du navigateur).

Alors que ce premier besoin était rempli, l'extension peut tout simplement servir à :

  • récupérer l'IP et la signature du navigateur dans un template d'email envoyé
  • exécuter du code en fonction de si le visiteur en cours est un "bot" ou non
  • etc

Configuration PHP requise

Cette extension ne requière aucune configuration PHP particulière.

Structure du développement

Cette extension contient :

  • des opérateurs de template : les opérateurs de template disponibles sont get_ip(), get_browser_name() et is_bot().
  • des settings :
    • bots.ini : liste des adresses IP des visiteurs devant être identifiés comme des "bots" (principalement des IP propres, identifiées clairement et en faible nombre)
    • botsipfromlogs.ini : liste des les adresses IP extraites depuis les logs apache et correspondant à des IP de robots de moteurs de recherche
    • detectbots.ini : configuration principale de l'extension.
    • site.ini : déclare l'extension comme détentrice d'opérateurs de template

Configurations possibles

La configuration se passe principalement dans le fichier detectbots.ini. Voici en détail son contenu :

#Liste des adresses ip (personnelles, pro, etc) pour lesquelles il ne faut pas afficher le marquage xiti #L'IP peut ne contenir que le début afin de bloquer les sous-IP [Specifics] HideForIPs[] HideForIPs[127.0.0.1]=127.0.0.1 HideForIPs[127.0.0.0]=127.0.0.0 #Liste des fichiers depuis lesquels chargés les adresses IP à bloquer BotsIPFiles[] BotsIPFiles[]=botsip.ini BotsIPFiles[]=botsipfromlogs.ini #Liste des navigateurs bots/non bot [Browsers] #Liste des expression présentes dans le nom du navigateur indiquant que ce n'est pas un bot NotContains[] NotContains[]=eZ Publish static cache generator #Liste des expression présentes dans le nom du navigateur indiquant que c'est un bot Contains[] Contains[]=Google Web Preview Contains[]=www.radian6.com/crawler Contains[]=Googlebot Contains[]=Jyxobot Contains[]=VoilaBot Contains[]=YandexBot Contains[]=YandexImages Contains[]=msnbot-media Contains[]=Googlebot-Image Contains[]=bingbot Contains[]=MJ12bot Contains[]=NerdByNature.Bot Contains[]=ABACHOBot Contains[]=Accoona-AI-Agent Contains[]=AddSugarSpiderBot Contains[]=AnyApexBot Contains[]=Arachmo Contains[]=B-l-i-t-z-B-O-T Contains[]=Baiduspider Contains[]=BecomeBot Contains[]=BeslistBot Contains[]=BillyBobBot Contains[]=Bimbot Contains[]=Bingbot Contains[]=BlitzBOT Contains[]=boitho.com-dc Contains[]=boitho.com-robot Contains[]=btbot Contains[]=CatchBot Contains[]=Cerberian Drtrs Contains[]=Charlotte Contains[]=ConveraCrawler Contains[]=cosmos Contains[]=Covario IDS Contains[]=DataparkSearch Contains[]=DiamondBot Contains[]=Discobot Contains[]=Dotbot Contains[]=EARTHCOM.info Contains[]=EmeraldShield.com WebBot Contains[]=envolk[ITS]spider Contains[]=EsperanzaBot Contains[]=Exabot Contains[]=Ezooms Contains[]=FAST Enterprise Crawler Contains[]=FAST-WebCrawler Contains[]=facebookexternalhit Contains[]=FDSE robot Contains[]=FindLinks Contains[]=FurlBot Contains[]=FyberSpider Contains[]=g2crawler Contains[]=Gaisbot Contains[]=GalaxyBot Contains[]=genieBot Contains[]=Gigabot Contains[]=Girafabot Contains[]=Googlebot Contains[]=Googlebot-Image Contains[]=GurujiBot Contains[]=HappyFunBot Contains[]=hl_ftien_spider Contains[]=Holmes Contains[]=htdig Contains[]=iaskspider Contains[]=ia_archiver Contains[]=iCCrawler Contains[]=ichiro Contains[]=igdeSpyder Contains[]=IRLbot Contains[]=IssueCrawler Contains[]=Jaxified Bot Contains[]=Jyxobot Contains[]=KoepaBot Contains[]=L.webis Contains[]=LapozzBot Contains[]=Larbin Contains[]=LDSpider Contains[]=LexxeBot Contains[]=Linguee Bot Contains[]=LinkWalker Contains[]=lmspider Contains[]=lwp-trivial Contains[]=mabontland Contains[]=magpie-crawler Contains[]=Mediapartners-Google Contains[]=MJ12bot Contains[]=MLBot Contains[]=Mnogosearch Contains[]=mogimogi Contains[]=MojeekBot Contains[]=Moreoverbot Contains[]=Morning Paper Contains[]=msnbot Contains[]=MSRBot Contains[]=MVAClient Contains[]=mxbot Contains[]=NetResearchServer Contains[]=NetSeer Crawler Contains[]=NewsGator Contains[]=NG-Search Contains[]=nicebot Contains[]=noxtrumbot Contains[]=Nusearch Spider Contains[]=NutchCVS Contains[]=Nymesis Contains[]=obot Contains[]=oegp Contains[]=omgilibot Contains[]=OmniExplorer_Bot Contains[]=OOZBOT Contains[]=Orbiter Contains[]=PageBitesHyperBot Contains[]=Peew Contains[]=polybot Contains[]=Pompos Contains[]=PostPost Contains[]=Psbot Contains[]=PycURL Contains[]=Qseero Contains[]=R6_CommentReader Contains[]=Radian6 Contains[]=RAMPyBot Contains[]=RufusBot Contains[]=SandCrawler Contains[]=SBIder Contains[]=ScoutJet Contains[]=Scrubby Contains[]=SearchSight Contains[]=Seekbot Contains[]=semanticdiscovery Contains[]=Sensis Web Crawler Contains[]=SEOChat::Bot Contains[]=SeznamBot Contains[]=Shim-Crawler Contains[]=ShopWiki Contains[]=Shoula robot Contains[]=silk Contains[]=Sitebot Contains[]=SiteBot Contains[]=Snappy Contains[]=sogou spider Contains[]=Sogou web spider Contains[]=Sosospider Contains[]=Speedy Spider Contains[]=Spinn3r Contains[]=Sqworm Contains[]=StackRambler Contains[]=suggybot Contains[]=SurveyBot Contains[]=SynooBot Contains[]=Teoma Contains[]=TerrawizBot Contains[]=TheSuBot Contains[]=Thumbnail.CZ robot Contains[]=TinEye Contains[]=truwoGPS Contains[]=TurnitinBot Contains[]=TweetedTimes Bot Contains[]=TwengaBot Contains[]=updated Contains[]=Urlfilebot Contains[]=Vagabondo Contains[]=VoilaBot Contains[]=Vortex Contains[]=voyager Contains[]=VYU2 Contains[]=webcollage Contains[]=Websquash.com Contains[]=wf84 Contains[]=WoFindeIch Robot Contains[]=WomlpeFactory Contains[]=Xaldon_WebSpider Contains[]=Xenu Link Sleuth Contains[]=yacy Contains[]=Yahoo! Slurp Contains[]=Yahoo! Slurp China Contains[]=YahooSeeker Contains[]=YahooSeeker-Testing Contains[]=YandexBot Contains[]=YandexImages Contains[]=YandexMetrika Contains[]=Yasaklibot Contains[]=Yeti Contains[]=YodaoBot Contains[]=yoogliFetchAgent Contains[]=YoudaoBot Contains[]=Zao Contains[]=Zealbot Contains[]=zspider Contains[]=ZyBorg

Utilisation de l'extension

Afin d'activer cette extension, il vous suffit de :

  • rajouter l'extension mddetectbots dans la liste des extensions chargées par votre siteaccess
  • régénérer l'autoload des classes : bin/php/ezpgenerateautoloads.php -e
  • faire appel à l'un des opérateur de template et d'en afficher le résultat
  • vérifier que l'extension fonctionne :
    • l'extension défini des balises meta, mais tout dépend de votre méthode pour générer le contenu de la balise head de votre site
    • l'appel à get_ip() retourne votre adresse IP
    • l'appel à get_broser_name() retourne la signature de votre navigateur web
    • l'appel à is_bot() retourne 1 si vous avez ajouté votre adresse IP à la liste des IP identifiées comme un "bot"

Pour information, ce site utilise cette extension, vous pouvez donc vous rendre compte du résultat.

Axes d'améliorations/évolutions

Si vous pensez à d'autres améliorations et évolutions, n'hésitez pas à m'en faire sur la page projet de la plateforme de votre choix dans les ressources listées ci-dessous.

Ressources

Mots clefs :