Chaînes User-Agent et Client Hints : ce qu'elles révèlent et ce qui a été figé

La chaîne user agent est le plus ancien signal d'identification du web et celui qui a le plus changé ces dernières années. Bien la lire suppose de savoir ce qu'elle contient encore, ce qui a été délibérément figé, et où est passé le détail retiré.
Ce que dit la chaîne
Une chaîne Chromium actuelle sous Windows ressemble à Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Les jetons historiques (Mozilla/5.0, AppleWebKit, like Gecko, Safari) sont là pour la compatibilité avec des scripts écrits il y a des décennies et ne portent aucune information. Les parties utiles sont la plateforme (Windows NT 10.0, même sous Windows 11), l'architecture et la version majeure du navigateur.
Ce qui s'y trouvait a été retiré volontairement. La version mineure et le correctif valent désormais 0.0.0. La version de Windows est figée à 10.0. Les chaînes Android n'incluent plus le modèle de l'appareil. C'est la « réduction du user agent » que Chromium a déployée entre 2022 et 2023 précisément parce que la chaîne était devenue une surface d'empreinte.
Client Hints : les mêmes données, sur demande
Le détail retiré n'a pas disparu ; il est passé aux User-Agent Client Hints. Un serveur peut demander des champs précis avec un en-tête Accept-CH, et le navigateur enverra alors des en-têtes tels que Sec-CH-UA-Platform-Version ou Sec-CH-UA-Model lors des requêtes suivantes. Les indices à faible entropie (marque et version majeure, plateforme, indicateur mobile) sont envoyés par défaut. Ceux à forte entropie (version complète, architecture, nombre de bits, modèle, version de la plateforme) ne sont envoyés qu'aux sites qui les demandent, et un script peut demander le même ensemble via navigator.userAgentData.getHighEntropyValues().
L'objectif de conception est que le site doive déclarer ce qu'il veut, ce qui rend la collecte visible et auditable. En pratique, un site qui veut établir une empreinte peut encore tout demander ; la différence est que cette demande est une requête que le navigateur peut voir, journaliser ou refuser.
Le problème de cohérence
Comme les mêmes faits sont désormais disponibles par deux sources, on peut les comparer. Un navigateur qui modifie sa chaîne user agent pour annoncer macOS mais laisse navigator.userAgentData.platform indiquer Windows a créé une contradiction triviale à détecter. Il en va de même pour la propriété navigator.platform, les polices propres à un système d'exploitation visibles par la page, et la chaîne du moteur de rendu WebGL, qui nomme un pilote graphique n'existant que sur un seul système d'exploitation. Falsifier la seule chaîne est une stratégie perdante depuis des années.
Lire la vôtre
Un diagnostic montre la chaîne brute, le navigateur et la version qu'il en extrait, et le moteur (Blink, Gecko ou WebKit). Notez que tous les navigateurs sur iOS déclarent WebKit, quelle que soit la marque, car Apple l'exige. Si le nom de navigateur extrait vous surprend, la chaîne est modifiée par une extension ou un paramètre de profil ; que ce soit un problème dépend de savoir si le reste du navigateur concorde avec la modification.


