septembre
2008
Ceux qui ont déjà jeté un coup d’oeil à l’User-Agent de leur navigateur auront sûrement remarqué la présence quasi-constante du terme « Mozilla« , et cela quel que soit le navigateur (même Internet Explorer) !
Pour rappel, l’User-Agent est un champ envoyé par les clients Web afin d’informer le serveur sur la nature du client. On devrait normalement y retrouver le nom et la version du navigateur…
Toutefois, depuis le début du web, le petit monde des navigateurs n’a cessé d’évoluer, et à plusieurs reprises un navigateur s’est retrouvé en situation de domination, souvent du fait de ses innovations technologiques. De là est née la notion d’user-agent sniffing, système consistant à présenter le site différemment selon le navigateur utilisé. L’objectif était de pouvoir utiliser ces nouvelles technologies tout en présentant une version simplifié aux autres navigateurs.
C’est à partir de là que l’user-agent à été quelque peu détourné…
Petit retour en arrière en 1993 avec la sortie de Mosaic, le navigateur du centre de recherches américain (NCSA), qui a fortement contribué à la popularité du Web à ses débuts (c’était le premier navigateur à supporter les images et les formulaires !).
NCSA Mosaic se présentait donc aux serveurs qu’il contactait de la manière la plus simple, avec une chaine du style :
NCSA_Mosaic/2.0 (Windows 3.1)
On retrouve logiquement le nom du navigateur ainsi que sa version, suivis entre parenthèse d’information annexes tels que le nom et la version du système d’exploitation…
A cette époque là, Mosaic était le navigateur dominant. Mais dès 1994 une bonne partie de son équipe de développement quitte le NCSA avec l’objectif de développer un navigateur concurrent utilisant le nom de code de Mozilla (pour Mosaic Killa), qui se voulait être le tueur de Mozaic. Ce nom de code a ensuite été abandonné au profit de Netscape lors de sa sortie, mais il a continuer à être utiliser pour se présenter aux serveurs :
Mozilla/1.0 (Win3.1)
Bien plus avancée que Mosaic, ses parts de marché ont augmenté très rapidement, si bien que Netscape a rapidement détrôné le roi Mosaic, et cela a également abouti à la première cassure du web : Netscape a introduit le concept des « frames ». Aujourd’hui fortement déconseillé pour plusieurs raisons, elles permettaient à l’époque de simplifier le développement de sites statiques en présentant un menu ou un cadre identique sur toutes les pages, sans duplication de code. De ce fait certains sites ont commencés à présenter deux versions :
- Une version avec frames pour les user-agents Mozilla.
- Une version simple pour les autres navigateurs.
L’année suivante, Microsoft entre dans la danse avec son navigateur Internet Explorer, qui se présentait également de manière tout à fait classique (si ce n’est que le numéro de version correspondait à la version de Windows, puisque le navigateur était intégré dans un pack « Plus ») :
Microsoft Internet Explorer/4.0b1 (Windows 95)
Mais le navigateur de Microsoft s’est vite retrouvé face à un problème majeur : bien qu’il supporte parfaitement les frames, la plupart des sites web ne lui présentaient que la version simple puisqu’il ne le considérait comme incapable de les afficher. Ceci tout simplement car il ne le reconnaissait pas comme Netscape, et le classait donc avec tous les autres navigateurs. De plus, à l’époque la faible part de marché d’Internet Explorer n’incitait pas vraiment les webmasters à mettre à jour leurs mécanismes de présentation.
Pour pallier à cela, Microsoft a rapidement sortie une nouvelle version de son navigateur, qui se déclarait « compatible » Netscape en imitant son user-agent :
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
Internet Explorer 2.0 se présentait donc sous le nom de code Mozilla, en précisant la version de Netscape avec laquelle il était compatible. C’est d’ailleurs ce qu’indique le terme « compatible« , alors que la version exacte du navigateur est venue se greffer dans la zone alors réservé aux informations annexes.
Désormais les serveurs confondaient Internet Explorer et Netscape, et présentaient les mêmes pages à ces deux navigateurs…
Les deux navigateurs ont continués à évoluer en conservant le même système d’identification. Seuls quelques informations annexes sont venus s’ajouter aux fils des années, comme le niveau de cryptographies (I/U), la langue du système ou d’autres informations propre au système…
Au fil du temps, des versions et des technologies, Internet Explorer gagna la « guerre des navigateurs » et enterra petit à petit Netscape. Pourtant IE6 continuait de se présenter comme Netscape via le code Mozilla/4.0 pour rester compatible avec le plus large choix de site :
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
De nouveau, la différenciation a été faite entre Internet Explorer et les navigateurs plus anciens, qui ne supportait pas forcément les technologies mises en places par ce dernier…
Mais en mourant Netscape est devenue libre et est revenue à la vie via la Suite Mozilla, qui a simplement repris le nom de code original du navigateur. Il utilisa alors dans son user-agent le numéro de version 5.0, puisque la Suite Mozilla aurait dû correspondre à Netscape 5.0 :
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826
On note juste l’apparition du numéro de version de la suite (rv:1.1) ainsi que la version précise du moteur de rendu utilisé (Gecko/20020826). Et justement, Gesko, le moteur de rendu de la suite Mozilla a rapidement surclassé celui d’Internet Explorer.
Puis la fondation Mozilla a pris une autre optique en « cassant » sa suite en produit indépendant, ce qui aboutit à la naissance de Firefox et du succès que l’on connait. Logiquement il hérita du même user-agent afin de conserver la même compatibilité (surtout qu’il utilisait le même moteur de rendu), tout en y ajoutant son nom et numéro de version :
Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0
Firefox, en prise avec un IE6 vieillissant, a petit à petit obtenu une part de marché assez conséquente pour ne plus être négligeable, bien qu’Internet Explorer ait conservé sa dominance. On s’est alors retrouvé avec une nouvelle différenciation basé sur le terme Gecko, afin de présenter un code différents à Firefox et Internet Explorer
Mais pendant ce temps là de nombreux navigateurs concurrents ont également évolué, et se sont également retrouvé obligé d’imiter l’user-agent d’Internet Explorer ou de Mozilla/Firefox. En effet il se retrouvait parfois avec du code obsolète et érroné.
Sous Linux, le navigateur Konqueror et son moteur de rendu KHTML ont d’abord opté pour l’utilisation du Mozilla/5.0 de Mozilla/Firefox :
Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)
Mais du fait de l’abscence du mot-clé Gecko, on continuait à le prendre pour Internet Explorer et à lui fournir du code parfois obsolète par erreur, si bien que son urser-agent a évolué afin d’intégrer ce mot-clef :
Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Et plus récemment :
Mozilla/5.0 (compatible; Konqueror/4.0; Linux) KHTML/4.0.82 (like Gecko)
De son coté, Opera permet à ses utilisateurs de changer d’user-agent selon les sites qu’ils visitent, et propose donc trois user-agent différent permettant d’imiter les autres navigateurs :
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fr) Opera 9.26
Mozilla/5.0 (Windows NT 5.1; U; fr; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.26
Le premier correspond à son propre user-agent, et les deux autres imitent celui d’Internet Explorer et de Firefox.
Dans le même temps, on a vu naitre plusieurs navigateurs (ou sur-couches) qui se contentent d’utiliser un moteur de rendu existant. Si certains ont tenté de présenter leur propre user-agent, comme ce fut le cas initialement pour Avant Browser :
Avant Browser (http://www.avantbrowser.com)
Ils se sont vite résigné à reprendre l’user-agent du navigateur dont il utilise le moteur, en l’enrichissant du nom de leurs propres navigateurs :
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; iOpus-I-M; QXW03416; .NET CLR 1.1.4322)
On retrouve ce même principe dans la plupart de ces navigateurs alternatifs, comme ici avec Netscape 8 qui peut utiliser les moteur de rendu de Firefox ou d’Internet Explorer :
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) Netscape/8.0.1
Certain, comme Apple pour son navigateur Safari, ont conçus un nouveau moteur de rendu (WebKit) basé sur un moteur existant (KHTML). Ils ont donc utilisé un user-agent similaire à celui de Konqueror, en l’enrichissant d’information propre à leur moteur :
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5
Enfin, récemment Google s’est invité à la fête en sortant son navigateur Chrome, qui utilise lui-même le moteur de rendu WebKit de Safari, et qui utilise l’user-agent suivant :
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13
Donc, pour récapituler nous avons :
- Le navigateur Chrome qui se fait passer pour Safari parce qu’il utilise le même moteur de rendu AppleWebKit.
- Ce dernier se fait également passé pour KHTML puisqu’il est basé dessus.
- KHTML se faisant passé pour Gecko, puisqu’il permet les mêmes fonctionnalités.
- Et comme tous les navigateurs, il se fait également passé pour Mozilla pour une sombre histoire de frame au siècle dernier…
Bref, l’user-agent est devenu un beau n’importe-quoi, où tout le monde se fait passer pour tout le monde dans la plus grande confusion…
Source : WebAIM Blog
4 Commentaires + Ajouter un commentaire
Tutoriels
Discussions
- jre 1.5, tomcat 6.0 et multi processeurs
- [ fuite ] memoire
- Classes, méthodes private
- [REFLEXION] Connaitre toutes les classes qui implémentent une interface
- Difference de performances Unix/Windows d'un programme?
- Recuperation du nom des parametres
- Possibilité d'accéder au type générique en runtime
- L'apparition du mot-clé const est-il prévu dans une version à venir du JDK?
- Définition exacte de @Override
super intéressant ce cours d’histoire d’informatique…
Très intéressant, merci
Excellent et très comique
Merci pour ce cours d’histoire !
Merci beaucoup pour la traduction de cet article.
Quand est-il de l’user-agent dans les téléphones portables ? (opera mini / webkit des iphones)
Reprennent-ils celui de leur parent ?