Glossary
User-Agent
L’en-tête HTTP qui ment sur lui-même
By Buğra SözeriPublished Updated
L’en-tête User-Agent est censé identifier le client effectuant une requête HTTP — nom du navigateur, version, système d’exploitation, etc. C’est aussi l’en-tête le plus surchargé de l’histoire HTTP, mentant sur son propre contenu pour des raisons de rétrocompatibilité qui s’accumulent d’année en année.
Une chaîne User-Agent Chrome moderne typique :
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Chrome prétend être Mozilla, Apple WebKit et Safari, tous en même temps. Aucun de ces tokens n’est exact — ils existent parce qu’un code côté serveur de 1998 vérifiait « Mozilla » avant de servir du HTML moderne, donc chaque navigateur suivant a ajouté « Mozilla/5.0 » pour éviter d’être rétrogradé. La chaîne est depuis un musée de hacks de compatibilité.
Alternatives modernes :
- Client Hints User-Agent (famille d’en-têtes Sec-CH-UA) — Chrome a commencé à envoyer des client hints structurés en 2020. Les serveurs peuvent s’abonner via Accept-CH. Données plus propres, empreinte par défaut plus petite.
- Détection de fonctionnalités plutôt que le reniflement UA — vérifiez si l’API dont vous avez besoin existe plutôt que de deviner à partir de la version du navigateur.
Les chaînes User-Agent peuvent être usurpées trivialement ; traitez-les comme un indice, pas comme une limite de sécurité. Pour les analyses, le UA donne une répartition approximative des parts de clients ; pour les décisions réelles, détectez les fonctionnalités.
Le projet de réduction du User-Agent Chrome : Google a commencé à réduire l’entropie de la chaîne UA en 2022, gelant la version mineure, supprimant la version précise du système d’exploitation et unifiant les chaînes mobile/desktop. L’objectif était de réduire l’empreinte digitale passive — une chaîne UA peut identifier un navigateur unique parmi des centaines de milliers d’autres uniquement à partir de ses tokens de version de build. D’ici 2025, la chaîne UA Chrome est significativement plus courte et moins identifiante. Firefox et Safari ont suivi à des rythmes plus lents. Les sites qui dépendent encore de l’analyse de l’UA pour la détection du navigateur se cassent progressivement — l’API Client Hints moderne est le remplacement pris en charge.
User-agents des bots — convention, pas application : Googlebot, Bingbot, GPTBot, ClaudeBot et la plupart des robots commerciaux s’identifient honnêtement dans la chaîne UA parce qu’ils ont besoin d’être autorisés à passer robots.txt et d’être limités en débit équitablement. Les scrapers qui ne s’identifient pas usurpent souvent un UA de navigateur — c’est pourquoi la limitation de débit et la détection de bots ne peuvent pas reposer uniquement sur les chaînes UA. La gestion moderne des bots combine UA avec l’empreinte TLS (JA3/JA4), les paramètres HTTP/2, les signaux souris/clavier et les marqueurs de navigateur sans tête. Référence : RFC 9110 §10.1.5 — User-Agent.
Exemple concret
Vous souhaitez détecter « l’utilisateur est sur iOS Safari » pour une vérification de compatibilité Web Push. Reniflement UA naïf : /iPhone|iPad|iPod/.test(ua) && /Safari/.test(ua) && !/CriOS|FxiOS/.test(ua). Sauf que : iPadOS 13+ envoie l’UA « desktop » par défaut, donc iPad n’est pas dans la chaîne. Sauf que : Chrome sur iOS contient « CriOS » mais utilise en fait WebKit dessous (politique de plateforme Apple), donc la négation est incorrecte. Sauf que : un utilisateur avec une extension de confidentialité peut usurper son UA en Firefox-sur-Linux. Détectez les fonctionnalités à la place : 'serviceWorker' in navigator && 'PushManager' in window && Notification.permission !== 'denied' — trois vérifications en ligne, fonctionne sur chaque navigateur, ne se casse pas quand Apple sort iOS 18 l’année prochaine.
Quand et pourquoi cela est important
La logique basée sur UA est la principale source de bugs « fonctionne dans Chrome, cassé dans Safari » qui ne sont pas réellement des bugs de moteur de navigateur. Côté serveur, traitez le UA comme un signal d’analyse grossier uniquement — ne limitez jamais les fonctionnalités, le contenu ou les vérifications de sécurité dessus. Côté client, préférez la détection de fonctionnalités (Modernizr ou vérifications manuelles pour l’API spécifique dont vous avez besoin). Pour l’atténuation des bots, combinez UA avec l’empreinte TLS (akamai-bot-manager, Cloudflare bot fight mode), les signaux comportementaux (entropie des mouvements de souris) et les défis proof-of-work (hCaptcha, Turnstile). Référence : W3C WICG — User-Agent Client Hints.
Frequently asked questions
- Qu’est-ce que l’en-tête HTTP User-Agent ?
- L’en-tête User-Agent est envoyé par les navigateurs et les clients HTTP avec chaque requête pour identifier le logiciel effectuant la requête — incluant généralement le nom du navigateur, la version, le moteur et le système d’exploitation. Les serveurs l’utilisent pour adapter les réponses ou les analyses.
- Pourquoi la chaîne User-Agent est-elle notoirement peu fiable ?
- Pour la rétrocompatibilité, les navigateurs ont historiquement prétendu être d’autres navigateurs (Chrome dit qu’il est Mozilla/5.0 ; Safari ; Chrome). Cela s’est accumulé sur des décennies alors que les sites servaient du contenu uniquement aux chaînes reconnues. Les chaînes User-Agent modernes contiennent des tokens pour plusieurs navigateurs qu’ils ne sont pas, rendant leur analyse pour la détection des fonctionnalités peu fiable.
- Quelle est la différence entre User-Agent et Client Hints ?
- User-Agent est une seule chaîne d’en-tête envoyée automatiquement avec chaque requête, contenant tout à la fois. Client Hints (Sec-CH-UA-*) est une API plus récente qui permet aux serveurs de demander uniquement les attributs d’appareil spécifiques dont ils ont besoin, réduisant la surface d’empreinte digitale et donnant aux navigateurs plus de contrôle sur la confidentialité.
Related
Published May 15, 2026 · Last reviewed May 31, 2026