FreeToGenerate.com

La plupart des champs qu’affiche un analyseur de user agent sont des constantes que le navigateur envoie à tout le monde. Celui-ci dit lesquels.

111

Ce que dit la chaîne

Navigateur
Chrome
Réel

Le jeton de produit qui nomme le navigateur est la seule partie de la chaîne encore liée à ce qui tourne vraiment.

Version
140.0.0.0
Figé

Chromium envoie les numéros de build et de correctif sous la forme 0.0.0 depuis Chrome 101 : ici, seul le numéro majeur est un fait.

Moteur
Blink
Réel

Déduit du navigateur plutôt que lu dans la chaîne, car les jetons de moteur qu’elle contient sont historiques.

Plateforme
Windows
Réel

La famille du système d’exploitation reste annoncée honnêtement par tous les navigateurs.

Version du système
10.0
Ambigu

Windows 11 reste NT 10.0, et les deux moteurs écrivent cette ligne en dur — le commentaire du code de Gecko dit que c’est pour que Microsoft ne puisse pas modifier une valeur sensible à la compatibilité sans son veto. Aucune chaîne User-Agent ne distingue Windows 10 de Windows 11.

Architecture
x86-64
Figé

Chromium réduit envoie Win64; x64 depuis n’importe quelle machine Windows, y compris une machine ARM.

Format
Desktop
Réel

Le bit mobile a survécu à la réduction délibérément, parce que les sites en ont besoin pour choisir une mise en page.

Ce que la chaîne prétend être

Chacun de ces jetons est là parce qu’un site l’a un jour vérifié, et le retirer aujourd’hui casserait ce site.

  • Mozilla/5.0pas ce navigateur

    Nomme Netscape, qu’aucun navigateur n’est depuis 1998.

  • AppleWebKit/537.36pas ce navigateur

    Nomme WebKit, le moteur dont Chromium s’est séparé en 2013.

  • KHTML, like Geckopas ce navigateur

    Nomme KHTML et Gecko, deux moteurs que n’emploient ni Chromium ni WebKit.

  • Safari/537.36pas ce navigateur

    Nomme Safari, que ce navigateur n’est pas.

  • Chrome/140.0.0.0vrai

Aussi disponible en : English · Español · Português · العربية

Analyseur de user agent

Chaque champ étiqueté selon ce qu’il reflète de la machine réelle : réel, figé, un plancher, ambigu, ou un jeton nommant un navigateur qui n’est pas celui-ci.

Qu’est-ce qu’un analyseur de user agent ?

Chaque requête que fait votre navigateur porte un en-tête User-Agent : une ligne de texte nommant le navigateur, sa version et la machine sur laquelle il tourne. Un analyseur de user agent la démonte et vous dit ce qu’elle contient. Les tableaux de bord d’audience, les journaux de serveur et les pages de téléchargement en emploient tous un.

L’ennui, c’est que cette ligne a cessé d’être vraie. Les navigateurs ont passé ces dernières années à remplacer ses parties précises par des constantes — la même valeur envoyée depuis n’importe quelle machine — parce qu’une chaîne détaillée est un excellent moyen de reconnaître une personne d’un site à l’autre. Ce qui reste ressemble toujours à une description de votre ordinateur, et n’en est plus une pour l’essentiel.

Cet analyseur fait donc le travail habituel, puis la seule chose que les autres ne font pas : il étiquette chaque champ selon ce qu’il reflète de la machine réelle. Réel signifie que la valeur vient de votre ordinateur. Figé signifie que le navigateur envoie exactement cette valeur à tout le monde. Un plancher signifie que la vérité est ce nombre ou davantage. Ambigu signifie que la valeur est authentique et n’identifie pourtant pas ce qu’elle nomme.

Comment l’utiliser

  1. Collez une chaîne User-Agent, ou prenez la vôtre. Le bouton insère ce que votre navigateur envoie à l’instant. Les chaînes tirées d’un journal de serveur, d’un export d’audience ou d’un rapport de bogue fonctionnent de la même façon.
  2. Lisez l’étiquette à côté de chaque champ, pas seulement la valeur. Chaque ligne porte une phrase disant pourquoi elle est fiable ou pourquoi elle ne l’est pas : vous voyez d’un coup d’œil quelles parties d’une ligne de journal méritent qu’on s’en serve.
  3. Regardez la liste de jetons en dessous. Elle montre tous les navigateurs et moteurs que la chaîne prétend être, et marque celui qui est réellement vrai. Dans une chaîne Chrome moderne, c’est un sur cinq.

Deux navigateurs figent les mêmes champs pour des raisons opposées

Chrome a réduit son User-Agent délibérément, et la forme retenue n’est pas une supposition : le moteur construit la chaîne à partir d’une liste fixe de valeurs de plateforme. Il y en a huit, dont cinq pour l’ordinateur de bureau — pour une version donnée de Chrome, il existe donc exactement cinq chaînes de ce type au monde. Les numéros de build et de correctif sont envoyés sous la forme 0.0.0 depuis Chrome 101. La version d’Android est la constante 10 et le modèle de l’appareil est la seule lettre K.

Firefox fige la même ligne Windows — et le commentaire de son code donne une raison toute différente. Il écrit NT 10.0 en dur pour que Microsoft ne puisse pas modifier une valeur sensible à la compatibilité sans l’accord préalable de Firefox. C’est un veto de compatibilité, pas une mesure de confidentialité, et il tombe précisément sur la valeur à laquelle Chrome est arrivé par l’autre chemin.

Sur Android, les deux divergent pour de bon, et c’est la partie qu’aucun analyseur ne montre. Chrome envoie Android 10 depuis n’importe quel appareil. Firefox emploie 10 comme plancher : en dessous de 10 il annonce 10, et à partir de 10 il annonce le vrai numéro, parce que certains sites d’entreprise refusent les clients trop anciens. Un Android 13 dans une ligne de journal est donc véridique si Firefox l’a envoyé et impossible si c’est Chrome, et Android 10 veut dire au plus 10 chez l’un et ne veut rien dire du tout chez l’autre. Le même jeton, deux sens, et lequel s’applique ne se déduit pas du jeton.

Le champ auquel on croit le plus est le moins instructif de tous. Un Chromebook annonce le build 14541.0.0, bien trop précis pour ressembler à un bouche-trou, et identique sur tous les Chromebook de la planète.

Limites honnêtes

Cet outil ne peut pas retrouver ce que la chaîne ne contient pas. Si vous collez un User-Agent Chrome moderne, aucun analyseur au monde — celui-ci compris — ne peut vous donner la version de Windows, celle de macOS, celle d’Android ni l’appareil. Ces valeurs ne sont pas cachées derrière un paiement ni derrière une expression régulière plus habile. Elles ne sont tout simplement pas dans la chaîne.

Le cas de Windows est celui qu’il faut retenir, car c’est là que tous les analyseurs commettent la même erreur avec le même aplomb. Windows 11 s’identifie encore comme NT 10.0 : un analyseur qui affiche Windows 10 nomme donc un système qu’il est incapable de distinguer de l’autre. Mesuré face à un analyseur très répandu, toutes les versions de système qu’il annonce à partir d’une chaîne Chromium figée sont des constantes : il dit Windows 10, Mac OS 10.15.7 et Android 10, et annonce un modèle d’appareil K. Il n’a tort d’aucune manière qu’il pourrait éviter — il rapporte ce que la chaîne dit.

Un User-Agent est par ailleurs déclaré par le client lui-même, et l’a toujours été. N’importe qui peut envoyer n’importe quoi : il existe des extensions pour le changer, et le résultat de l’analyse d’une chaîne inventée est une lecture fidèle d’un mensonge. Traitez ce que sort un analyseur comme ce que le client a dit, non comme ce que le client est.

Le remplacement prévu, une API qui livre les mêmes informations en éléments structurés, existe dans les navigateurs Chromium et nulle part ailleurs. Firefox et Safari ont tous deux refusé de l’implémenter, et les positions publiques des deux moteurs consignent pourquoi. Pour une large part des visiteurs, la chaîne figée n’est donc pas un vestige de secours : c’est tout ce qu’il y a.

Pourquoi est-ce gratuit ?

Parce que cela ne coûte rien à faire tourner. L’analyse a lieu dans votre navigateur ; rien n’est envoyé, aucun serveur ne voit la chaîne et aucun compte n’entre en jeu.

Les règles viennent du code source des deux moteurs qui écrivent ces chaînes, et non de la documentation à leur sujet ; les tests qui les vérifient sont conservés à côté de l’outil.