SortieAnalyse · Sur le radarHabr AI→ original

Le trafic grimpe, les commandes non : comment les bots headless et les agents IA se cachent dans Metrika et GA4

La fréquentation augmente, mais les commandes stagnent : une partie des « visiteurs » sont des navigateurs sans humain derrière. L'auteur a installé sur une page de test son propre compteur, proche de Metrika et de GA4, puis l'a ouverte depuis curl, Python et Playwright. Les robots d'exploration sans JavaScript n'apparaissent pas dans les rapports, tandis que n'importe quel Chromium génère une visite complète, avec profondeur et cookie.

Traité par IA depuis Habr AI ; édité par Hamidun News
Le trafic grimpe, les commandes non : comment les bots headless et les agents IA se cachent dans Metrika et GA4
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Chiffre clé #1curl et requests ne sont visibles que dans le journal du serveur, le compteur reste muet
Chiffre clé #2Playwright, après quelques lignes de masquage, est indiscernable d'un humain
Ce qui le trahitune IP de datacenter, SwiftShader dans WebGL et une fenêtre sans bordure

La courbe de fréquentation grimpe depuis trois semaines, le marketing est satisfait, mais les commandes ne suivent pas. Le product manager analyse l'entonnoir étape par étape sans trouver de panne. Peut-être n'y a-t-il rien à réparer : une partie des « visiteurs » ne sont tout simplement pas des humains. Selon Cloudflare (30 septembre 2026), plus de la moitié du trafic Internet n'est désormais plus généré par des humains, et les requêtes des agents IA ont augmenté de plus de 1700 % en un an.

Qui le compteur entend-il ?

Un compteur d'analytique vit sous la forme d'un script sur la page. Pas de JavaScript exécuté, pas de hit. L'auteur l'a vérifié en pratique : il a installé sur une page de test un mini-compteur qui fait la même chose que les balises Metrika et GA4 (collecte des données du navigateur, envoi d'un ping après 3 secondes, dépôt d'un cookie first-party), puis a ouvert la page avec différents clients. En parallèle, nginx écrivait son propre journal.

Le résultat est simple. curl, Python requests et même curl avec le User-Agent GPTBot n'apparaissent que dans le journal. Tout Chromium, y compris Playwright dans différents modes et chrome --headless --dump-dom, laisse à la fois une trace dans le journal et un hit du compteur. Les grands robots d'exploration d'OpenAI et d'Anthropic téléchargent les fichiers JS sans les exécuter. Gemini (via l'infrastructure de Googlebot) et AppleBot exécutent le JavaScript. L'auteur n'a trouvé aucune mesure indépendante récente.

D'où une règle pratique : si le trafic augmente côté serveur mais pas dans Metrika, il s'agit très probablement de robots d'exploration, sans danger pour l'analytique. Les dangereux sont ceux qui sont visibles dans l'analytique.

Comment le headless se masque

Un Playwright non masqué avec headless=True se trahit immédiatement : HeadlessChrome dans le User-Agent et les Client Hints, pas d'Accept-Language, plugins vides, webdriver=true. Une simple vérification de l'UA suffit. Avec channel='chromium' (nouveau headless), le tableau change : les Client Hints indiquent un Chromium ordinaire, et un détecteur passé aux Client Hints laissera ce navigateur passer.

Après quelques lignes de masquage (UA personnalisé, écran 1536×864, locale russe, heure de Moscou, drapeau contre webdriver, référent Yandex, mouvements de souris), la moitié des indices disparaît. Les événements de souris arrivent avec isTrusted=true, impossible de les distinguer par ce drapeau.

Restent des écarts qu'on ne peut pas corriger dans le contexte du navigateur : l'UA annonce « Windows » tandis que navigator.platform indique « Linux » ; la marque Google Chrome est absente, car Playwright utilise Chrome for Testing ; la taille extérieure de la fenêtre est égale à la taille intérieure ; WebGL repose sur le SwiftShader logiciel. Ce dernier indice est faible en soi (un humain dans une machine virtuelle a le même profil), et Chrome 153 avertit déjà que le repli vers WebGL logiciel est obsolète. L'IP de datacenter, elle, ne se corrige pas du tout.

Que faire

GA4 exclut les bots selon une liste fermée de Google et de l'IAB ; on ne peut pas le désactiver ni consulter le volume filtré. Le canal « AI Assistant » de GA4 comptabilise les redirections issues des assistants et ne concerne pas les bots. Dans Metrika, les robots qui se déclarent dans l'UA sont exclus d'emblée, tandis que ceux repérés par leur comportement sont comptés par défaut. Commencez par basculer sur « Données : sans robots » et « Comparer avec les données avec robots ». La seconde comparaison se fait hors de Metrika : croissance dans le rapport contre croissance dans le journal du serveur.

Sur des données simulées (les proportions ont été fixées par l'auteur, les pourcentages ne prouvent donc rien), c'est la combinaison d'indices qui compte. Pris isolément, les accès directs, les rebonds ou la langue anglaise s'expliquent par une newsletter, une landing page et de la publicité. Associés à un réseau d'hébergement et à une baisse de la part des visiteurs récurrents, ils deviennent difficiles à justifier.

La combinaison « réseau d'hébergement, accès direct et visite de moins de 2 secondes ou scroll nul » détecte 86 % des bots et touche 0,43 % des humains, mais ne repère que 215 des 844 agents au comportement humain. La combinaison « hébergement, nouveau visiteur, écran serveur » en a détecté 745 sur 844, avec 1,2 % d'humains touchés. Pour cela, il faudra ajouter soi-même au export de l'API Logs un marquage des IP par ASN.

Signature et agents dans le navigateur

ChatGPT agent signe ses requêtes selon la RFC 9421 (en-têtes Signature, Signature-Input, Signature-Agent), et seul le serveur le voit. Ajoutez $http_signature_agent au format de journal nginx et comptez-y ces visites. Le protocole Web Bot Auth n'est encore qu'un brouillon de l'IETF du 1er septembre 2026, mais OpenAI, Google et AWS signent déjà selon ce protocole.

Le cas des agents dans le navigateur de l'utilisateur lui-même est pire : Comet, Atlas, Claude in Chrome. Pour Metrika et GA4, c'est un humain ordinaire sur une machine ordinaire, aucun indice d'environnement ne se déclenche. Le trafic nocturne n'aide pas non plus : ce sont des humains qui lancent les agents, leur activité suit donc le cycle hebdomadaire humain.

Conclusion pour le product manager : ne soignez pas l'entonnoir avant d'avoir confronté le rapport au journal du serveur. Et les visites d'agents devront être comptées comme un type de visiteur distinct, avec une conversion différente.

Dossier

Questions clés sur cet article

Qui le compteur entend-il ?

Un compteur d'analytique vit sous la forme d'un script sur la page. Pas de JavaScript exécuté, pas de hit. L'auteur l'a vérifié en pratique : il a installé sur une page de test un mini-compteur qui fait la même chose que les balises Metrika et GA4 (collecte des données du navigateur, envoi d'un ping après 3 secondes, dépôt d'un cookie first-party), puis a ouvert la page avec différents clients. En parallèle, nginx écrivait son propre journal. Le résultat est simple.

Comment le headless se masque?

Un Playwright non masqué avec headless=True se trahit immédiatement : HeadlessChrome dans le User-Agent et les Client Hints, pas d'Accept-Language, plugins vides, webdriver=true. Une simple vérification de l'UA suffit. Avec channel='chromium' (nouveau headless), le tableau change : les Client Hints indiquent un Chromium ordinaire, et un détecteur passé aux Client Hints laissera ce navigateur passer.

Que sait-on sur Que faire ?

GA4 exclut les bots selon une liste fermée de Google et de l'IAB ; on ne peut pas le désactiver ni consulter le volume filtré. Le canal « AI Assistant » de GA4 comptabilise les redirections issues des assistants et ne concerne pas les bots. Dans Metrika, les robots qui se déclarent dans l'UA sont exclus d'emblée, tandis que ceux repérés par leur comportement sont comptés par défaut. Commencez par basculer sur « Données : sans robots » et « Comparer avec les données avec robots ».

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Private AI Builders Community · Vibe Club

Ship AI Faster with Founders, Engineers & Weekly Architecture Reviews

Inside Vibe Club (hamidun.com/club) — weekly live masterminds with Zhemal Khamidun, Tech Radar, full LMS access, and 370+ production Claude Code skills.

Join Vibe Club →Explore Hamidun Academy
Qu'en pensez-vous ?
Chargement des commentaires…