Uw browser stuurt zijn user-agent naar elke website waarmee u verbinding maakt. We hebben er over geschreven het wijzigen van de user-agent van uw browser voorheen - maar wat is eigenlijk een user-agent eigenlijk?
Een user-agent is een "string" - dat wil zeggen een regel tekst - die de browser en het besturingssysteem identificeert voor de webserver. Dit klinkt simpel, maar user agents zijn in de loop van de tijd een zooitje 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 user-agentveld varieert van browser tot browser. Elke browser heeft zijn eigen, onderscheidende user-agent. In wezen is een user-agent een manier waarop een browser 'Hallo, ik ben Mozilla Firefox voor Windows' of 'Hallo, ik ben Safari op een iPhone' tegen een webserver kan zeggen.
De webserver kan deze informatie gebruiken om verschillende webpagina's naar verschillende webbrowsers en verschillende besturingssystemen te sturen. Een website kan bijvoorbeeld mobiele pagina's naar mobiele browsers sturen, moderne pagina's naar moderne browsers en een bericht "upgrade uw browser" naar Internet Explorer 6.
User Agents onderzoeken
Hier is bijvoorbeeld de user-agent van Firefox in 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, namelijk:
Mozilla / 5.0 (compatibel; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)
De user-agent-string identificeert de browser als IE 9 met de Trident 5-rendering-engine. U kunt echter iets verwarrends ontdekken: IE identificeert zichzelf als Mozilla.
We komen daar zo 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 alsof het zowel Mozilla als Safari is. Om te begrijpen waarom, moeten we de geschiedenis van user-agents en browsers 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 omgedoopt tot Netscape), en de user-agent was Mozilla / 1.0. Mozilla was een geavanceerdere browser dan Mosaic - het ondersteunde met name frames. Webservers controleerden of de user-agent het woord Mozilla bevatte en stuurden pagina's met frames naar Mozilla-browsers. Webservers stuurden de oude pagina's zonder frames naar andere browsers.
Uiteindelijk kwam Microsoft's Internet Explorer langs en ondersteunde het ook frames. IE ontving echter geen webpagina's met frames, omdat webservers deze gewoon naar Mozilla-browsers stuurden. 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 stuurden IE de moderne webpagina's. Andere browsers die later kwamen, deden hetzelfde.
Uiteindelijk zochten sommige servers naar het woord Gecko - de rendering-engine van Firefox - en dienden Gecko-browsers op andere 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 voor Gecko zouden krijgen. WebKit was gebaseerd op KHTML - toen het werd ontwikkeld, hebben ze het woord WebKit toegevoegd en de originele "KHTML, zoals Gecko" -regel behouden voor compatibiliteitsdoeleinden. Op deze manier bleven browserontwikkelaars in de loop van de tijd woorden toevoegen aan hun user agents.
Het maakt webservers niet echt uit wat de exacte string van de user-agent is - ze controleren gewoon of het een specifiek woord bevat.
Toepassingen
Webservers gebruiken user agents voor verschillende doeleinden, waaronder:
- Verschillende webpagina's aanbieden aan verschillende webbrowsers. Dit kan ten goede worden gebruikt - bijvoorbeeld om eenvoudigere webpagina's aan oudere browsers te leveren - of kwaad - bijvoorbeeld om een bericht '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.
- Statistieken verzamelen over de browsers en besturingssystemen die door hun gebruikers worden gebruikt. Als u ooit statistieken over het marktaandeel van uw browser ziet, is dit hoe deze worden verkregen.
Webcrawlende bots gebruiken ook 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 gaan. (Ja, dit betekent dat u soms registratieschermen kunt omzeilen door uw user-agent in te stellen op Googlebot.)
Webservers kunnen ook opdrachten geven aan specifieke bots (of alle bots) met behulp van het robots.txt-bestand. Een webserver kan bijvoorbeeld een specifieke bot vertellen om weg te gaan, 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-agent-strings.
Alle grote browsers bevatten manieren om stel aangepaste user agents in , zodat u kunt zien waarnaar webservers naar verschillende browsers verzenden. Stel uw desktopbrowser bijvoorbeeld in op de user-agentreeks van een mobiele browser en u ziet de mobiele versies van webpagina's op uw desktop.