23Jul
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 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 eenvoudig, maar gebruikersagenten zijn na verloop van tijd een puinhoop geworden.
De basisprincipes
Wanneer uw browser verbinding maakt met een website, bevat deze een User-Agent-veld in zijn 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 naar mobiele browsers, moderne pagina's naar moderne browsers en een bericht 'voer een upgrade van uw browser' naar Internet Explorer 6 door.
Gebruikersagenten 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-bitversie van Windows( WOW64), en de browser zelf is Firefox 12.
Laten we nu eens kijken naar de user agent van Internet Explorer 9, die:
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-renderingengine. U kunt echter iets verwarren - IE identificeert zichzelf als Mozilla.
We komen hier zo over 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 net alsof ze allebei zijnMozilla en Safari. Om te begrijpen waarom, moeten we de geschiedenis van gebruikersagenten 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 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 deze ook frames. IE heeft echter geen webpagina's met frames ontvangen, omdat webservers deze gewoon naar Mozilla-browsers hebben verzonden. Om dit probleem te verhelpen, 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 voor Gecko waren ontworpen. 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 geven er niet echt om wat de exacte user-agentstring is: ze controleren of het een specifiek woord bevat.
Gebruik
Webservers gebruiken user-agents voor verschillende doeleinden, waaronder:
- Verschillende webpagina's bedienen voor verschillende webbrowsers. Dit kan voorgoed worden gebruikt - bijvoorbeeld om eenvoudigere webpagina's aan te bieden aan oudere browsers - of kwaadaardig - bijvoorbeeld om een "Deze webpagina moet worden bekeken in Internet Explorer" bericht weer te geven.
- Verschillende inhoud weergeven voor verschillende besturingssystemen, bijvoorbeeld door een afgeslankte pagina op mobiele apparaten weer te geven.
- 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 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.(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 user-agentstring van een mobiele browser en u ziet de mobiele versies van webpagina's op uw bureaublad.