Aller au contenu principal

User-Agent Client Hints et réduction de l'UA

Les navigateurs basés sur Chromium envoient une chaîne User-Agent réduite : les détails qui identifiaient le plus précisément un appareil sont figés sur des valeurs fixes, et les données précises sont passées aux User-Agent Client Hints (UA-CH), qu'un site doit demander. Ce guide analyse une ancienne chaîne de Chrome sous Android à côté d'une chaîne réduite.

Exemple détaillé

Chrome sous Android, ancienne chaîne (avant la réduction)
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
Navigateur
Chrome 99.0.4844.88
Moteur
Blink
Système d'exploitation
Android 12
Classe d'appareil
Mobile
Appareil
Samsung SM-G991B
Architecture CPU
Inconnu
Bot / crawler
Non
Chrome sous Android, chaîne réduite
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
Navigateur
Chrome 120.0.0.0
Moteur
Blink
Système d'exploitation
Android 10
Classe d'appareil
Mobile
Appareil
K
Architecture CPU
Inconnu
Bot / crawler
Non

L'ancienne chaîne expose Android 12, le modèle Samsung SM-G991B et la version complète 99.0.4844.88. Dans la chaîne réduite, Android 10 et le modèle K sont des valeurs de substitution envoyées par tous les appareils Android, et la version se termine par .0.0.0. L'analyseur rapporte exactement ce qu'indique la chaîne (Android 10, modèle K) : seuls la version majeure 120 et le jeton Mobile apportent donc encore une information réelle.

Client hints à faible entropie qu'un navigateur Chromium envoie par défaut, et un en-tête de réponse Accept-CH qui en demande davantage
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List

Règles essentielles

  • Les chaînes Chrome réduites ne conservent que la version majeure ; les numéros mineur, de build et de correctif valent toujours 0.0.0.
  • Sous Android, la version de l'OS est fixée à 10 et le modèle de l'appareil remplacé par K. Sur ordinateur, la plateforme est figée sur des valeurs telles que Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7 ou X11; Linux x86_64.
  • En HTTPS, les navigateurs Chromium envoient par défaut trois client hints à faible entropie : Sec-CH-UA (marques et versions majeures), Sec-CH-UA-Mobile et Sec-CH-UA-Platform.
  • Les hints détaillés comme Sec-CH-UA-Platform-Version, Sec-CH-UA-Model et Sec-CH-UA-Full-Version-List ne sont envoyés qu'après que le serveur les a demandés dans un en-tête de réponse Accept-CH. En JavaScript, utilisez navigator.userAgentData.getHighEntropyValues().
  • La liste des marques contient une entrée « GREASE » volontairement fictive, comme « Not_A Brand ». Recherchez la marque dont vous avez besoin au lieu de comparer l'en-tête entier.
  • Windows 11 envoie toujours Windows NT 10.0 dans la chaîne User-Agent ; un Sec-CH-UA-Platform-Version de 13.0.0 ou plus identifie Windows 11.
  • Les client hints sont une fonctionnalité de Chromium : conservez une solution de repli basée sur User-Agent pour les autres navigateurs. Cet analyseur ne lit que la chaîne User-Agent, pas les client hints.

Autres guides sur les user agents