Flux RSS et réseaux sociaux dans AwStats

Flux RSS et réseaux sociaux dans AwStats

AwStats est l’un des outils de statistiques web les plus anciens encore en activité.

Il se base sur de l’analyse de logs aussi bien que sur l’emploi d’un Javascript pour afficher des données sur les visites d’un site web.

C’est un logiciel libre, il est écrit en PERL, il n’est certes, pas très sexy, passé de mode aussi mais il fait très bien son travail et pour des stats courants, s’il a à envier aux Google Analytics ou Piwik, il a aussi ses avantages.

Il est en outre, extensible très facilement par l’intermédiaire d’un write my college essays fichier de configuration.

Je vais vous présenter deux astuces, la première vise à améliorer l’exemple fournis avec AwStats concernant le rapport sur les flux RSS.

La deuxième, est l’adaptation d’un article de

Flux de syndication

Le problème avec les flux de syndication c’est qu’il y en a plusieurs type :

  • RSS
  • XML
  • Atom
  • RDF

Et que chaque CMS à sa propre façon de les proposer (URL différente). Je me suis donc attaché à trouver la formule la plus exhaustive possible en évitant tous faux positifs.

Pour assurer l’exhaustivité, j’ai effectué un test sur les 251 flux RSS auxquels je suis abonné et pour éviter les faux positifs, j’ai vérifier sur l’ensemble des sites que je monitoire à l’aide d’AwStats, soit 12.

Voici le code

00. # Tracking RSS request
01. ExtraSectionName7="Flux RSS"
02. ExtraSectionCodeFilter7="200 304"
03. ExtraSectionCondition7="URL,(\/|\.|-|_|=)(rss2?|rdf|atom(\/|\.|-|_|=|&|^)+|feeds?|rssout)|\?.*page=backend|(billets_general|news|recentchanges)\.xml"
04. ExtraSectionFirstColumnTitle7="URL"
05. ExtraSectionFirstColumnValues7="URL,(.*)"
06. ExtraSectionFirstColumnFormat7="%s"
07. ExtraSectionStatTypes7=UVPHBEXC
08. ExtraSectionAddAverageRow7=0
09. ExtraSectionAddSumRow7=1
10. MaxNbOfExtra7=10
11. MinHitExtra7=1

 Quelques explications

Le « 7 » qui termine chaque attribut doit être remplacé pour correspondre à la section qui va bien chez vous (il ne peut y avoir 2 sections 7, et le chiffre indique l’ordre d’apparition des sections dans le rapport).

Ligne :

  1. Titre du tableau ;
  2. Code HTTP concernés 200 et 304 correspondent à des pages qui sont affichées (pas des redirections, pas des erreurs) ;
  3. Critères de sélection des lignes prises en comptes, un filtre appliqué aux logs, j’y reviendrais par après ;
  4. Titre de la colonne ;
  5. Données à afficher, URL est le champ à afficher et « .* » signifie « tout » (car on pourrait se limiter à une partie seulement du champ sélectionné) ;
  6. Format de la colonne %s signifie « texte » ;
  7. Valeurs à afficher : j’ai mis la total, sans réfléchir, mais tout n’est pas utile dans notre cas de figure. Ce n’est pas grave, les colonnes inutiles ne sont simplement pas affichées ;
  8. Pas de ligne « moyenne » en effet ça n’aurait pas de sens ;
  9. Afficher la somme de toutes les visites de tous les flux de syndication ;
  10. Afficher 10 lignes dans le rapport.

L’expression régulière

C’est la partie cruciale du code, celle qui détermine si les bonnes données seront affichées et si les calculs seront juste.

Petit lexique :

  • | signifie « ou »
  • ? signifie 0 ou 1 caractère ou du bloc précédent
  • + signifie « obligatoirement le caractère ou le bloc précédent »
  • * signifie 0, 1 ou plusieurs caractère ou du bloc précédent
  • ( et ) délimitent les bloc
  • . (point) signifie n’importe quel caractère, lettre, chiffre ou autre
  • ^ signifie « fin de ligne »
  • enfin \ doit placer devant les caractères spéciaux comme le . ou le ? pour dire (ce n’est pas un caractère spécial mais bien ce caractère là dont je veux parler)
(\/|\.|-|_|=)(rss2?|rdf|atom(\/|\.|-|_|=|&|^)+|feeds?|rssout)|\?.*page=backend|(billets_general|news|recentchanges)\.xml

Décomposons, nous avons tout d’abord 3 parties :

  1. (\/|\.|-|_|=)(rss2?|rdf|atom(\/|\.|-|_|=|&|^)+|feeds?|rssout)
  2. \?.*page=backend
  3. (billets_general|news|recentchanges)\.xml

Explication :

  1. Se décompose en :
    1. Obligatoirement l’un des caractère suivant : /, ., -, _ ou =
    2. Directement suivi de rss, rss2, rdf, atom, feed, feeds ou rssout
  2. URL content page=backend après un « ? », il peut y avoir (ou pas) plusieurs caractères entre les 2 c’est ce que signifie .*
  3. URL contenrnant billets_general.xml, news.xml ou recentchanges.xml

Il y a encore une petite subtilité, autant RSS, RDF ou feed sont relativement rare dans les mots courant, autant atom peut poser problème, atomique, Atomium, etc.

Pour éviter les faux positifs, j’ai donc défini les caractères qui pouvaient suivre « atom » dans le cas d’un flux de syndication, qui sont : /, ., -, _, = ou &

Pour les autres cas, il y a le caractère ^qui signifie « fin de ligne » en effet, dans une URL, l’élément « atom » peut être à la fin de la ligne.

 

Réseaux sociaux

00. # Trafic issu des réseaux sociaux
01. ExtraSectionName9="Trafic issu des réseaux sociaux"
02. ExtraSectionCodeFilter9="200 304"
03. ExtraSectionCondition9="REFERER,(plus\.google\.com|.facebook\.com|twitter\.com|^https?:\/\/t\.co\/|bit\.ly)"
04. ExtraSectionFirstColumnTitle9="Sites"
05. ExtraSectionFirstColumnValues9="REFERER,(.*)"
06. ExtraSectionFirstColumnFormat9="%s"
07. ExtraSectionStatTypes9=UVPHBEXC
08. ExtraSectionAddAverageRow9=0
09. ExtraSectionAddSumRow9=1
10. MaxNbOfExtra9=10
11. MinHitExtra9=1

Explications et expression régulière

Je ne vais pas ré-expliquer toutes les lignes, mais seulement l’expression régulière :

On test 3 réseaux (rien ne nous empêcherait d’en dénombre plus) :

  • Google+ : plus\.google\.com
  • Facebook :  .facebook\.com
  • Twitter : twitter\.com

Pour Google+ on précise toute l’URL : plus.google.com tandis que pour Facebook et Twitter on ne précise que la fin . facebook.com et tiwtter.com ainsi nous pouvons tracker m.facebook.com (la version mobile), touch.facebook.com (la version pour écran tactile), etc.

A ceci, nous ajoutons deux raccourcisseurs de liens :

  • t.co : obligatoire pour tous les liens Twitter  : ^https?:\/\/t\.co\/
  • bit.ly assez répandu également : bit\.ly

Pour le cas de t.co, afin d’éviter les site du genre totot.com qui contient aussi t.co (en gras) j’ai fourni la chaine complète : http://t.co et https://t.co

Bonus

Voici une astuce pour automatiser la mise à jour de la base de données qui permet de convertir les adresses IP en pays et villes.

Cette base est composé de 6 fichiers : 3 pour les IPv4 et 3 pour les IPv6 :

  • Pays
  • Ville
  • AS number (FAI)

La base de données GéoIP est fournie par MaxMind à l’adresse suivante : le est mise à jour mensuellement.

Pour l’installer, il faut bien sûr activer les plugins appropriés dans le fichier de configuration, télécharger puis les dézipper les 3 fichiers dans le dossier plugins d’AwStats.

Pour cela, je vous propose les 3 commandes Cron suivantes (une par fichier).

0 4 10 * * wget -O /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip -f /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoIP.dat.gz

5 4 10 * * wget -O /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoLiteCity.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz && gunzip -f /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoLiteCity.dat.gz

10 4 10 * * wget -O /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoIPASNum.dat.gz http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz && gunzip -f /kunden/homepages/25/d144922175/htdocs/admin/stat/cgi-bin/plugins/GeoIPASNum.dat.gz

Pensez bien entendu à modifier le chemin pour que ça corresponde à votre cas de figure.

Voici un aperçu de que l’on peut obtenir :

Aperçu GéoIP

Pour aller plus loin

Voici 3 liens qui vous permettrons d’aller plus loin (très très loin même)

  1. La page d’AwStats concernant les extras  sections
  2. Le site société Bruxelloise proposant bon nombre pay for essay de customisations pour AwStats
  3. Le site qui propose lui aussi un grand nombre de customisations pour AwStats
  4. Un excellent tutoriel concernant AwStats dans la documentation d’Unbuntu en français

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.