Tutoriel : masquer son code Analytics

Tutoriel : masquer son code Analytics

Quoi de plus pénible que de voir ses stats exploser en plein vol sans augmentation du trafic ? La raison peut être très simple : un gars a pompé le contenu de votre site (contenu et code), y compris le code de vos statistiques. Perso ça m'énerve gravement.

Protéger son code en quelques lignes

Si vous utilisez Google Analytics (ou un autre outil d'analyse tel que Piwik), vous avez l'habitude d'utiliser ces quelques lignes :

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXX-XX', 'auto');
  ga('send', 'pageview');

Ce code étant repérable facilement, on va effectuer deux actions pour le masquer des regards indiscrets et le rendre inutilisable sur un autre site que le sien.

La première étape consiste à contrôler que le domaine qui affiche ce code est autorisé à le faire. On remplace le code par le suivant :

var domaine = location.hostname;
if (domaine == 'www.votre-domaine.com') {
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-XXXXXX-XX', 'auto');
      ga('send', 'pageview');
}

Pour chaque site, pensez à mettre à jour les lignes suivantes :

if (domaine == 'www.votre-domaine.com') {

ga('create', 'UA-XXXXXX-XX', 'auto');

Toutefois, ce n'est pas suffisant. Il faut également crypter cette portion de code pour qu'elle ne soit pas modifiable. Rendez-vous sur le site http://www.javascriptobfuscator.com/Javascript-Obfuscator.aspx

Copiez le code sans les balises javascript dans la colonne de gauche et cliquez sur le bouton Obfuscate. Créez un fichier stats.js et copiez le code crypté de la colonne de droite à l'intérieur.

Ensuite, il vous suffit d'appeler votre code comme ceci :

<script type="text/javascript" src="stats.js"></script>

Voilà, plus personne ne viendra pourrir vos statistiques. ;)

Catégorie Tutoriels - Écrit par le 09/04/2015 - Article lu 3 004 fois - 14 commentaires

14 réflexions sur ce billet

Écrit par Loïc
Le 10/04/2015 à 08h22

Fonctionne aussi pour adsense :p

Oui mais là tu t'en fiche un peu qu'un mec te le copie. A moins qu'il ne le mette sur un site de pr0n pour bannir ton compte. :S

Écrit par Nicolas Augé du site http://www.nicolasauge.com
Le 10/04/2015 à 10h56

C'est dans ce genre de cas que tu te dis : "mais bon sang, pourquoi je n'y avais pas pensé ?".

Moi qui gérait ça au niveau du .htaccess et des filtres GA, au moins cette façon de faire est radicale !

Merci Hervé. ;-)

Écrit par Hervé
Le 10/04/2015 à 10h58

@Loïc : oui également. ;)

@LIJE : pour éviter de se faire pourrir les statistiques depuis un autre site.

Écrit par Madeline du site http://www.canyouseome.com/
Le 10/04/2015 à 12h04

Merci pour la technique.

Julien Coquet a publié récemment une autre technique, moins radicale (car les stats sont toujours polluées) mais plus marrantes.
Il utilise un gestionnaire de tag pour mettre en place ces tags de suivi, et il avait juste mis en place un autre tag pour ouvrir une popup sur les pages qui ont volé du contenu.

Ça pourrait etre sympa de mélanger les 2 techniques.

Si c'est le bon host, on met le tag, sinon on ouvre une popup qui indique que le contenu est volé :)

Alors justement en utilisant un gestionnaire de tag du type Google Tag Manager, on passe à une solution qui a de l'avenir, où on n'a plus besoin des dev pour poser des balises. :p

Et le code de suivi analytics ne s'affiche plus dans le code source donc ça résous le problème du squatte facile. Après n'étant pas le grand spécialiste, je ne sais pas si on peut le trouver dans le datalayer, mais je ne pense pas.

Écrit par Hervé
Le 10/04/2015 à 21h54

@Madeline : idée intéressante que cette pop-up. J'adore ^^

@Marc : une agence web qui propose un conseil pour se passer d'un dev, ce n'est pas courant. :-)

Écrit par Éric
Le 07/08/2015 à 20h35

Je vais utiliser ça sans plus tarder ! Merci :)

Écrit par Marie
Le 19/08/2015 à 18h05

J'ai moi été victime d'une utilisation frauduleuse de mon code analytics, ce qui m'a valu l'apparition de page à caractère pornographique dans mes stats... Imaginez ma surprise, je crois avoir lu que cela s'appelle Ghost Referrer Spam.

Écrit par Parfait R.
Le 24/08/2015 à 16h40

J'ai fait à plusieurs reprise le tour du web pour trouver une réponse à cette question. Et oui, je pensais tout d'abord à un problème de spam. d'ailleurs les infos qui circulent à ce sujet ont renforcé ma théorie, il m'était donc venu à l'idée de créer des filtres. Mais malheureusement, mes données étaient encore infectées.

Et là, je pense que je suis tombé sur une solution radicale, je vais l'appliquer illico ! Merci, c'est sans doute à cause de ce UI- trop visible qu'ils arrivent à pénétrer les données.

Merci !

Écrit par dryland
Le 07/11/2015 à 10h16

Salut

J'ai essayé ce script pendant plusieurs mois, je ne suis plus spammé par le referal spam. Le seul problème, je viens de mettre mon site en SSL. Sur Internet Explorer, Microsoft signale comme contenu bloqué et même pire mets à côté de l'URL, un logo en bleu.

J'ai fai le test de supprimer le script et la plus d'alarme du côté d'Internet explorer. J'ai essayé de copier le code encodé dans une balise.

Écrit par Hervé
Le 09/11/2015 à 09h35

Dryland

Il faut chercher ce qui cloche dans le code et l'adapter en rapport avec le SSL. Peut-être sur cette ligne de code :

if (domaine == 'www.votre-domaine.com') {

Je n'ai pas de site en SSL, donc impossible de t'aider davantage.

Écrit par Dryland
Le 09/11/2015 à 15h46

Bonsoir Hervé

Le problème ne vient pas de ton script obscure, le problème vient de active X sur Internet Explorer qui bloque systématiquement les comptes UA xxxxx obscure ou non obscure.

J'ai fait les tests suivants :

1/ Aucun code UA active X ne détecte rien
2/ Code obscure active X détecte et bloque
3/ Code non obscure original donner par Google, active X détecte et bloque.

Cela est valable pour les sites SSL ou non SSL , si l'utilisateur utilise active X alors le script Google sera bloqué. Si l'utilisateur n'a pas activer active X alors aucune alerte aucun blocage. Je ne sais pas combien d'utilisateurs active active X
mais ce n'est pas sympa de la part de Microsoft.

Sinon avant d'utiliser ton script j’étais énormément spammé par le spam referral. J'avais essayer des tonnes de variables conseiller sur le web et sur le filtre de Google. J'en avais toujours qui arrivait a passer à travers comme event-tracking. Dès que j'ai installé ton script depuis ce jour je n'ai aucun pollueur sur mes stats de Google Analytics.

Je te remercie d'avoir mis a la disposition des webmasters un script 100% efficace car le résultat est la.

Bonne soirée à tous.

Écrit par Alexeo
Le 08/07/2016 à 15h59

Salut Hervé, merci pour la technique, plutôt utile et relativement simple à mettre en place. On l'a récemment mis en place sur Joomla mais avec un plugin qui permet de faire la compression de code dont les script, Analytics est directement inclus dedans et comme ça, aucune trace.

Les commentaires de ce billet sont fermés

Haut de page