User-Agent
Utilisation
Les clients incluent User-Agent dans chaque requête afin d’identifier auprès du serveur l’application, le système d’exploitation et le moteur de rendu. Les serveurs utilisent cette information pour la négociation de contenu, les statistiques et les ajustements de compatibilité.
La valeur suit un format structuré de jetons de produit. Chaque jeton se compose d’un nom de produit et d’une version facultative, suivis de commentaires facultatifs entre parenthèses. Les jetons multiples sont séparés par des espaces.
User-Agent: <product>/<version> (<comment>) <product>/<version>
En pratique, les chaînes User-Agent des navigateurs sont devenues longues et complexes en raison de schémas de compatibilité hérités du passé. La plupart des navigateurs placent Mozilla/5.0 comme premier jeton pour des raisons historiques, suivi des détails de plateforme dans un commentaire, puis des jetons de moteur et de navigateur.
Les serveurs qui servent un contenu différent selon la valeur de User-Agent mettent en œuvre une forme de négociation de contenu. Les robots d’exploration des moteurs de recherche s’identifient au moyen de cet en-tête, ce qui permet aux serveurs d’appliquer une logique propre aux robots. Les systèmes de détection de bots analysent les motifs de User-Agent pour distinguer le trafic automatisé des visiteurs humains.
La famille d’en-têtes Sec-CH-UA offre une alternative structurée à la chaîne User-Agent. Les User-Agent Client Hints délivrent la même information sous une forme analysée et à faible entropie. Le navigateur envoie par défaut un jeu minimal d’indications, et le serveur demande des détails supplémentaires via l’en-tête de réponse Accept-CH. Cela réduit la surface d’empreinte passive par rapport à une chaîne User-Agent complète.
product
Un identifiant de produit désignant le logiciel client. Par convention, le produit le plus significatif est listé en premier.
version
Une chaîne de version associée au jeton de produit qui la précède, séparée par une barre oblique.
comment
Des détails supplémentaires entre parenthèses, décrivant généralement le système d’exploitation, l’appareil ou la plateforme. Les commentaires apparaissent après un couple product/version.
Exemple
Un navigateur de bureau envoie une chaîne User-Agent contenant la plateforme, le moteur de rendu et la version du navigateur. Le préfixe Mozilla/5.0 est un vestige historique présent dans tous les navigateurs modernes.
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.0.0.0 Safari/537.36
Un navigateur mobile inclut les informations d’appareil et de plateforme mobile dans la section de commentaire.
User-Agent: Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.0.0.0 Mobile Safari/537.36
La réduction de l’UA de Chrome fige les composantes mineure, de build et de correctif à 0.0.0. La version majeure s’incrémente à chaque publication.
Les robots d’exploration des moteurs de recherche utilisent des valeurs de User-Agent distinctives pour s’identifier. Le commentaire contient souvent une URL pointant vers la documentation du robot.
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Bingbot utilise une chaîne d’UA evergreen basée sur Chromium. La composante de version W.X.Y.Z se met à jour automatiquement pour correspondre à la version actuelle de Chrome.
Bureau :
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/W.X.Y.Z Safari/537.36
Mobile :
User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Les outils en ligne de commande et les bibliothèques HTTP envoient des valeurs plus courtes et plus simples.
User-Agent: curl/8.4.0
Les clients d’API et les bots personnalisés incluent un nom de produit descriptif, une version et une URL de contact :
User-Agent: MyBot/1.0 (+https://example.re/bot)
Confidentialité
La chaîne User-Agent constitue un vecteur important d’empreinte de navigateur. La combinaison du navigateur, de la version, du système d’exploitation et des détails de plateforme crée un identifiant quasi unique que les scripts de suivi exploitent sans cookies ni consentement explicite.
L’initiative de réduction du User-Agent menée par Chrome fige certaines parties de la chaîne et déplace les informations détaillées vers les Client Hints Sec-CH-UA, qui exigent une adhésion explicite du serveur via Accept-CH. Cela fait passer les données client détaillées d’une exposition passive à une négociation active.
Les serveurs ne devraient pas se fier à User-Agent pour des décisions de sécurité telles que l’authentification ou le contrôle d’accès. Les clients maîtrisent cette valeur et falsifient la chaîne de manière triviale.