Analyseur User-Agent
Analyser les chaînes user agent en composants
User-Agent String
Enter a User-Agent string to parse
L'analyseur de User-Agent extrait le nom du navigateur, la version, le moteur de rendu, le système d'exploitation et le type d'appareil à partir des chaînes d'en-tête User-Agent, en décodant le format notoirement alambiqué qui a accumulé des décennies de tokens de compatibilité. Collez une chaîne comme Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 et obtenez un résumé clair : Chrome 120.0, moteur Blink, Windows 10, Desktop.
Comprendre les chaînes User-Agent
L'en-tête User-Agent est l'une des parties les plus anciennes et les plus mal comprises du protocole HTTP. Il a été conçu à l'origine comme un simple identifiant -- un moyen pour un navigateur d'indiquer au serveur son nom et sa version afin que le serveur puisse adapter sa réponse. Netscape Navigator envoyait Mozilla/1.0, et c'était tout. Mais des décennies de guerres de navigateurs, de hacks de compatibilité et de détection de fonctionnalités ont transformé la chaîne User-Agent en un enchevêtrement de tokens historiques qui vous en disent bien plus sur l'histoire des navigateurs web que sur le client effectuant réellement la requête.
Le problème a commencé lorsqu'Internet Explorer a voulu recevoir le même contenu que les serveurs envoyaient à Netscape Navigator. IE s'est donc déclaré "compatible Mozilla". Puis Firefox est arrivé en tant que véritable successeur de Mozilla et a utilisé le même préfixe. Safari a ajouté "like Gecko" pour que les serveurs vérifiant Gecko lui servent du contenu moderne. Chrome a copié la chaîne entière de Safari et ajouté son propre token. Edge a copié la chaîne de Chrome et ajouté encore un autre token. Le résultat est qu'aujourd'hui le User-Agent de Chrome contient "Mozilla", "AppleWebKit", "KHTML", "Gecko", "Chrome" et "Safari" -- et il n'est aucune de ces choses sauf Chrome.
Pour les développeurs et les administrateurs système, l'analyse du User-Agent reste nécessaire malgré ses particularités. L'analyse des logs d'accès nécessite de connaître les navigateurs et systèmes d'exploitation utilisés par vos visiteurs. La détection des bots dépend de l'identification des robots comme Googlebot et Bingbot. Les rapports de bugs spécifiques à un navigateur nécessitent la version exacte pour reproduire le problème. Et l'analyse du trafic nécessite de distinguer les utilisateurs mobiles des utilisateurs desktop. Ce parseur élimine le bruit historique et extrait les informations qui comptent réellement : quel navigateur, quelle version, quel OS et quel type d'appareil.
Comment analyser une chaîne User-Agent
- Collez une chaîne User-Agent dans le champ de saisie (depuis des logs d'accès, les DevTools du navigateur ou des en-têtes HTTP).
- Cliquez sur Parse pour extraire tous les composants identifiables.
- Consultez les résultats analysés : famille de navigateur, version, moteur, OS, type d'appareil et détection de bot.
Exemples d'analyse de User-Agent
| Chaîne User-Agent | Navigateur | Version | Moteur | OS | Appareil |
|---|---|---|---|---|---|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 | Chrome | 120.0 | Blink | Windows 10 | Desktop |
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15 | Safari | 17.2 | WebKit | macOS 14.2 | Desktop |
Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0 | Firefox | 121.0 | Gecko | Linux | Desktop |
Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1 | Safari Mobile | 17.2 | WebKit | iOS 17.2 | Mobile |
Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.43 Mobile Safari/537.36 | Chrome Mobile | 120.0 | Blink | Android 14 | Mobile |
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | Googlebot | 2.1 | -- | -- | Bot |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.91 | Edge | 120.0 | Blink | Windows 10 | Desktop |
Quand utiliser l'analyseur de User-Agent
- Analyse des logs d'accès serveur -- Analysez les chaînes User-Agent des logs de votre serveur web pour comprendre la répartition de votre trafic par navigateur, OS et type d'appareil.
- Identification du trafic de bots -- Détectez les robots d'indexation connus (Googlebot, Bingbot, Baiduspider) et distinguez-les du trafic humain dans vos analyses.
- Débogage de problèmes spécifiques à un navigateur -- Extrayez la version exacte du navigateur et le moteur de rendu depuis le User-Agent d'un rapport de bug pour reproduire le problème.
- Test de la logique de détection de navigateur -- Validez que votre code de détection côté serveur ou côté client identifie correctement les différents formats de User-Agent.
- Compréhension des tendances de trafic -- Déterminez le ratio mobile/desktop et les versions d'OS utilisées par vos visiteurs pour orienter vos priorités de test.
- Analyse des logs de sécurité -- Identifiez les chaînes User-Agent suspectes dans les logs d'accès qui pourraient indiquer des attaques automatisées ou du scraping.
Pourquoi les chaînes User-Agent sont si confuses
L'histoire de l'usurpation de navigateur
Chaque navigateur moderne commence son User-Agent par Mozilla/5.0 en raison d'une série de hacks de compatibilité historiques :
- Netscape Navigator (le Mozilla original) fut le premier navigateur à introduire l'en-tête
User-Agentet utilisaitMozilla/version. - Internet Explorer se présentait comme
Mozilla/4.0 (compatible; MSIE...)pour que les serveurs vérifiant "Mozilla" lui envoient le même contenu riche. - Firefox utilisait
Mozilla/5.0... Gecko/...en tant que successeur de Netscape. - Safari a ajouté
(KHTML, like Gecko)pour que les serveurs recherchant "Gecko" lui envoient le contenu moderne. - Chrome a copié le token de Safari et ajouté le sien, aboutissant à une chaîne qui prétend être à la fois Mozilla, comme KHTML, comme Gecko, Chrome et Safari simultanément.
- Edge (basé sur Chromium) a ajouté
Edg/à la chaîne déjà longue de Chrome.
Signification de chaque token
Dans un User-Agent Chrome typique :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Mozilla/5.0-- Token de compatibilité historique (sans signification aujourd'hui)Windows NT 10.0; Win64; x64-- Système d'exploitation et architectureAppleWebKit/537.36-- Version du moteur de rendu (valeur figée dans Chromium)KHTML, like Gecko-- Déclaration de compatibilitéChrome/120.0.0.0-- Le navigateur et la version réelsSafari/537.36-- Autre token de compatibilité (Chrome n'est pas Safari)
Client Hints : l'alternative moderne
Les User-Agent Client Hints (en-têtes Sec-CH-UA-*) sont le remplacement moderne, fournissant des données structurées à faible entropie :
Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
L'analyseur reconnaît à la fois les chaînes User-Agent traditionnelles et les valeurs Client Hints modernes.
Correspondance des versions Windows
Les versions Windows dans les chaînes User-Agent utilisent des numéros de version NT internes qui ne correspondent pas aux noms marketing :
| Valeur User-Agent | Version Windows |
|---|---|
Windows NT 10.0 | Windows 10 ou Windows 11 |
Windows NT 6.3 | Windows 8.1 |
Windows NT 6.2 | Windows 8 |
Windows NT 6.1 | Windows 7 |
Windows NT 6.0 | Windows Vista |
Windows NT 5.1 | Windows XP |
Notez que Windows 10 et Windows 11 partagent la même valeur Windows NT 10.0. Les distinguer nécessite les User-Agent Client Hints (Sec-CH-UA-Platform-Version).
Conseils pratiques pour l'analyse de User-Agent
Lors de l'analyse des logs d'accès, n'essayez pas d'analyser les chaînes User-Agent avec des expressions régulières. Le format est trop irrégulier et comporte trop de variations pour être traité de manière fiable avec des regex. Utilisez une bibliothèque d'analyse dédiée comme ua-parser-js (JavaScript), user-agents (Python) ou browscap (PHP). Ces bibliothèques maintiennent des bases de données de motifs connus et sont mises à jour à mesure que de nouveaux navigateurs et versions sortent.
Pour la détection des bots, rappelez-vous que les bots légitimes s'identifient généralement clairement dans leurs chaînes User-Agent, mais les bots malveillants usurpent presque toujours des chaînes de vrais navigateurs. Si vous voyez un User-Agent prétendant être Chrome 120 sur Windows 10 mais que la requête provient d'une adresse IP de data center, effectue 100 requêtes par seconde et ignore le robots.txt, c'est presque certainement un bot quelle que soit la chaîne User-Agent. Une détection de bots efficace combine l'analyse du User-Agent avec des signaux comportementaux comme le taux de requêtes, la réputation de l'IP et les capacités d'exécution JavaScript.
La tendance dans l'écosystème des navigateurs est de réduire les informations dans les chaînes User-Agent. Chrome a progressivement figé des parties de son User-Agent (la version WebKit est figée à 537.36, la version mineure de Chrome est toujours .0.0.0) et pousse les développeurs vers les Client Hints pour les informations détaillées. Si vous construisez de nouveaux systèmes nécessitant des informations sur le navigateur ou l'OS, envisagez de supporter les Client Hints dès le départ plutôt que de vous fier uniquement à l'analyse traditionnelle du User-Agent, car la quantité d'informations utiles dans la chaîne User-Agent ne fera que diminuer avec le temps.
Questions fréquentes
Comment distinguer Chrome d'Edge ?
Edge basé sur Chromium inclut un token Edg/ (attention : pas "Edge") à la fin de sa chaîne User-Agent. Les deux partagent les mêmes tokens Chrome/ et Safari/. Recherchez spécifiquement Edg/ pour distinguer Edge de Chrome.
La détection du type d'appareil via le User-Agent est-elle fiable ?
Pour les catégories larges (mobile vs desktop), la détection par User-Agent est raisonnablement fiable. La présence de Mobile dans la chaîne indique un appareil mobile. Cependant, la détection des tablettes est moins cohérente, et certains navigateurs mobiles en "mode desktop" envoient des chaînes User-Agent de type desktop. Pour une détection plus fiable, combinez l'analyse du User-Agent avec des techniques de responsive design.
Comment détecter les bots et robots d'indexation ?
Les bots légitimes s'identifient généralement clairement : Googlebot, bingbot, Baiduspider, YandexBot, DuckDuckBot. L'analyseur maintient une liste d'identifiants de bots connus. Cependant, les bots malveillants usurpent souvent les chaînes User-Agent de vrais navigateurs, donc le User-Agent seul n'est pas suffisant pour une détection de bots critique en matière de sécurité.
Pourquoi Chrome indique-t-il "Safari" dans son User-Agent ?
Chrome inclut Safari/537.36 pour la compatibilité historique. Lorsque Chrome a été lancé, de nombreux sites web vérifiaient "Safari" pour servir du contenu compatible WebKit. Chrome a hérité de WebKit (avant de le forker en Blink) et a conservé le token Safari pour éviter de recevoir du contenu dégradé. C'est purement un artefact de compatibilité et cela ne signifie pas que Chrome est lié à Safari.
Qu'est-ce que l'initiative "reduced User-Agent" ?
À partir de Chrome 110, Google a progressivement réduit les informations dans la chaîne User-Agent de Chrome dans le cadre de l'initiative Privacy Sandbox. L'objectif est de minimiser le fingerprinting passif en figeant ou en supprimant les numéros de version détaillés, les détails de l'OS et les informations sur le modèle de l'appareil. Les développeurs qui ont besoin de ces informations sont encouragés à utiliser les User-Agent Client Hints à la place, qui nécessitent un opt-in explicite du serveur et sont plus respectueux de la vie privée.
Peut-on se fier à la version de l'OS dans une chaîne User-Agent ?
Généralement oui pour identifier la famille d'OS (Windows, macOS, Linux, iOS, Android), mais la version spécifique peut être figée ou inexacte. Chrome sur Windows indique Windows NT 10.0 aussi bien pour Windows 10 que pour Windows 11. Chrome sur macOS peut figer la version à une valeur spécifique. Pour une détection précise de la version de l'OS, utilisez les Client Hints ou des méthodes de détection côté serveur.
Outils associés
- HTTP Header Formatter - Analyser et formater les en-têtes de requête HTTP, y compris le User-Agent
- Cookie Header Parser - Analyser les cookies envoyés avec le User-Agent dans les requêtes
- curl Command Builder - Construire des commandes curl avec des en-têtes User-Agent personnalisés pour les tests
- HTTP Status Code Lookup - Rechercher les codes de statut renvoyés aux différents User-Agents
- CORS Header Explainer - Comprendre le comportement CORS selon les différents navigateurs