magentix

Développeur backend indépendant Web, e-commerce, Open-Source, low-tech, indie-web, slow-web, SSG, accessibility, PHP, Python

Billets : Adapter l'outil d'analyse statistiques Matomo pour contrer les Ad blockers


Adapter l'outil d'analyse statistiques Matomo pour contrer les Ad blockers

Par Matthieu le 26/12/2024

Matomo est un outil de statistiques de sites web open source, gratuit en auto-hébergement. Il a l'avantage de dispenser du consentement au traçage. Mais comme la majorité des outils d'analyse statistiques, il est généralement bloqué par les Ad Blockers.


Outil d'analyse statistiques Matomo

J'utilise uBlock Origin depuis toujours. Globalement, c'est assez puissant pour échapper aux outils de suivi de type "analyse de comportement" ou "ciblage publicitaire".

Mais les Ad Blockers bloquent également les outils plus éthiques, liés simplement aux statistiques de visites, comme Matomo.

Par exemple, sur le site de Canard PC, j'ai donné mon consentement Matomo :

Fenêtre de consentement Matomo sur le site Canard PC

Mais le script sera de toute manière bloqué par uBlock Origin :

Console Firefox illustrant le script Matomo bloqué par Ublock Origin

Car il est compréhensif que l'éditeur d'un site ou d'un blog souhaite connaître le nombre de visiteurs sur une page, pour évaluer son audience (media, e-commerce...). Au tout début d'Internet, on trouvait souvent des compteurs de visite sur les pages.

Ce n'est évidemment pas indispensable, à titre personnel je m'en passe largement (j'écris pour le plaisir, et si ce que je dis peut servir à une ou deux personnes, c'est déjà génial). Mais pour beaucoup, la tentation de savoir combien de fois une page est vue est généralement assez forte. Ou si vous éditez des sites pour un client, il vous le réclamera forcément.

Matomo

Matomo, Plausible ou encore Umami sont quelques-uns des outils de statistiques alternatifs (et open source). J'ai choisi Matomo, car c'est de mon point de vue le plus simple à héberger. C'est du PHP, et du MySQL. Pas besoin de Node.JS, NPM, Elixir/Phoenix, React, TailwindCSS, PostgreSQL, Docker, etc...

Et pour faciliter encore les choses, il s'installe rapidement chez Alwaysdata car il est présent dans la Marketplace d'applications : Alwaysdata Marketplace. Les mises à jour s'effectuent ensuite directement depuis l'interface Matomo.

Interface Matomo

Matomo est, comme tous les autres, largement bloqué car référencé dans les blocklists. Il est cependant assez facile de contourner le blocage, en suivant les règles suivantes.

Sous domaine

Il est préférable d'héberger Matomo sur un sous-domaine, sans aucun rapport avec le tracking. On évitera donc les tracking.example.com ou analytics.example.com. Utilisez plutôt un nom neutre du style info.example.com.

Script JS

Le script chargé par votre site est par défaut matomo.js (à la racine de Matomo). Assez simple à bloquer. Renommez-le avec n'importe quel autre nom :

cp matomo.js foobar.js

Requête

La requête de tracking envoyé de votre site à Matomo contient toujours : ?action_name=. Ce pattern est présent dans plusieurs blocklists. En ajoutant un paramètre à la requête, on contourne le blocage : ?_=&action_name=

sed -i 's/"action_name="/"_=\&action_name="/g' foobar.js

Script PHP

Comme pour le script JS, renommez le script PHP du tracker (à la racine de Matomo) par le nom de votre choix :

cp matomo.php foobar.php

Script de tracking

Pour finir, on remplace dans le script de tracking fourni par Matomo les références à matomo.js et matomo.php par les nouveaux noms :

<script>
  var _paq = window._paq = window._paq || [];
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://info.example.com/";
    _paq.push(['setTrackerUrl', u+'foobar.php']);
    _paq.push(['setSiteId', '2']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'foobar.js'; s.parentNode.insertBefore(g,s);
  })();
</script>

Résultat

Matomo n'est plus bloqué par uBlock Origin :

Console Firefox illustrant le script Matomo non bloqué par uBlock Origin

Une question ? Rejoignez-moi sur le Fédivers :
@magentix@magentix.space