Quand tu visites un site web, ton navigateur envoie une petite carte d'identité
au serveur. Cette carte s'appelle le User-Agent, une simple chaîne de texte
qui annonce quel navigateur tu utilises, sur quel système d'exploitation,
et parfois sur quel type d'appareil.
Elle voyage dans les en-têtes de la requête, ces informations techniques que
ton navigateur ajoute à chaque appel et dont nous avons parlé dans le chapitre sur
le protocole HTTP. Voici typiquement ce que Chrome
sur Windows envoie.
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Six noms de produits pour un seul navigateur. Cette absurdité mérite une explication.
Pourquoi c'est aussi illisible ?
Tu as remarqué que Chrome s'annonce aussi comme Mozilla, AppleWebKit, KHTML,
Gecko et Safari. C'est absurde, mais c'est historique.
Au milieu des années 90, Netscape Navigator (dont le nom de code interne était Mozilla)
était le seul navigateur à supporter certaines fonctionnalités avancées, les cadres
par exemple. Les serveurs lisaient donc le User-Agent et, si ce n'était pas Mozilla,
ils renvoyaient une version dégradée du site.
Quand Internet Explorer est arrivé, il savait afficher ces mêmes fonctionnalités,
mais les serveurs continuaient à lui envoyer la version au rabais. Sa parade a été
de mentir, en se présentant sous la forme
Mozilla/2.0 (compatible; MSIE 3.0; Windows 95). Traduction, "je suis Mozilla,
et accessoirement je m'appelle MSIE".
Chaque nouveau venu a fait pareil pour ne pas être exclu. Safari s'est annoncé comme
Mozilla, Chrome s'est annoncé comme Mozilla et Safari, Edge s'annonce aujourd'hui comme
Mozilla, Safari et Chrome. Le résultat est un empilement archéologique où presque
aucune information n'est vraie, à part le nom du navigateur réellement utilisé,
perdu au milieu de la liste.
La règle qui se dégage de trente ans de web, une donnée envoyée par le client peut toujours être fausse. Le User-Agent n'est pas une preuve d'identité, c'est une déclaration sur l'honneur.
À quoi ça sert ?
- L'adaptation du contenu : un site peut détecter qu'un visiteur est sur mobile et lui envoyer une version adaptée, ou proposer le bon lien de téléchargement (Windows, Mac, Linux) pour un logiciel.
- Les statistiques : savoir quel pourcentage de visiteurs utilise Chrome, Firefox ou Safari aide à prioriser les tests de compatibilité, et à décider quand on peut enfin arrêter de supporter une vieille version.
- Le debugging : quand un bug est signalé, le User-Agent aide les développeurs à reproduire le problème avec le bon navigateur et le bon système.
- L'identification des robots : les robots d'indexation comme Googlebot ou Bingbot s'identifient via leur User-Agent, ce qui permet à un serveur de les traiter différemment des vrais visiteurs.
- La sécurité : un User-Agent absent, vide ou grossièrement bricolé est un signal faible d'automatisation, souvent utilisé par les protections anti-bot en complément d'autres indices.
User-Agent et robots
Le fichier robots.txt, posé à la racine d'un site, s'adresse justement aux
robots en les désignant par leur User-Agent. C'est un fichier de bonne conduite qui
dit qui a le droit d'explorer quoi, comme nous l'avons vu dans le chapitre sur
le référencement.
User-agent: Googlebot
Disallow: /admin/
User-agent: *
Disallow: /panier/Attention, ce fichier n'a aucun pouvoir de contrainte. Il est respecté par les robots des grands moteurs de recherche, et allègrement ignoré par les aspirateurs de contenu et les scrapers mal intentionnés, qui se déguisent d'ailleurs volontiers en Chrome pour passer inaperçus.
L'adaptation au mobile, une fausse bonne idée
Pendant des années, la méthode standard pour servir une version mobile consistait à
lire le User-Agent, y chercher des mots-clés comme "iPhone" ou "Android", et rediriger
vers un site séparé.
C'était fragile. Chaque nouvel appareil obligeait à mettre à jour la liste des mots-clés,
et une tablette rangée du mauvais côté de la frontière recevait une interface pensée
pour un écran de six pouces. Cette détection s'appelle le "browser sniffing", et elle a
laissé de mauvais souvenirs à toute une génération de développeurs.
L'approche moderne consiste à ne plus se demander qui est le visiteur mais de quelle place
il dispose, en adaptant la mise en page à la largeur réelle de l'écran. C'est le principe
du responsive design. Plutôt que de tester le nom
du navigateur, on teste aussi la présence effective d'une fonctionnalité, ce qu'on appelle
la détection de capacités.
Les dérives : le fingerprinting
Le User-Agent, combiné à d'autres informations comme la résolution d'écran, les polices
installées, le fuseau horaire, la langue ou la façon dont ta carte graphique dessine une
image de test, permet de constituer une empreinte quasi unique de chaque visiteur.
C'est le fingerprinting.
Prise isolément, aucune de ces informations n'est identifiante. Des millions de personnes
utilisent Chrome sur Windows. Mais la combinaison de quinze détails anodins finit par ne
correspondre qu'à toi, un peu comme une devinette dont chaque indice élimine la moitié
des candidats.
Contrairement aux cookies, le fingerprinting ne stocke
rien sur ton appareil. Il se contente de recouper des informations que ton navigateur
partage déjà. Vider son historique n'y change donc rien, ce qui le rend difficile à
bloquer et franchement problématique pour la vie privée. Le
RGPD y voit un traitement de données personnelles, et la
directive ePrivacy, celle-là même qui a imposé les bannières cookies, couvre toute lecture
d'informations dans ton appareil, empreinte comprise. Le consentement est donc requis au
même titre que pour un cookie publicitaire.
Vers la fin du User-Agent ?
Les navigateurs ont pris le problème au sérieux, chacun à sa manière.
Safari et Firefox ont choisi de figer l'essentiel de leur User-Agent, en le gardant
volontairement vague et aussi uniforme que possible d'un visiteur à l'autre.
Moins il varie, moins il aide à distinguer quelqu'un dans la foule.
Google a lancé de son côté le projet User-Agent Reduction, qui rabote progressivement
les informations transmises par Chrome. Le numéro de version détaillé et la version
exacte du système ont été remplacés par des valeurs génériques. À la place arrive un
mécanisme appelé Client Hints, où le serveur demande explicitement les informations dont
il a besoin, et où le navigateur reste libre de répondre ou non.
Exemple :
Un site de téléchargement a besoin de savoir si tu es sur Windows ou sur Mac pour proposer le bon installeur. Il le demande explicitement, le navigateur répond "Windows", et l'échange s'arrête là. Le site n'apprend ni ta version exacte du système, ni ton modèle de processeur, contrairement à ce que l'ancien User-Agent laissait fuiter à chaque requête sans que personne ne le demande.
Le compromis est plutôt sain. Les sites gardent ce qui leur est nécessaire pour
fonctionner, les utilisateurs récupèrent du contrôle sur ce qu'ils partagent, et le web
perd un peu de sa mémoire encombrante.
Pour toi, en pratique, retiens surtout deux choses. Le User-Agent reste utile pour
comprendre ton audience et diagnostiquer un bug, mais il ne faut jamais construire une
fonctionnalité critique dessus, ni le prendre pour une donnée fiable. Ce n'est pas un
passeport, c'est un badge fait maison.