Analyseur User-Agent

Traité dans ce navigateur

Limite de texte : 2000000 caractères

Cet outil n’envoie pas votre saisie.

Le ticket dit « ça marche pas sur Safari ». On lit la chaîne. Chrome sous iOS se présente en `CriOS` et reprend beaucoup de tokens Safari. Ne bloquez pas un client, et n’en faites pas une preuve d’identité.

Le support colle Mozilla/5.0 (iPhone; CPU iPhone OS …) et le log nginx affiche la même famille de chaînes. Le job : nommer une famille de navigateur, un OS, un indice mobile / tablette / bureau — assez pour reproduire un bug, pas assez pour un dossier.

Encode64, côté outils FR : tickets, journaux d’accès, triage de crawlers, QA. Toute l’analyse est heuristique. Il n’existe pas de « vérité unique » derrière Mozilla/5.0 : le token est historique, repris par WebKit, puis Chrome, puis Edge.

Un code HTTP : référence HTTP. Un plan d’adressage : sous-réseau IPv4. Bloquer un crawl : robots.txt.

Lire une ligne nginx ou un ticket

Le log_format nginx classique enregistre "$http_user_agent" à la fin de la ligne combined. Encode64 rappelle l’extraction :

awk -F'"' '{print $6}' /var/log/nginx/access.log | head

Collez une chaîne brute, pas tout le fichier. On n’est pas GoAccess (ITwars, wiki Evolix) : pas de top navigateurs, pas de bande passante, pas de 404 agrégés.

Cas fréquents en France :

  • Ticket « Safari » alors que la chaîne contient CriOS : c’est Chrome sur iPhone, moteur WebKit.
  • Edg/ au milieu d’une soupe Chrome/… Safari/… : Edge, pas « Chrome tout court ».
  • Une UA vide, curl, wget, ou un bot qui se prétend Chrome.
  • Desktop Chrome avec une version gelée : la chaîne ment ; les Client Hints (Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile) portent le détail — et seulement si le serveur a envoyé Accept-CH en HTTPS (DeviceAtlas le décrit pour nginx).

Cette page ne récupère pas les hints de vos visiteurs. Elle tokenize ce que vous collez.

Ce que la chaîne ne prouve pas

  • Une identité. Pas une preuve juridique, pas un fingerprinting, pas un inventaire matériel opposable. La CNIL n’a pas besoin d’un parseur UA pour un traitement de données : l’UA seul n’identifie pas une personne de façon fiable, et s’en servir pour profiler serait un autre sujet.
  • Un bot « officiel ». Googlebot dans la chaîne n’est pas une vérif. Inverse + direct DNS sur l’IP.
  • Une décision de sécu. Allowlist, débit, auth : l’attaquant envoie ce qu’il veut.
  • Un modèle d’iPhone précis. Les UA réduites et les tokens hérités (AppleWebKit, KHTML, like Gecko) laissent des champs en « inconnu » — c’est préférable à une invention.

Si vous variez le HTML selon l’UA, attention au cache CDN : Encode64 le note, une Vary trop large explose les clés. Côté front, préférez la détection de fonctionnalités.

Comment l’utiliser

  1. Collez la chaîne issue de DevTools, du ticket ou d’une ligne nginx.
  2. Lisez famille / OS / classe d’appareil comme des indices. Recoupez avec une capture d’écran.
  3. Un 404 / 502 : la référence HTTP. Un crawler à calmer : robots.txt, puis Search Console — pas un blocage « si Safari alors 403 » fondé sur ce parseur.

C’est un décodeur de chaîne, pas un labo forensique.

FAQ

Puis-je m’en servir comme preuve forensique ou pour identifier une personne ?

Non. L’en-tête est déclaré par le client, facile à usurper, et de plus en plus réduit (Chrome gèle une partie de la chaîne). Encode64 et MDN : utile pour un ticket ou un log, faible pour l’auth, une allowlist ou un dossier. Ce n’est pas une empreinte appareil.

Chrome affiche une vieille version. C’est faux ?

Souvent. Le desktop Chrome a gelé une partie du User-Agent ; la version réelle circule dans les Client Hints (Sec-CH-UA). Cette page ne voit que la chaîne collée, pas les hints de vos visiteurs.

Comment extraire l’UA d’un access.log nginx ?

Beaucoup de formats combined mettent l’UA dans le 6ᵉ champ entre guillemets : awk -F'"' '{print $6}' /var/log/nginx/access.log. Collez une ligne ici. Un 403 / 502 se lit dans la référence HTTP, pas dans l’UA.

La chaîne dit Googlebot. Je peux faire confiance ?

Non. N’importe qui envoie ce token. La vérif Google : DNS inverse de l’IP, domaine Google, DNS direct qui retombe sur la même IP. Pour décourager un crawl : robots.txt — ça ne désindexe pas à soi seul.

Chrome iOS, c’est Safari ou Chrome ?

Les deux tokens sont là. La doc Chrome : même base que Mobile Safari, avec CriOS/ à la place de Version/. Le moteur sous iOS reste WebKit. Croisez avec une capture : le parseur se trompe.

L’UA que je colle est-il envoyé chez vous ?

Non. L’analyse reste dans le navigateur. Un UA de prod dans un ticket Jira suffit souvent, sans le recopier sur un site opaque.

Outils liés