
Code-Garage #80 - Quels secrets renferme le user-agent d'un navigateur ?
Durée: 9m59s
Date de sortie: 06/11/2023
Numéro de version, système d'exploitation et d'autres informations... utiles ? C'est ce que nous allons découvrir ensemble !
Salut et bienvenue dans ce nouvel épisode du podcast de Code Garage,
je m'appelle Nicolas Brondin-Bernard et aujourd'hui on va parler des User Agents.
Alors en général, un User Agents ou agent utilisateur en français,
c'est un terme qui est utilisé pour désigner la mauvaise chose.
A l'origine, un User Agents c'est le logiciel qu'on utilise pour naviguer sur Internet.
C'est le programme informatique qui fait l'interface entre une personne et le web,
qu'on appelle plus communément le navigateur.
Mais évidemment, vous aurez compris que la plupart du temps,
on utilise le terme User Agents comme un raccourci pour désigner la chaîne de
caractère qui va identifier justement ce User Agents et qui est présent dans les requêtes
HTTP sous la forme d'une entête qu'on appelle justement l'entête User Agents.
Alors qu'est-ce qu'elle contient exactement cette chaîne de caractères ?
L'objectif de l'entête User Agents, c'est de spécifier le plus précisément possible
le navigateur utilisé et sa version.
Mais du coup pour faire ça, eh bien il contient une en général
une quantité d'informations vraiment conséquentes.
Prenons par exemple mon User Agents actuel.
On a modila slash 5.0, entre parenthèses windows NT10.v.
Win64.x64.rv2.109.0 et ensuite on a gecko slash 2010.01 et plus loin firefox slash 119.
Alors vous l'aurez compris en écoutant juste ces User Agents ?
Eh bien oui effectivement je suis sous windows et je suis sous Firefox.
Mais maintenant si jamais j'ouvre mon navigateur Chrome,
qu'est-ce qui se passe quand je regarde mon User Agents ?
Slash 5.0, windows NT10, etc.
Mais j'ai aussi applewebkit slash 537.36, entre parenthèses khtml like gecko
et plus loin chrome slash 118.0.0.0, plus loin safari slash 537.36.
Alors pourquoi est-ce qu'il y a autant d'infos exactement ?
Donc d'abord on comprend bien qu'il y a des informations sur le navigateur en lui-même
quand je suis sous Firefox et qu'on me dit Firefox slash 119.0,
on comprend bien que c'est la version 119 de Firefox
et toutes les informations entre parenthèses, quand je suis en windows NT10.0,
et bien windows NT c'est le moteur de rendu graphique de windows qui est utilisé.
Ensuite win64, et bien c'est la version 64 bit de windows et rv2.109,
et bien c'est le revision number, donc c'est le numéro de version précis de windows
sous lequel je suis actuellement.
Si jamais vous êtes sous Ubuntu, vous aurez probablement quelque chose comme x11
qui est pareil le moteur de rendu graphique d'Ubuntu, puis Ubuntu,
et ensuite des choses qui vous indiquent que vous êtes sur une distribution Linux, etc.
Mais effectivement ça fait quand même d'une énormément d'infos,
mais surtout on se retrouve par exemple quand j'ouvre le navigateur Chrome
qu'on a des infos qui n'ont pas l'air de correspondre à un user agent normal.
En fait il faut savoir qu'un user agent,
c'est d'abord il n'a aucune obligation légale.
Vous avez certains identifiants comme les adresses Mac qui ont des obligations légales.
Dans une adresse Mac, les premiers numéros ils sont censés correspondre à un code constructeur.
Donc à partir d'une adresse Mac, vous retrouvez le constructeur.
Ça c'est pas du tout quelque chose qui est présent dans les user agents.
Donc n'importe quel navigateur peut déclarer n'importe quel user agent sans restriction.
Et dans les débuts du web, ça a joué une très très grande place.
Ça avait un très très grand rôle puisque à l'époque de Modzilla,
Netscape et Internet Explorer, eh bien tous ces navigateurs
supportaient des fonctionnalités différentes et avaient aussi des rendus très différents.
Donc si vous ouvriez un site avec Netscape ou Internet Explorer,
vous aviez parfois une page web complètement différente parce que les sites web et les
créateurs de ces sites web filtraient les user agents utilisateurs pour avoir un site web
compatible avec ces différents navigateurs puisque vous n'aviez pas envie d'avoir
quelque chose qui n'est pas du tout interprété par Internet Explorer et de l'afficher et que
ce soit complètement cassé. Sauf que qu'est-ce qui se passe si vous êtes Internet Explorer,
vous êtes Microsoft plutôt et que vous sortez une nouvelle version d'Internet Explorer avec
une fonctionnalité similaire à Modzilla, c'est-à-dire que vous implementez des fonctionnalités
qui sont compatibles avec Modzilla. Eh bien sur la plupart des sites web,
votre nouvelle fonctionnalité ne va pas s'afficher puisque votre user agent sera toujours
Internet Explorer ou IE1, c'était quand même les dernières versions, mais IE1,
IE1, IE2, IE4 peu importe. Eh bien comme les gens qui concevaient les sites à l'époque
filtraient les user agents et affichaient des choses différentes, ils vont encore détecter
que vous êtes un Internet Explorer et tant qu'ils n'auront pas mis à jour leur base de user
agents pour dire tu affiches ça parce que c'est compatible maintenant Internet Explorer,
eh bien ça allait jamais être affiché et le site allait s'afficher comme avant. C'est pour ça
que la plupart des navigateurs ont en réalité commencé à empiler les uns sur les autres
des user agents qui étaient compatibles avec certaines fonctionnalités. C'est pour ça qu'aujourd'hui
sur n'importe quel navigateur que vous trouviez, le premier, la première information que vous
allez avoir dans votre user agent c'est modila slash 5.0. Pourtant évidemment on n'a plus aucun
navigateur qui s'appelle modila, modila c'est une société qui crée, alors dans les dernières
noms c'est pas une société je crois que c'est une organisation à but non lucratif qui édite
le navigateur firefox mais modila c'est plus un navigateur sauf qu'à l'époque tout était
compatible avec modila 5 et donc tous les user agents contenaient modila 5 et on retrouve encore
la même mécanique aujourd'hui quand on a chrome qui nous annonce apple webkit 537 chrome safari
slash 537 etc. et bien on se rend compte qu'il y a encore un empilement des user agents avec
énormément d'informations. Donc théoriquement qu'est ce qui contient le user agent et bien
ça devrait simplement être le nom du navigateur slash la version sauf que ça la vraie version
on la trouve souvent à la fin des user agents et on a plein de choses avant et entre parenthèses
et bien on va avoir des informations soit sur le système d'exploitation utilisé ou parfois le moteur
de rendu utilisé par le navigateur lui même comme gecko par exemple. Alors est ce qu'on utilise
encore les user agents aujourd'hui ? Et bien oui ils sont encore utilisés mais on ne va pas se mentir
ils sont en voie de déclin. Aujourd'hui ils sont utilisés principalement pour détecter les spam
et les robots ok ? Si vous avez des requêtes HTTP sur votre serveur qui passe par un user agent
qui est toujours le même avec une IP qui est toujours la même et qui parcourt l'entierté de votre
site à raison d'une page par seconde et bien c'est sûrement que vous avez un robot qui est en train
de parcourir et d'aspirer l'entierté du contenu de votre site. Donc ça c'est une possibilité mais
vous avez aussi des robots qui sont légitimes on va dire par exemple le user agent googlebot
correspond au bot d'indexation de google qui va parcourir votre site pour indexer votre site et le
mettre dans ses résultats de recherche et ce robot d'indexation on peut lui bloquer l'accès grâce
à son user agent pardon qui est connu et en l'intégrant dans le fichier robots.txt où on va pouvoir
lui dire et bien non tu n'accède pas à cette page là cette page là cette page là ce qui fait
que si on a des pages qui sont qu'on veut refuser l'accès à google mais autoriser l'accès à Bing
et bien c'est possible on va simplement bloquer uniquement le robot d'indexation de google. Mais
évidemment vous l'aurez compris le fait de bloquer certaines fonctionnalités à certains
utilisateurs parce qu'ils sont sous Chrome ou sous Firefox c'est très très peu utilisé et d'ailleurs
l'équipe de Chrome chez google a fait des propositions et a commencé à mettre en place de nouveaux
systèmes qu'ils appellent les browser hints pour mettre le user agent comme une fonctionnalité
qui serait vraiment dépréciée parce qu'effectivement on le voit il y a eu tellement d'erreurs par le
passé et tellement de déviations dans l'utilisation de cette fonctionnalité que ça a plus vraiment
de sens à l'heure d'aujourd'hui. J'espère que cet épisode vous aura plu qui vous aura appris quelque
chose et que vous en aurez un petit peu plus appris sur les user agents qui ne sont malheureusement
pas quelque chose sur lesquels on peut se fier à 100% ça vous l'aurez j'espère compris. Moi je vous
donne rendez-vous la semaine prochaine pour un prochain épisode du podcast ou directement sur
code-garage.fr pour retrouver tous nos podcasts tous nos articles et évidemment tous nos cours
formation d'ailleurs je vous invite vraiment à aller y faire un tour tout de suite puisque on vient
de sortir une nouvelle formation sur Strapi. Strapi c'est un CMS headless si vous ne connaissez pas vous
allez voir si vous faites des sites et des applis ça peut réellement vous changer la vie moi ça a
changé ma vie de développeur donc je vous donne rendez-vous sur code-garage.fr et sinon à la semaine
prochaine pour un prochain épisode du podcast salut !
Episode suivant:
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Code-Garage #81 - La compression Gzip