Wat is de user-agent van een browser?
Uw browser stuurt zijn user-agent naar elke website waarmee u verbinding maakt. We hebben eerder geschreven over het wijzigen van de user-agent van uw browser, maar wat is toch precies een user-agent?
Een user-agent is een "string" - dat wil zeggen een regel tekst - die de browser en het besturingssysteem identificeert voor de webserver. Dit klinkt eenvoudig, maar user agents zijn na verloop van tijd een puinhoop geworden.
De basis
Wanneer uw browser verbinding maakt met een website, bevat deze een veld User-Agent in de HTTP-header. De inhoud van het veld User Agent varieert van browser tot browser. Elke browser heeft zijn eigen, onderscheidende user-agent. In wezen is een user-agent een manier voor een browser om 'Hallo, ik ben Mozilla Firefox op Windows' of 'Hallo, ik ben Safari op een iPhone' te zeggen tegen een webserver.
De webserver kan deze informatie gebruiken om verschillende webpagina's aan te bieden aan verschillende webbrowsers en verschillende besturingssystemen. Een website kan bijvoorbeeld mobiele pagina's verzenden naar mobiele browsers, moderne pagina's naar moderne browsers en een bericht 'upgrade uw browser' naar Internet Explorer 6.
Onderzoek naar gebruikersagenten
Dit is bijvoorbeeld de user-agent van Firefox op Windows 7:
Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 12.0) Gecko / 20100101 Firefox / 12.0
Deze user-agent vertelt de webserver nogal wat: het besturingssysteem is Windows 7 (codenaam Windows NT 6.1), het is een 64-bits versie van Windows (WOW64) en de browser zelf is Firefox 12.
Laten we nu eens kijken naar de user agent van Internet Explorer 9, die is:
Mozilla / 5.0 (compatibel; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)
De user-agent-tekenreeks identificeert de browser als IE 9 met de Trident 5-renderingengine. U kunt echter iets verwarren - IE identificeert zichzelf als Mozilla.
Daar komen we zo dadelijk op terug. Laten we eerst eens kijken naar de user agent van Google Chrome:
Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 536.5 (KHTML, zoals Gecko) Chrome / 19.0.1084.52 Safari / 536.5
De plot wordt dikker: Chrome doet zich voor als zowel Mozilla als Safari. Om te begrijpen waarom, zullen we de geschiedenis van gebruikersagenten en browsers moeten onderzoeken.
De User Agent String Mess
Mosaic was een van de eerste browsers. De user-agent-string was NCSA_Mosaic / 2.0. Later kwam Mozilla langs (later hernoemd tot Netscape), en de user-agent was Mozilla / 1.0. Mozilla was een geavanceerdere browser dan Mosaic - in het bijzonder ondersteunde het frames. Webservers gecontroleerd om te zien dat de user-agent het woord Mozilla bevatte en pagina's met frames naar Mozilla-browsers stuurde. Voor andere browsers hebben webservers de oude pagina's zonder frames verzonden.
Uiteindelijk kwam Microsoft Internet Explorer langs en ondersteunde het ook frames. IE heeft echter geen webpagina's met frames ontvangen, omdat webservers deze gewoon naar Mozilla-browsers hebben verzonden. Om dit probleem op te lossen, heeft Microsoft het woord Mozilla aan hun user-agent toegevoegd en aanvullende informatie toegevoegd (het woord "compatibel" en een verwijzing naar IE.) Webservers waren blij het woord Mozilla te zien en hebben IE de moderne webpagina's gestuurd. Andere browsers die later kwamen deden hetzelfde.
Uiteindelijk zochten sommige servers naar het woord Gecko - Firefox's rendering-engine - en bedienden Gecko-browsers verschillende pagina's dan oudere browsers. KHTML - oorspronkelijk ontwikkeld voor Konquerer op de KDE-desktop van Linux - voegde de woorden "like Gecko" toe, zodat ze ook de moderne pagina's kregen die ontworpen waren voor Gecko. WebKit was gebaseerd op KHTML - toen het werd ontwikkeld, voegden ze het woord WebKit toe en bewaarden ze de originele "KHTML, like Gecko" -regel voor compatibiliteitsdoeleinden. Op deze manier bleven browserontwikkelaars na verloop van tijd woorden toevoegen aan hun user-agents.
Webservers maken zich niet echt druk om wat de exacte user-agentstring is: ze controleren of het een specifiek woord bevat.
Toepassingen
Webservers gebruiken user agents voor verschillende doeleinden, waaronder:
- Verschillende webpagina's aanbieden aan verschillende webbrowsers. Dit kan voorgoed worden gebruikt - bijvoorbeeld om eenvoudigere webpagina's aan te bieden aan oudere browsers - of kwaadaardig - om bijvoorbeeld de melding "Deze webpagina moet in Internet Explorer worden bekeken" weer te geven.
- Verschillende inhoud weergeven voor verschillende besturingssystemen, bijvoorbeeld door een afgeslankte pagina weer te geven op mobiele apparaten.
- Verzamelen van statistieken van de browsers en besturingssystemen die door hun gebruikers worden gebruikt. Als u ooit browsemarktaandeelstatistieken ziet, is dit hoe ze worden verkregen.
Web-crawling bots maken ook gebruik van user agents. De webcrawler van Google identificeert zichzelf bijvoorbeeld als:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
Webservers kunnen bots een speciale behandeling geven, bijvoorbeeld door ze door verplichte registratieschermen te laten. (Ja, dit betekent dat u registratieschermen soms kunt omzeilen door uw user-agent in te stellen op Googlebot.)
Webservers kunnen ook orders geven aan specifieke bots (of alle bots) met behulp van het robots.txt-bestand. Een webserver zou bijvoorbeeld kunnen zeggen dat een specifieke bot weggaat, of een andere bot vertellen om alleen bepaalde delen van de website te indexeren. In het robots.txt-bestand worden de bots geïdentificeerd aan de hand van hun user-agentstrings.
Alle belangrijke browsers bevatten manieren om aangepaste gebruikersagenten in te stellen, zodat u kunt zien waarnaar webservers naar verschillende browsers verzenden. Stel uw desktopbrowser bijvoorbeeld in op de reeks gebruikersagenten van een mobiele browser en u ziet de mobiele versies van webpagina's op uw bureaublad.