User Agent

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein User Agent ist ein Client-Programm, mit dem ein Netzwerkdienst genutzt werden kann. Der User Agent ist die Schnittstelle zum Benutzer, die Inhalte des Dienstes darstellt und Befehle des Benutzers entgegennimmt. Beispiele für User Agents sind Webbrowser, E-Mail-Programme, Newsreader und IRC-Clients.

Viele User Agents übertragen ihren Namen in Header-Zeilen bei Anfragen (Requests) an den Server. Der Begriff „User Agent“ wird dadurch auch als Synonym für diesen Parameter in einem HTTP-Header benutzt.

Webbrowser[Bearbeiten]

Webbrowser verwenden zum Abruf von Webseiten das Protokoll HTTP, normiert in Standard RFC 2616. Der Standard sieht einen Header namens „User-Agent“ zur Übertragung des Namens und der Version der Browsersoftware an den Webserver vor. Der Header ist optional, aber empfohlen, und wird von den allermeisten Webbrowsern und sonstiger Clientsoftware (zum Beispiel Webcrawlern) verwendet. Er wird bei jedem einzelnen Seitenabruf übertragen.

Als vorgesehenen Verwendungszweck des Headers gibt der Standard an:

  • Statistische Erhebungen
  • Fehlersuche
  • Auslieferung von Inhalten, die für spezielle Clientsoftware maßgeschneidert ist.

Aufbau des HTTP-User-Agent-Headers[Bearbeiten]

Der User-Agent-Header in HTTP enthält Namen, Version und Kommentar zu einer oder mehreren Komponenten des Clients. Diese haben jeweils folgenden Aufbau:

Name / Version ( Kommentar )

Der Kommentar ist optional, sein Inhalt nicht weiter normiert. Viele Browserprogramme bringen darin mehr oder minder menschenlesbare Informationen zum Betriebssystem und sogar zur Hardwareplattform unter, auf der sie laufen. Andere verzichten vollständig darauf.

Zum Beispiel stammt der folgende Header vom Textmodus-Browser Lynx:

Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6c

Hier werden Namen und Versionen des Browsers selbst und mehrerer Bibliotheken angegeben. Kommentare fehlen. Im Gegensatz dazu stammt der User-Agent-String von Opera 9.63:

Opera/9.63 (Macintosh; Intel Mac OS X; U; en) Presto/2.1.1

Hier kann man aus dem Kommentar ablesen, dass der Browser auf einem Apple Macintosh mit Intel-Prozessor läuft, sowie einige weitere Informationen. Der Buchstabe „U“ besagt, dass die im Browser verfügbaren kryptographischen Algorithmen nicht durch amerikanische Ausfuhrverbote eingeschränkt sind, der Teil „en“ gibt an, dass der Browser in der englischen Sprachversion vorliegt. Zusätzlich dazu wird die Versionsnummer der Rendering-Engine Presto angegeben.

Mozilla-Standard[Bearbeiten]

Bei der Einführung des Netscape Navigator im Jahre 1994 führte dieser im User-Agent-String den Namen „Mozilla“, dies war der interne Codename des Projekts. Der Header sah also beispielsweise so aus:

Mozilla/1.0N (Windows)

Dies war noch vor der Standardisierung von HTTP, und damit des Headerformats, so dass damalige Browser oft auch von dem heute gültigen Format abweichen. So liefert etwa Netscape Navigator 4.x die Anwendungssprache nach der Versionsnummer in eckigen Klammern, zum Beispiel:

Mozilla/4.06 [es] (Win98; I)

In den ersten Jahren nach der Einführung des Navigator erweiterte Netscape die Gestaltungsmöglichkeiten für Websites in rascher Folge um viele neue Techniken. Insbesondere die Version 2.0 vom Frühjahr 1996 brachte JavaScript (unter der Bezeichnung LiveScript), Plug-ins, animierte GIF-Bilder und verschiedene neue Textauszeichnungen. Wer diese Features zur Gestaltung seiner Webseiten einsetzen wollte, war zunächst praktisch darauf angewiesen, dass seine Besucher den Netscape Navigator benutzten. Daher installierten viele Sites eine sogenannte Browserweiche, die den User-Agent-Header ausliest und den Anwendern anderer Browser alternativ gestaltete Seiten oder zumindest eine aussagekräftige Fehlermeldung liefert. Als andere Browser im Laufe der Zeit neuere, von Netscape eingeführte Features ebenfalls unterstützten, wurden die Browserweichen oft nicht aktualisiert; die Benutzer dieser Produkte hätten dann diese Inhalte nicht erhalten, obwohl sie sie interpretieren konnten. Aus diesem Grund wurde es üblich, dass sie sich im User-Agent-Header als Mozilla-Version ausgaben und den tatsächlichen Namen und die Version der Software nur im Kommentarfeld nannten. Beispielsweise lautet der User-Agent-Header des Microsoft Internet Explorer 2.0 (erschienen im November 1995):

Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

An dieser Konvention wird bis heute (Stand 2013) weitgehend festgehalten. So lautet etwa der Header von Apple Safari unter iOS 5.0 auf dem iPhone 4s, erschienen im Oktober 2011, wie folgt.

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

Die Bedeutung des User-Agent-Headers bei der Prüfung ist zurückgegangen, weil inzwischen die Browserversionen sehr zahlreich sind und bessere Möglichkeiten zur gezielten Prüfung auf einzelne Fähigkeiten mit Hilfe von JavaScript zur Verfügung stehen.

Die meisten Browser ermöglichen es dem Benutzer auch, den User-Agent-Header zu verändern, üblicherweise in mitgelieferten, aber mehr oder minder versteckten Entwicklerwerkzeugen.

Mobilfunkgeräte[Bearbeiten]

Im Gegensatz zu den PC-Webbrowsern übermitteln die Mobilfunkgeräte zusätzliche Informationen im User-Agent, wie Firmware-Version des Gerätes, Browser-Typ und Version, oder Unterstützung von Java (J2ME). Später ging man dazu über, zusätzliche Informationen in das UAProf (User Agent Profile) auszugliedern.

Beispiele:

BlackBerry8520/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/114
Mozilla/5.0 (Linux; U; Android 2.2; de-de; HTC Magic Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
SonyEricssonT68/R201A

Suchmaschinen[Bearbeiten]

Die Crawler von Suchmaschinen erscheinen aus Sicht des Webservers wie Browser. Sie benutzen für gewöhnlich eigene User-Agent-Header.

Beispiele:

Mozilla/2.0 (compatible; Ask Jeeves/Teoma)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Mittels Browserweichen können dadurch in Suchmaschinen andere Informationen über den Inhalt einer Webseite eingetragen werden (Cloaking), zum Beispiel um für mehr Werbeeinnahmen durch Bannerwerbung die Zugriffszahl zu erhöhen. Die Suchmaschinenbetreiber lehnen in der Regel solche Praktiken ab. Beispielsweise bezeichnet Google Cloaking ausdrücklich als Verstoß gegen seine Richtlinien für Webmaster[1] und bestraft das betreffende Angebot durch Entfernung aus dem Index. Es ist davon auszugehen, dass die Suchmaschinen zur Überprüfung solcher Manipulationsversuche ihre Crawler teilweise auch Webseiten mit den User-Agent-Headern von normalen Browsern aufrufen lassen.

E-Mail und Usenet News[Bearbeiten]

Bei der Benutzung von E-Mail ist der User-Agent die Software, welche die Nachrichten von einem Mail-Server herunterlädt und dem Benutzer anzeigt, sowie ihm das Verfassen von neuen Nachrichten ermöglicht und diese wiederum an einen Mailserver überträgt. Es kann sich um ein Anwendungsprogramm handeln, das lokal auf dem Rechner des Anwenders läuft, oder auch um einen Webmail-Dienst wie beispielsweise GMX oder Gmail. Der Ausdruck Mail User Agent und vor allem auch die Abkürzung MUA sind in technischen Diskussionen durchaus geläufig, vor allem für lokale Anwendungsprogramme. Vergleichbares gilt für den Nachrichtenaustausch im Usenet, wo der User Agent im Allgemeinen als Newsreader bezeichnet wird.

Beim Versand von E-Mails oder Nachrichten im Usenet konstruiert der User Agent ein Nachrichtenpaket, das an den oder die Empfänger geschickt wird. Das Format dieser Nachrichten ist aktuell (Stand 2013) in RFC 5322 standardisiert. Die Nachrichten enthalten neben dem eigentlichen Text auch technische Informationen in Headerzeilen; der Standard sieht keinen Header zum Vermerken des User-Agent vor, der die Nachricht verschickt hat.

Es ist jedoch zulässig, dass User-Agents eigene Header nach Belieben in der Nachricht unterbringen, die nicht vom Standard vorgegeben sind. Viele Programme nutzen dies dazu, ihren Namen und ihre Version einzutragen. Das hat dann zur Folge, dass der Empfänger der Nachricht erkennen kann, mit welcher Software der Absender die E-Mail verschickt hat. Mangels Standardisierung sind verschiedene Headernamen hierfür geläufig. Der 1999 veröffentlichte, rein informative (nicht normative) RFC 2076, der einen Überblick über die damals gängigen Header gibt, nennt folgende Namen für die Angabe der Clientsoftware und deren Version:

  • Version
  • Mailer
  • Originating-Client
  • X-Mailer
  • X-Newsreader

In der Praxis sind heute vor allem „X-Mailer“, „X-Newsreader“ und „User-Agent“ gängig, letzteres vielleicht in Anlehnung an den HTTP-Standard. Das Präfix „X-“ soll „experimentelle“ Header kennzeichnen, die Bedeutung dessen ist aber in der Praxis uneinheitlich. Der Inhalt des Headers ist natürlich auch nicht normiert, und ein einheitlicher Aufbau ist nicht zu erkennen. Auch bei Verwendung des Headernamens „User-Agent“ halten sich die Programme nicht an den Aufbau, der in HTTP vorgesehen ist.

Der Inhalt dieser Header kann für statistische Erhebungen und für die Fehlersuche genutzt werden, wobei der uneinheitliche Gebrauch den statistischen Wert schmälern dürfte. Eine funktionale Nutzung wäre theoretisch möglich (zum Beispiel könnten bekannte Formatierungsfehler einer Software automatisch korrigiert werden, wenn diese Software anhand ihres Headers identifiziert wird), ist aber in der Praxis nicht bekannt.

Beispiele für E-Mail-Programme:

User-Agent: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0)
User-Agent: Mutt/1.5.13 (2006-08-11)
X-Mailer: Sylpheed version 0.9.6claws (GTK+ 1.2.10; i386-pc-linux-gnu)

Beispiele für Newsreader:

User-Agent: 40tude_Dialog/2.0.8.1de
User-Agent: tin/1.7.2-20031104 ("Eriskay") (UNIX) (Linux/2.4.18-1-686 (i686))
X-Newsreader: Forte Agent 1.8/32.553

Es ist zu erkennen, dass teilweise Informationen über Betriebssystem und Hardwareplattform enthalten sind.

Einzelnachweise[Bearbeiten]

  1. http://support.google.com/webmasters/bin/answer.py?hl=en&answer=66355