La chaîne ci-dessus correspond à l'en-tête User-Agent exacte que votre navigateur envoie lors des requêtes HTTP ordinaires aujourd'hui. J'ai créé cette page après qu'un déploiement de production Next.js a servi la mauvaise mise en page aux utilisateurs d'iPhone : notre middleware analysait encore un jeton de bureau figé alors que les Client Hints signalaient déjà Sec-CH-UA-Mobile: ?1. L'erreur venait de nous, pas d'Apple, mais cela m'a appris à enregistrer à la fois l'ancienne chaîne et les en-têtes Client Hints dans chaque ticket de SSR. Ci-dessous, je détaille la signification de chaque jeton, comment les User-Agent Client Hints remplacent l'ancien jeu de détection, et quand la simulation est légitime pour les tests ou nuisible pour la vie privée.
Qu'est-ce qu'une chaîne User-Agent en réalité ?
L'en-tête de requête User-Agent est un champ de texte unique défini dans la norme RFC 9110. Historiquement, les serveurs l'analysaient avec des expressions régulières pour deviner le moteur de rendu, le système d'exploitation et la catégorie d'appareil. Le format n'est pas standardisé au-delà des conventions : des jetons de produit comme Chrome/136.0.0.0, des jetons de compatibilité comme KHTML, like Gecko, et un bloc de commentaires entre parenthèses qui liste souvent les détails de la plateforme.
Presque tous les navigateurs commencent encore par Mozilla/5.0 car Netscape dominait autrefois le marché et les sites bloquaient les fonctionnalités sans ce jeton. IE a dû déclarer sa compatibilité, et tous les autres ont hérité de cette habitude. Le commentaire ne signifie pas que vous utilisez Mozilla Firefox ; c'est une syntaxe historique qui a survécu à trois décennies d'évolution du web.
Les User-Agent Client Hints et la chaîne figée
La réduction de l'User-Agent de Chromium maintient volontairement la chaîne historique simplifiée : moins de détails de version, moins d'entropie pour la plateforme. Les données détaillées ont été déplacées vers des en-têtes optionnels appelés Client Hints (indices client) standardisés dans la RFC 8942. Parmi les exemples, on trouve Sec-CH-UA (liste des marques), Sec-CH-UA-Mobile, et Sec-CH-UA-Platform. JavaScript peut lire ces marques structurées via navigator.userAgentData lorsque la page utilise un contexte sécurisé et que les autorisations le permettent.
Les en-têtes côté serveur doivent demander ces indices de manière explicite (par exemple, avec l'en-tête de réponse Accept-CH), sinon ils ne sont jamais envoyés. C'est pourquoi les applications modernes enregistrent les deux mondes : l'UA figé pour la rétrocompatibilité et les Client Hints pour une détection mobile précise. Notre page de résumé du navigateur complète celle-ci par une analyse lisible lorsque les Client Hints sont disponibles.
Comment décoder une chaîne UA (trois exemples réels)
Chromium de bureau sur Windows intègre généralement Windows NT 10.0 dans le commentaire et se termine par Chrome/… Safari/537.36 parce que Blink conserve le jeton WebKit pour la compatibilité avec les sites. Safari mobile sur iPhone utilise iPhone; CPU iPhone OS … et Version/… Mobile/… Safari/… sans afficher "Chrome", bien que WebKit alimente également ce moteur. Les robots d'indexation automatisés raccourcissent le modèle et ajoutent des noms de produit comme Googlebot ou GPTBot au début.
# Modèles illustratifs (les versions changent constamment)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 … Chrome/136.0.0.0 Safari/537.36
Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) … Version/18.4 Mobile/15E148 Safari/604.1
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)Copiez la chaîne active depuis l'encadré principal de cette page lorsque vous signalez des bogues. Ne vous fiez pas aux captures d'écran de blogs ; les éditeurs publient de nouvelles versions majeures toutes les quatre semaines.
Comment les sites utilisent (et abusent) encore de l'User-Agent
Les utilisations légitimes comprennent l'analyse statistique, la fourniture d'une feuille de style mobile plus légère et le blocage des clients obsolètes incapables d'exécuter le JavaScript requis. Les utilisations problématiques incluent les listes d'autorisation codées en dur, la détection du contournement des paywalls basée uniquement sur l'UA, et les pipelines d'empreintes numériques (fingerprinting) qui hachent la chaîne complète avec les données du canvas.
La meilleure pratique consiste à utiliser la détection de fonctionnalités : tester si Intl, fetch ou une propriété CSS spécifique existe avant de bifurquer. La gestion des bots combine l'UA avec la réputation de l'IP, l'empreinte TLS et les défis JavaScript car simuler l'User-Agent est trivial.
Simuler son UA pour les tests (et pourquoi ne pas l'utiliser en permanence)
Chrome DevTools → Network conditions → User agent vous permet d'émuler un autre appareil pour tester la mise en page. Firefox propose une option similaire dans son mode de conception adaptative. Des extensions peuvent appliquer un faux UA persistant sur vos onglets, ce qui est pratique pour reproduire le problème d'un client, mais dangereux si vous oubliez qu'il est activé.
La simulation ne modifie ni votre IP, ni votre fuseau horaire, ni vos capacités matérielles. Les sites qui recoupent les signaux vous identifieront toujours correctement. Les systèmes de détection de fraude peuvent signaler des paires incohérentes (UA mobile + taille d'écran de bureau issue de notre outil d'analyse d'écran).
User-agents des robots d'indexation et bots courants
| Bot / Robot | Fragment typique d'UA | Objectif | Respecte le robots.txt |
|---|---|---|---|
| Googlebot | Googlebot/2.1 | Indexation de recherche | Oui (politique + robots) |
| Bingbot | bingbot/2.0 | Indexation de recherche Bing | Oui |
| GPTBot | GPTBot/1.0 | Indexation d'entraînement OpenAI (exclusion via robots) | Respecte les règles d'exclusion si configuré |
| ClaudeBot | ClaudeBot/1.0 | Indexeur d'Anthropic | Respecte les règles d'exclusion si configuré |
| PerplexityBot | PerplexityBot/1.0 | Indexation des réponses Perplexity | Respecte les règles d'exclusion si configuré |
| AhrefsBot | AhrefsBot/7.0 | Analyse des backlinks SEO | Oui (robot commercial) |
Vérifiez les affirmations avec un DNS inversé pour les principaux moteurs de recherche et configurez vos propres règles dans robots.txt. Les logiciels malveillants usurpent souvent l'identité de Googlebot ; ne faites pas confiance à la seule chaîne de caractères.
Foire aux questions (FAQ)
Pourquoi l'User-Agent de chaque navigateur commence-t-il par "Mozilla" ?
Pour des raisons historiques de compatibilité. Les premiers serveurs recherchaient le mot-clé Mozilla pour activer les fonctionnalités de JavaScript et CSS. Les nouveaux moteurs ont adopté ce préfixe pour ne pas être bloqués. Le nom est resté, bien que la part de marché de Netscape se soit envolée il y a plusieurs décennies.
Que sont les User-Agent Client Hints ?
Il s'agit d'en-têtes de requête HTTP (et d'une API JavaScript) qui exposent des métadonnées structurées sur la marque du navigateur, sa version, l'appareil mobile et la plateforme sur une base d'acceptation volontaire. Ils remplacent l'analyse de la chaîne UA historique pour les sites qui envoient l'en-tête Accept-CH et reçoivent les autorisations correspondantes.
Comment modifier mon User-Agent ?
Utilisez l'émulation d'appareil des DevTools pour des tests temporaires, ou une extension dédiée pour des modifications persistantes. Pensez à désactiver ces surcharges après vos tests sous peine de chasser des bogues de mise en page fantômes. La simulation ne change pas votre adresse IP ni vos empreintes TLS.
Un site web peut-il détecter si je simule mon User-Agent ?
Souvent oui. Les incohérences entre l'UA, les Client Hints, les dimensions de l'écran, la prise en charge du tactile et le moteur de rendu WebGL sont faciles à identifier. Les systèmes de sécurité sérieux ne s'appuient pas uniquement sur l'UA, mais une incohérence augmente le score de suspicion.
Quel User-Agent Googlebot utilise-t-il ?
Google publishes multiple agents (smartphone, desktop, images). Un modèle courant est Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html). Vérifiez avec la documentation des robots de Google et validez l'IP d'origine par DNS inversé.
Outils connexes
Résumé lisible du navigateur et du moteur : Quel est mon navigateur ?. Résolution de l'affichage et DPR : Quelle est ma résolution d'écran ?. Informations sur la carte graphique WebGL : Quel est mon WebGL / GPU ?.
Sources citées ci-dessus
- RFC 9110: Sémantique HTTP (en-tête User-Agent)
- RFC 8942: Structure des Client Hints
- Réduction de l'User-Agent de Chromium
- Présentation des robots de Google Search