Aller au contenu principal
6 min de lecture

Extension de navigateur

Le Zenovay Analytics Inspector est une WebExtension Chrome + Firefox qui détecte le script de tracking Zenovay sur n'importe quelle page et affiche les événements en direct dans une popup. C'est un outil de diagnostic — une alternative plus rapide, dans le navigateur, à l'ouverture des DevTools ou au flux de vérification d'installation du tableau de bord.

Aucune télémétrie. L'extension ne fait jamais d'appels réseau vers Zenovay. Tout l'état réside dans chrome.storage.session et est effacé à la fermeture du navigateur.

Installation

Chrome Web Store

Bientôt disponible — paquet de soumission préparé. Nous mettrons un lien direct ici dès l'approbation.

Firefox Add-ons (AMO)

Bientôt disponible — paquet de soumission préparé.

Depuis le code source (développeurs)

git clone https://github.com/zenovay/extension-zenovay.git
cd extension-zenovay
npm install
npm run build

Puis dans Chrome, ouvrez chrome://extensions, activez le mode développeur (interrupteur en haut à droite), cliquez sur Charger l'extension non empaquetée et choisissez le répertoire dist/.

Dans Firefox, ouvrez about:debugging#/runtime/this-firefox, cliquez sur Charger un module temporaire et choisissez dist/manifest.json.

Comment lire le badge

BadgeSignification
(vide)Aucun script de tracking Zenovay détecté sur cette page
Ambre !Script détecté, mais aucun événement déclenché pour l'instant
Vert ONScript détecté et événements actifs
Bleu CScript détecté, mode sans cookies

L'état du badge est par onglet, donc une seule session de navigateur peut afficher différents états pour différents sites simultanément.

Ce que montre la popup

Quand vous cliquez sur le badge, la popup rapporte :

  • Carte de statut — état de détection actuel, avec un point pulsant tant que des événements sont actifs
  • Code de tracking — l'ID du projet (par ex. ZV_abc123…)
  • Source du script — l'URL depuis laquelle le tracker est chargé
  • Cookieless — si data-cookieless="true" est défini sur la balise script OU cookielessMode: true dans ZENOVAY_TRACKER_CONFIG
  • GPC — si l'utilisateur a activé Global Privacy Control dans les paramètres du navigateur
  • Endpoint API — où le tracker envoie les événements
  • Événements en direct — liste défilante des 50 derniers événements (type + temps relatif)
  • Ouvrir dans le tableau de bord Zenovay — lien profond vers le tableau de bord correspondant

Événements en direct : Voie A vs Voie B

Le tracker Zenovay n'émet l'événement personnalisé zenovay:debug:event que lorsque le site définit data-debug="true". Les sites en production ne le font généralement pas.

Voie B (par défaut). L'extension écoute zenovay:debug:event et vide window._zenovayDebugBus. Sur une page en mode debug (ou sur app.zenovay.com), vous verrez des événements s'afficher. Sur un site en production sans mode debug, la popup affiche :

Activez data-debug="true" sur la balise script pour voir les événements en direct, ou activez l'inspection approfondie ci-dessous.

Voie A (opt-in). Activez Beta : inspection approfondie dans la popup. L'extension patche navigator.sendBeacon et window.fetch pour intercepter les POSTs d'événements vers l'API du tracker. Fonctionne sur tous les sites, avec deux réserves :

  1. L'extension peut entrer en conflit avec d'autres extensions qui patchent aussi les appels réseau.
  2. Les événements déclenchés avant l'activation du toggle ne sont pas capturés. Si 3 secondes s'écoulent sans événement, la popup propose un Recharger en un clic pour capturer la pageview initiale.

Nous marquons la Voie A comme Beta jusqu'à avoir collecté des retours sur les collisions. Désactivez-la si vous voyez un comportement étrange sur un site.

Signaux de détection

L'extension sonde cinq sources, dans cet ordre, toutes dans le MAIN world de la page :

  1. Scan des balises scriptscript[src*="/z.js"], script[src*="zenovay-tracker"], script[data-id], script[data-tracking-code], script[data-website-id].
  2. Sonde globaletypeof window.zenovay === 'function', vérifié jusqu'à 5 secondes par intervalles de 200 ms.
  3. Sonde de configuration — lit window.ZENOVAY_TRACKER_CONFIG si le tracker a été chargé via l'endpoint /load (avec config injectée depuis le tableau de bord).
  4. Abonnement événement — écoute zenovay:debug:event sur window.
  5. Vidange de buffer — capture un snapshot de window._zenovayDebugBus s'il existe.

Un seul signal suffit à marquer une page comme « détectée ».

Permissions

PermissionPourquoi
activeTabLire le DOM de l'onglet actif quand vous ouvrez la popup
storageMettre en cache les 50 derniers événements par onglet en session storage
scriptingInjecter la sonde de détection dans le MAIN world de la page
host_permissions: <all_urls>Détecter Zenovay sur tous les sites que vous visitez

Explicitement non demandées : tabs, webRequest, cookies, history, bookmarks, downloads. L'extension ne peut pas lire vos autres onglets, votre historique ou vos mots de passe enregistrés.

Confidentialité

L'Inspector est construit pour honorer la posture cookieless plus large de Zenovay :

  • Aucun appel réseau — l'extension n'envoie jamais de données à api.zenovay.com ni nulle part ailleurs.
  • Aucun cookie — ni l'extension elle-même ni son UI n'écrivent de cookies. L'état du toggle réside dans chrome.storage.local (quelques octets pour la préférence Beta : inspection approfondie). Les données d'événements par onglet résident dans chrome.storage.session, effacé à la fermeture du navigateur.
  • Pas de stockage persistant de payloads — les patches de la Voie A parsent les corps d'événements uniquement en mémoire.
  • Le deep-link est déclenché par l'utilisateur — cliquer sur Ouvrir dans le tableau de bord Zenovay est la seule action sortante, et elle nécessite un clic délibéré.

Dépannage

Le badge reste vide sur un site dont je suis sûr qu'il a Zenovay

  • Rechargez l'onglet en force (Cmd/Ctrl + Maj + R). La sonde injectée tourne à document_idle ; un rechargement frais lui donne une chance propre.
  • Inspectez le source de la page pour des motifs script src correspondant à /z.js, zenovay-tracker, ou data-id="…". Si aucun n'est présent, le script n'est en fait pas chargé.
  • Vérifiez la CSP du site — une directive script-src stricte pourrait bloquer le tracker entièrement.

Le badge affiche ambre ! mais j'attends des événements

C'est la Voie B fonctionnant comme prévu. Le script est chargé mais n'émet pas zenovay:debug:event parce que le site n'a pas data-debug="true". Activez Beta : inspection approfondie dans la popup, puis rechargez.

La liste d'événements est vide après activation de l'inspection approfondie

Si une bannière d'indice apparaît dans les 3 secondes — cliquez sur Recharger. La pageview initiale du tracker se déclenche une fois par chargement de page ; la Voie A ne capture que les événements à partir du moment où elle a été activée.

L'indicateur cookieless montre ✗ mais j'ai configuré cookieless

data-cookieless="true" doit être sur la balise <script> elle-même, en chaîne "true". Vérifiez :

<script src="https://api.zenovay.com/z.js" data-id="VOTRE_CODE" data-cookieless="true"></script>

Pas data-cookieless (présence seule) ni data-cookieless="1". Le tracker le lit avec une correspondance stricte de chaîne.

Open source

L'extension est sous licence MIT et développée ouvertement sur github.com/zenovay/extension-zenovay. Issues et pull requests bienvenus.

Cette page vous a-t-elle été utile ?