User-Agent-Kennung

Aus SELFHTML-Wiki
(Weitergeleitet von AppCodeName)
Wechseln zu: Navigation, Suche

Wenn ein Browser oder ein Such-Robot oder der Agent eines Proxy-Servers bei einem Web-Server mit einem Request Daten anfordert, schickt er im Header eine Zeichenkette mit, mit der er sich dem Web-Server gegenüber „namentlich vorstellt“. Diese Kennung wird User-Agent genannt. Sie enthält (mehr oder weniger zuverlässig) Hinweise auf Browsertyp, Version, Betriebssystem oder Gerätekategorie.

Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36

Was ist Browser-Sniffing?

User-Agents.svg

Unter Browser-Sniffing versteht man den Versuch, diese User-Agent-Kennung auszuwerten, um den verwendeten Browser oder das Endgerät zu identifizieren und darauf basierend unterschiedliche Inhalte oder Verhaltensweisen auszuliefern. Typische Beispiele waren spezielle HTML-, CSS- oder JavaScript-Varianten für bestimmte Browser oder Versionsnummern.

Historisch geschah dies sowohl clientseitig (z. B. über JavaScript und das navigator-Objekt) als auch serverseitig:

  • JavaScript wertete navigator.userAgent aus und entschied, welche Skriptteile ausgeführt wurden (sogenannte „Browserweichen“).
  • Webanwendungen lasen den User-Agent-Header und lieferten je nach erkanntem Browser unterschiedliche Inhalte aus.

Stand heute

Achtung.svg Obsolet.svg Die obsolete Eigenschaften navigator.appName und navigator.appCodeName sollen den Namen des Browsers und seinen Codename während seiner Entwicklung enthalten. NetScape wollte damit für Webseiten eine Möglichkeit schaffen, ihren Browser in JavaScript zu erkennen. Nachdem der Internet Explorer und andere Browser die neuen NetScape-Erfindungen nachgebaut hatten, wollten sie natürlich, dass die bestehenden Webseiten diese auch nutzten, und weil viele Entwickler keine Lust hatten, jeder Kapriole im Browserkrieg hinterherzuhecheln, geschah das nicht. Die „Lösung“ war, dass der Browser die Webseiten belügt: appName enthält immer "NetScape" und appCodeName immer "Mozilla", und weil man vermeiden will, dass uralte Webseiten kaputtgehen, bleiben uns diese beiden obsoleten Eigenschaften auf Dauer erhalten.[1][2]

In Windows Phone sollte der User-Agent ein iPhone vorspiegeln, damit für iOS und Android optimierte Seiten auch auf mobilen Windows-Geräten dargestellt wurden. Dies war nötig, da viele Programmierer sich alleine auf User-Agent-Abfragen anstelle einer feature detection verließen.[3]

Obwohl der Ansatz naheliegend erscheint, ist Browser-Sniffing aus mehreren Gründen unzuverlässig und deshalb zu vermeiden:

  1. User-Agent-Kennungen sind nicht verlässlich
    Browser können ihre Kennung frei wählen oder absichtlich verfälschen. Viele geben sich aus Kompatibilitätsgründen als andere Browser aus.
  2. Hoher Wartungsaufwand
    Neue Browserversionen, Forks oder Geräteklassen erfordern ständig angepasste Erkennungslogik.
  3. Falsche Annahmen
    Ein erkannter Browsername sagt nichts darüber aus, ob die genutzte Version eine bestimmte Funktion tatsächlich unterstützt.
  4. Datenschutz und Fingerprinting
    Die gezielte Auswertung von Browsermerkmalen kann zur Wiedererkennung von Nutzern beitragen und wird daher von modernen Browsern bewusst eingeschränkt.

Moderne Techniken

Je nach benötigtem Feature gibt es mittlerweile bessere Techniken, um sein Vorhandensein zu erkennen.

  • @supports
  • Feature detection
    Abfragen, ob ein Objekt existiert
  • Progressive enhancement
    Zuerst grundsätzliche Funktion, dann Gestaltung und Dynamik

Weblinks

  1. Liste verschiedener Kennungen (developers.whatismybrowser.com)
  2. webaim.org: lustige Geschichte der User-Agent-Kennungen, englisch
    Die Geschichte der User-Agent-Strings (deutsche Übersetzung von Alexander Stannigel)
  3. Windows Phone 8.1 Update Will Feature IE 11 Improvements By Kurt MackieAugust 07, 2014

Abgerufen am 24.12.2025
von "http://wiki.selfhtml.org/wiki/User-Agent-Kennung"