Kesako ?
C’est suite a la lecture d’un article de Dan sur Identifier les robots qui visitent votre site que je me suis rappele que j’avais un vieux scripts dont je me servais – il y a encore peut de temps – pour avoir un rapport quotidien sur les pages crawlees par les 3 principaux robots (GoogleBot, Slurp et msnbot).
Donc pour ceux et celles que ca interesserait, voici les pre-requis (a adapter suivant votre configuration bien sur) :
– J’utilise des fichiers de logs separes pour chacun de mes sites dans le rep /var/log/apache2/access/nomdusite.log
– Mon LogFormat est configure de la maniere suivante dans mon apache2.conf (ajout du %v pour savoir de quel domaine on parle):
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%v\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent |
– Chacun de mes vhosts possede un CustomLog
CustomLog /var/log/apache2/access/nomdusite.log combined |
Et le script en question :
#!/bin/bash # Pour conserver les dates dans le bon format export LC_ALL=en_US # Date de la veille yesterday=$(date --date '1 day ago' +%d-%m-%Y) # On filtre sur la date [au meme format que celle contenue # dans les logs d'apache] filter=$(date --date '1 day ago' +%d\\/%b\\/%Y) # Fichier de sortie [j'ai choisi un csv afin de traiter les donnees] OutputFile=bottracker_$yesterday.csv # Le/Les fichiers de logs a Parser logfiles="/var/log/apache2/access/monsite.log.1" # Si vous souhaitez checker plusieurs fichier de logs # logfiles="/var/log/apache2/access/monsite.log.1 #/var/log/apache2/access/monsite1.log.1 #/var/log/apache2/access/monsite2.log.1 #/var/log/apache2/access/monsite3.log.1" for i in $logfiles do echo "------------------Rapport pour le site "${i%.l*g}------------------- >> $OutputFile echo >> $OutputFile ################################################## # On recup les crawls de Googlebot ################################################## nb_pg_ggb=`grep Googlebot $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | uniq | wc -l` echo \"[GoogleBot]\",\"$nb_pg_ggb pages crawlees\" >> $OutputFile echo >> $OutputFile if [ $nb_pg_ggb -ne 0 ] then for j in `grep Googlebot $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | sed 's/^/\t\t/g' | sort | uniq` do echo \"[GoogleBot]\",\"$j\" >> $OutputFile done fi # On insere une ligne vide echo >> $OutputFile ################################################## # On recup les crawls de Slurp ################################################## nb_pg_slurp=`grep Slurp $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | uniq | wc -l` echo \"[Slurp \=\> Yahoo]\",\"$nb_pg_slurp pages crawlees\" >> $OutputFile echo >> $OutputFile if [ $nb_pg_slurp -ne 0 ] then for j in `grep Slurp $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | sed 's/^/\t\t/g' | sort | uniq` do echo \"[Slurp \=\> Yahoo]\",\"$j\" >> $OutputFile done fi echo >> $OutputFile ################################################## # On recup les crawls de Msnbots ################################################## nb_pg_msn=`grep msnbot $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | uniq | wc -l` echo \"[MsnBot => Bing]\",\"$nb_pg_msn pages crawlees\" >> $OutputFile echo >> $OutputFile if [ $nb_pg_msn -ne 0 ] then for j in `grep msnbot $i | sed -ne "/"$filter"/p" | cut -d " " -f7 | sed 's/^/\t\t/g' | sort | uniq` do echo \"[MsnBot \=\> Bing]\",\"$j\" >> $OutputFile done fi done # On envoie le rapport par mail uuencode $OutputFile $OutputFile | mail -s "[RDD-BotTracker] rapport du $yesterday" -a "FROM:RDD-BotTracker" votre@email.fr # On delete le rapport rm "$OutputFile" |
Le fichier
Pensez a modifier dans le script
par votre adresse email.
Le fonctionnement est relativement simple. Il vous suffit de lancer le script (ou de le placer dans votre crontab pour un rapport a intervalle regulier) et vous allez recevoir par email votre rapport au format csv en piece jointe.
Je suis ouvert a toute remarque ou optimisation.
Une réponse sur « RDD Bot-Tracker »
Script très utile, par contre il faut faire attention dans le fichier à télécharger les doubles chevrons ont été transformés en >>
Après ça va être facile à customiser et à améliorer.