Comment savoir si une balise dépose vraiment des cookies avant le consentement

Ouvrez la page dans une fenêtre privée avec les outils de développement déjà lancés, et ne touchez pas à la bannière. Tout ce qui apparaît sous Application, Cookies, et tout ce qui part dans Network, s'est produit avant le consentement. Attribuez ensuite chaque élément : mettez en pause la balise que vous soupçonnez, rechargez, et regardez s'il revient malgré tout. Un audit du conteneur répond à une autre question : quelles balises ne sont pas conditionnées, et non lesquelles ont réellement fait quelque chose.
Ce que vous dit vraiment une liste d'audit
Un audit du consentement, qu'il vienne d'un scanner ou de quelqu'un qui lit un export de conteneur, répond à une seule question : quelles balises n'ont aucune condition de consentement attachée. C'est une question légitime. Ce n'est pas la même que de savoir si quelque chose a quitté le navigateur avant que le visiteur ne choisisse.
Cette année, sur un parc de sites en production, le client nous a remis une liste de constats de onze balises non conditionnées, avec une plainte en pièce jointe et une échéance. Confrontés à un seul chargement de page propre, trois des onze étaient des balises de fournisseurs qui lisaient elles-mêmes l'état de consentement et n'en faisaient rien, deux étaient des écouteurs dataLayer qui ne déposaient aucun cookie et n'émettaient aucun appel réseau, et six étaient de vraies fuites. Cinq constats sur onze relevaient de l'hygiène de configuration. À corriger, certes, mais ce n'était pas l'objet de la plainte.
Le constat qui expliquait la plainte ne figurait même pas sur la liste.
Onze constats, sept fuites.
La liste d'audit
11 balises sans condition de consentement- 3 vérifiaient elles-mêmes le consentement
- 2 sans cookie ni appel réseau
- 6 vraies fuites
5 sur 11 relevaient de l'hygiène, pas de fuites.
Un chargement de page propre
Avant de toucher à la bannière- 6 fuites confirmées
- 1 de plus, jamais listée
Un pixel injecté en aval par le script d'un autre fournisseur, et donc présent dans aucun conteneur.
Le conteneur indique ce qui est configuré. Seul un chargement de page indique ce qui s'est passé.
Comment vérifier si une balise dépose vraiment des cookies
Partez d'un profil qui ne se souvient de rien
Une fenêtre privée, extensions désactivées, outils de développement ouverts avant le chargement de la page, avec Preserve log activé. Si le profil contient déjà un enregistrement de consentement, la page vous traite comme un visiteur connu et le chargement ne prouve absolument rien.
Lisez ce qui s'est passé avant de toucher à la bannière
Application, puis Cookies, pour chaque domaine listé. Network, filtré sur les hôtes qui ne sont pas les vôtres. Notez les deux listes avant d'accepter ou de refuser quoi que ce soit. Ce relevé constitue le constat. Tout ce qui suit cette étape relève du rapprochement, pas de la découverte.
Attribuez à chaque balise signalée l'un de trois verdicts
Fuite : elle a écrit un cookie ou envoyé une requête. Inerte : elle s'est déclenchée et n'a fait ni l'un ni l'autre. Autoconditionnée : elle s'est déclenchée, a lu elle-même l'état de consentement et s'est arrêtée. Seul le premier verdict est une fuite, et les deux autres méritent d'être consignés pour que personne ne les soulève à nouveau le trimestre suivant.
Confirmez chaque fuite suspectée en mettant en pause un élément à la fois
Mettez la balise en pause, rechargez la fenêtre privée et cherchez à nouveau le même cookie ou la même requête. S'il est toujours là, cette balise n'a jamais été la source, et le prochain endroit où regarder est le code source de la page lui-même : un extrait collé dans le head s'isole exactement de la même façon, en le retirant puis en rechargeant.
Remontez les cookies que personne n'a signalés jusqu'à ce qui les a chargés
Pour chaque cookie ou requête de votre liste qu'aucune balise n'explique, lisez la colonne Initiator. Une requête dont l'initiateur est le script d'un autre fournisseur est arrivée en aval, n'est pas dans votre conteneur, et survivra à toutes les modifications que vous y ferez.
Classez selon ce qui a réellement quitté le navigateur
Une requête intersite portant un identifiant publicitaire est un constat d'un tout autre ordre qu'un cookie propriétaire contenant un identifiant de session. Corrigez dans cet ordre, et mettez ce classement dans la réponse plutôt que le total brut de onze.
Les étapes un et deux constituent toute la méthode. Le reste est de la tenue de comptes, mais une tenue de comptes qui répond à la question que le client a réellement posée : non pas combien de balises ne sont pas conditionnées, mais lesquelles font quelque chose.
Pourquoi un audit de conteneur ne peut pas produire cette liste
Deux raisons structurelles, et aucune n'est un défaut des outils.
Un conteneur connaît ses propres balises, et rien d'autre. Il ne sait pas ce que fait un script une fois chargé, et il ne voit rien de ce qui est collé directement dans le head du site, là où vivent en général les extraits de fournisseurs les plus anciens et les moins relus. Savoir si un extrait donné peut seulement être déplacé dans le conteneur est une décision à prendre script par script.
Non conditionnée et qui fuit sont deux propriétés différentes. De plus en plus de balises de fournisseurs lisent elles-mêmes l'état de Consent Mode et se retiennent d'elles-mêmes : une balise peut donc ne porter aucune condition dans le conteneur et se comporter correctement. L'inverse est vrai aussi, et c'est pire : une balise peut porter une condition parfaite et fuir quand même, parce que ce qui dépose le cookie se trouve en aval. Attribuer la bonne catégorie à chaque script est un exercice à part entière, et le test de décision pour cela se trouve ici.
Le constat qui ne figurera sur aucune liste
Dans cet audit, le cookie qui comptait était déposé par un pixel tiers qu'aucune balise du conteneur ne référence. Le script d'un autre fournisseur l'avait demandé après son chargement : une chaîne qu'un export de conteneur ne peut pas montrer et qu'un scanner lisant la configuration des balises ne signalera pas.
C'est la colonne Initiator du panneau Network qui le trouve. Remontez la requête jusqu'au script qui l'a demandée, et vous tombez généralement sur un outil approuvé il y a des années pour tout autre chose. Mettre des balises en pause ne sert à rien ici, car la balise n'a jamais été la source. Le mécanisme derrière ce schéma mérite d'être lu en entier : une fois que vous l'avez vu, vous le vérifiez à chaque fois.
Ce qu'il faut renvoyer
Répondez par des verdicts plutôt que par un total. Six fuites, classées selon ce qui a quitté le navigateur. Cinq balises non conditionnées et inertes, avec la preuve qu'elles sont inertes. Une fuite qui ne figurait pas sur votre liste, avec le nom du script qui l'a chargée. Cette réponse est plus courte que la liste d'origine, et c'est celle sur laquelle on peut agir.
Il faut être rigoureux sur ce point parce que les deux erreurs coûtent de l'argent réel, dans des sens opposés. Conditionner une balise qui n'a jamais fuité supprime de la mesure pour rien. Passer à côté d'une balise qui fuit laisse la plainte sans réponse. Et le critère juridique porte sur ce que la page a fait, pas sur ce que dit le conteneur : les lignes directrices de l'EDPB sur le champ d'application technique de l'article 5(3) incluent les pixels de suivi au même titre que les cookies, et c'est pourquoi la liste des requêtes compte autant que la liste des cookies.
Refaites le même chargement propre après chaque correction, car c'est la seule chose qui prouve la correction. La séquence complète d'avant mise en ligne se trouve ici, et c'est la même discipline appliquée plus tôt. Velo bloque par catégorie avant qu'une balise puisse s'exécuter et enregistre ce qui a été accordé au moment où cela s'est produit, ce qui raccourcit nettement cet exercice. Cela ne le supprime pas : les scripts que chargent vos fournisseurs restent à vous de les trouver.
Questions fréquentes
Les questions que l'on pose sur ce sujet.
Comment savoir si une balise dépose vraiment des cookies avant le consentement ?
Ouvrez la page dans une fenêtre privée avec les outils de développement déjà lancés et ne touchez pas à la bannière. Lisez les cookies écrits et les requêtes réseau envoyées. Attribuez ensuite chacun d'eux en mettant en pause la balise que vous soupçonnez et en rechargeant : si le cookie revient malgré tout, cette balise n'a jamais été la source. Votre conteneur vous dit ce qui est configuré, jamais ce qui s'est passé.
Une balise sans condition de consentement signifie-t-elle toujours une fuite ?
Non. Lors d'un audit portant sur onze balises signalées, trois étaient des balises de fournisseurs qui lisaient elles-mêmes l'état de consentement et ne faisaient rien, et deux étaient des écouteurs dataLayer qui ne déposaient aucun cookie et n'émettaient aucun appel. Cinq des onze relevaient de l'hygiène de configuration, pas de fuites. Non conditionnée et qui fuit sont deux propriétés différentes, et seul un chargement réel permet de les distinguer.
Et si un cookie apparaît avant le consentement alors que rien dans mon conteneur ne l'a déposé ?
Il a alors été injecté en aval : le script d'un autre fournisseur l'a demandé après son chargement, il n'est donc pas dans votre conteneur, et mettre des balises en pause ne l'arrêtera jamais. La colonne Initiator du panneau Network nomme le script qui l'a demandé. C'est le constat qu'un outil d'audit ne peut pas lister, et c'est souvent celui qui explique la plainte.
Pourquoi un audit du consentement liste-t-il des balises qui ne fuient pas réellement ?
Parce qu'il lit la configuration. Un audit recense les balises auxquelles aucune condition de consentement n'est attachée : c'est une vraie question, mais ce n'est pas la même que de savoir si quelque chose a quitté le navigateur. Il ne voit pas non plus les scripts collés directement dans le head du site, ni les requêtes qu'un script chargé émet de lui-même.
La confidentialité web, au même endroit.
Analysez votre site →

