Another Home Page Blog - robothttps://blog.anotherhomepage.org/2011-11-21T09:30:00+01:00Ajouter des robots dans Awstats2011-11-21T09:30:00+01:002011-11-21T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2011-11-21:/post/2011/11/21/Ajouter-des-robots-dans-Awstats/<p>Aujourd'hui un nouvel épisode de mon outil de statistiques web du moment, Awstats. Souvenez-vous, nous avons déjà rencontré ce logiciel à trois reprises :</p>
<ul>
<li><a href="/post/2011/01/31/awstats">lors d'un premier billet</a> d'introduction et de configuration ;</li>
<li><a href="/post/2011/02/14/utilisation-des-plugins-awstats">pour activer des plugins</a> afin d'améliorer les statistiques ;</li>
<li><a href="/post/2011/02/28/ajouter-ses-sections-personnalisees-dans-awstats">mais aussi lors de l'ajout de sections personnalisées</a> spécifiques à votre …</li></ul><p>Aujourd'hui un nouvel épisode de mon outil de statistiques web du moment, Awstats. Souvenez-vous, nous avons déjà rencontré ce logiciel à trois reprises :</p>
<ul>
<li><a href="/post/2011/01/31/awstats">lors d'un premier billet</a> d'introduction et de configuration ;</li>
<li><a href="/post/2011/02/14/utilisation-des-plugins-awstats">pour activer des plugins</a> afin d'améliorer les statistiques ;</li>
<li><a href="/post/2011/02/28/ajouter-ses-sections-personnalisees-dans-awstats">mais aussi lors de l'ajout de sections personnalisées</a> spécifiques à votre site internet.</li>
</ul>
<p>Aujourd’hui attardons-nous sur une autre possibilité d'Awstats : la détection des robots et moteurs de recherches. Si vous avez déjà des statistiques en place, vous aurez noté que vous disposez d'une rubrique “Visiteurs Robots/Spiders” dans votre page. Awstats ne peut pas connaître tous les robots sur le marché, de nouveaux sont créés tandis que d'autres disparaissent. Certains sont dédiés à des moteurs de recherche, d'autres sont des logiciels téléchargeables, pour effectuer des recherches ou créer un aggrégateur de flux RSS. Lorsqu'Awstats repère un robot qu'il ne connait pas, il peut l'afficher de deux manières : “Unknown robot (identified by 'bot*')” ou bien “Unknown robot (identified by '*bot')”. Vous comprenez donc qu'il cherche juste le mot “bot” dans le <a href="https://fr.wikipedia.org/wiki/User-agent" title="User-agent">User-agent</a> laissé par votre visiteur dans les logs de votre serveur web.</p>
<p>Si vous regardez souvent les logs de votre serveur web (activité qui peut semble à première vue excentrique, mais Ô combien intéressante en réalité), vous trouverez sans doute un robot qui n'est pas connu d'Awstats. Ce billet prend l'exemple avec <a href="http://git.etoilebsd.net/cplanet/" title="cplanet">cplanet</a>, un aggrégateur RSS utilisé en particulier par un certain <a href="http://planet.etoilebsd.net/">planet BSD francophone</a>.</p>
<p>Awstats stocke les noms des robots qu'il connaît dans un fichier nommé “robots.pm”. Ce fichier, dans le cas d'une installation via pkgsrc sous NetBSD se trouve à l'endroit suivant : <em>/usr/pkg/awstats/cgi-bin/lib/robots.pm</em>. Effectuons-donc une copie de sauvegarde de ce fichier :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">cp</span><span class="w"> </span><span class="o">-</span><span class="n">vp</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"></span>
</code></pre></div>
<p>Profitons-en pour copier la sauvegarde dans un autre fichier, que nous allons modifier :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">cp</span><span class="w"> </span><span class="o">-</span><span class="n">vp</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
</code></pre></div>
<p>Avant de modifier le fichier, jetons un oeil aux logs (Apache dans mon cas) :</p>
<div class="highlight"><pre><span></span><code><span class="mf">1.2.3.4</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="err">[</span><span class="mf">04</span><span class="o">/</span><span class="n">May</span><span class="o">/</span><span class="mf">2011</span><span class="p">:</span><span class="mf">16</span><span class="p">:</span><span class="mf">30</span><span class="p">:</span><span class="mf">48</span><span class="w"> </span><span class="o">+</span><span class="mf">0200</span><span class="err">]</span><span class="w"> </span><span class="s">"GET /feed/atom HTTP/1.1"</span><span class="w"> </span><span class="mf">200</span><span class="w"> </span><span class="mf">105441</span><span class="w"> </span><span class="s">"-"</span><span class="w"> </span><span class="s">"cplanet/0.6"</span><span class="w"></span>
</code></pre></div>
<p>Le User-agent de cplanet est donc : "cplanet/0.6". Maintenant éditons notre <em>robots.pm.custom</em>. En lisant les commentaires on se rend compte que le fichier est organisé en plusieurs listes. Il faut donc ajouter notre nouveau robot dans deux d'entres elles, <em>RobotsSearchIDOrder_list\<X></em> (où \<X> désigne un chiffre) et <em>RobotsHashIDLib</em>. J'ai choisi d'ajouter mon robot dans <em>RobotsSearchIDOrder_list2</em>, qui contient des robots peu connus. Je suis allé à la fin de cette liste mais je n'ai pas ajouté mon robot en toute fin de liste mais juste après un robot nommé “zeus”. Pourquoi ? Il s'avère que certains noms de robots sont des expressions régulières, et doivent être en fin ou en début de liste. Donc je ne souhaite pas les perturber.</p>
<p>Voici les lignes contenant “zeus” et cplanet (aux alentours de la ligne 965) :</p>
<div class="highlight"><pre><span></span><code>'zeus',
'cplanet',
</code></pre></div>
<p>Passons à la deuxième liste, qui commence aux alentours de la ligne 1000. Vers la ligne 1320, on peut lire le commentaire suivant : “Other robots reported by users”. Je suis donc à nouveau descendu jusqu'à retrouver “zeus” et j'ai ajouté de cette manière cplanet, juste en-dessous :</p>
<div class="highlight"><pre><span></span><code>'cplanet','<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://git.etoilebsd.net/cplanet/"</span> <span class="na">title=</span><span class="s">"A rss feed agregator that generate static html pages"</span> <span class="na">target=</span><span class="s">"_blank"</span><span class="nt">></span>CPlanet RSS agregator<span class="nt"></a></span>',
</code></pre></div>
<p>J'ai donc créé un identifiant pour mon robot, qui est en fait une chaîne de caractères basée sur le User-agent, et ai ajouté un lien vers l'URL du robot pour savoir d'où il vient, ainsi qu'un texte descriptif, en anglais. Notez bien le format de séparation, et que la virgule à la fin est <strong>obligatoire</strong>.</p>
<p>Maintenant que notre fichier personnalisé est prêt, reste à le mettre en production :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">rm</span><span class="w"> </span><span class="o">-</span><span class="n">vf</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="k">ln</span><span class="w"> </span><span class="o">-</span><span class="n">sv</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
</code></pre></div>
<p>Si jamais Awstats doit être mis à jour, celui-ci écrasera le lien symbolique. Il faudra donc vérifier (avec la commande diff par exemple) si le projet Awstats a mis à jour de son côté le fichier, et reporter nos modifications dans une copie du nouveau. Pensez d'ailleurs à proposer vos nouveaux robots sur le <a href="http://sourceforge.net/tracker/?group_id=13764&atid=363764">bug tracker d'Awstats sur Sourceforge</a></p>