Catégories
BASH

RDD Bot-Tracker

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

rdd-bottracker.sh

Pensez a modifier dans le script

[email protected]

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *