Faire fonctionner Piwik malgré les ad-blockers

Piwik est un excellent outil de statistique pour les sites web, complet, léger, open source… Il a tout pour remplacer Google Analytics sur vos sites webs.

Malheureusement, les fichiers d’analyse de Piwik sont inscrits sur EasyList. Par conséquent, les Ad-Blocks et autres uBlock l’empêchent de fonctionner et vous ratez une bonne partie de votre audience.

Nous allons voir comment changer ça, simplement et proprement.

0. Disclaimer

Ce n’est pas le sujet de l’article mais personne n’a quoi que ce soit ici ni contre les ad-blockers ni contre la pub. Il est légitime pour un fournisseur de contenu de vouloir se rémunérer tout comme il est légitime pour un utilisateur de vouloir contrôler ce qui s’affiche sur son ordinateur personnel.

Mais Piwik possède de nombreuses fonctions de respect de la vie privée : masquage des IP, cookie d’opt-out, archivage anonyme des rapports… Il est donc regrettable qu’il soit inscrit sur les listes puisqu’il s’agit d’un bon élève. Et ce, surtout quand on considère qu’un analytics auto-hébergé est toujours plus respectable…

1. Diagnostic du problème de Piwik

Le problème est simple : les fichiers « piwik.js » et « piwik.php » sont inscrits sur la liste noire d’EasyList. Or, si on peut se passer du premier, notamment avec la technique de l’image noscript, le second est sans issu. En effet, pour comptabiliser vos statistiques, il faut qu’un contact soit fait avec le fichier php et celui-ci est bloqué par les ad-blockers.

D’ailleurs, dès qu’une personne dans votre audience a un tel logiciel, vous ne le verrez nulle part dans les logs.

2. Explication de la solution

L’idée générale est de faire un contact non plus sur des fichiers nommés « piwik » mais sur un autre nom, par exemple « p » ou « stat » ou n’importe quoi.

Vous trouverez beaucoup de gens qui vous conseillent de renommer les fichiers incriminés. C’est une impasse car cela doit être fait à chaque mise à jour et ce n’est vraiment pas recommandable car au moindre changement vous risquez de casser les liens entre fichiers. Idem pour les solution de duplication du fichier sous un autre nom.

La bonne technique va être l’URL Rewrite. On va rediriger de manière transparente toutes les requêtes sur « p.js » et « p.php » vers « piwik.js » et « piwik.php » respectivement. Les deux fichiers « p » n’existeront pas formellement, c’est juste un alias qui sera créé virtuellement par notre serveur web. Par conséquent, rien à faire en cas de mis à jour : c’est totalement transparent !

3. Mise en œuvre

Là, ça change selon votre serveur web : Apache ou Nginx.
Si vous ne savez pas, partez sur l’idée que vous avez Apache.

Pour Apache, ajoutez un fichier nommé « .htaccess » à la racine de votre installation de Piwik, là où se trouve le fichier « index.php ». Mettez-y les lignes suivantes :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule "^p\.php$" "piwik.php" [PT]
RewriteRule "^p\.js$" "piwik.js" [PT]
</IfModule>

(si le fichier existe déjà, rajoutez ces lignes à la fin)

Pour Nginx, ajoutez cela à votre configuration de Piwik :

location /
{
rewrite "^p\.php$" /"piwik.php";
rewrite "^p\.js$" /"piwik.js";
}

 

Une fois ceci fait, allez dans la configuration de votre site web, à l’endroit où le code analytics est créé et changez les appels vers « piwik.js » et « piwik.php » par « p.js » et « p.php »…

 

 

À partir de maintenant, tous les utilisateurs apparaîtront dans votre interface d’analyse, et vos statistiques n’en seront que plus précises.

Cela ne vous dispense pas d’activer l’ensemble des options garantissant la vie privée !

Emmanuel

Fondateur de GeekActu
Œil attentif de longue date sur le web et geek touche-à-tout

Mail : emmanuel@geekactu.fr
PGP : 227A BA0F 3688 94E9 3651 E45E 4504 9870 7D5C 8A66

Les derniers articles par Emmanuel (tout voir)

Partagez si vous aimez :
3

Emmanuel

Fondateur de GeekActu Œil attentif de longue date sur le web et geek touche-à-toutMail : emmanuel@geekactu.fr PGP : 227A BA0F 3688 94E9 3651 E45E 4504 9870 7D5C 8A66

Laisser un commentaire

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