Tipps für Selbermacher
Der magische Useragent
Natürlich interessiert uns alle, welche Systemumgebung unsere surfenden Besucher verwenden. In erster Linie wollen wir wissen, welche Browser zu Einsatz kommen, doch auch die Bildschirmdimensionen oder das Betriebssystem wecken unser aller Neugier.
Wer Webseiten gestaltet, kann auf Basis solcher Daten die Darstellung entweder für die große Mehrheit der Besucher optimieren, oder gar für verschiedene Benutzergruppen auf unterschiedliche Designs verzweigen. Voraussetzung ist in allen Fällen, dass die Systemumgebung erkannt wird – und zwar korrekt.
Grundsätzlich gibt es zwei unterschiedliche Verfahrensweisen, das Problem zu lösen: Man kann eine Auswertung serverseitig, also auf dem eigenen Webserver laufen lassen, oder aber clientseitig, also im Browser des Besuchers ausführen. Beide Verfahren haben Vor- und Nachteile. Lokal auf dem Besucher-PC müssen Systemdaten über Javascript abgefragt werden, auf dem Server mittels geeigneter Scriptsprachen wie PHP, Perl, etcetera.
Javascript hat bekanntlich den Nachteil, dass Benutzer es deaktivieren können, eine clientseitige Auswertung läuft dann ins Leere. Dafür lassen sich mit Javascript eine Vielzahl von Werten abfragen, auf Basis derer eine ziemlich gute Einschätzung der Systemumgebung möglich ist, wenn man nur die notwendige Geduld hat, alle Varianten abzufragen; aber dazu weiter unten mehr. Serverseitige Scripte haben zwar den Vorteil, dass sie auf jeden Fall ausgeführt werden, können allerdings leider nur auf eine recht kümmerliche Informationsquelle über den Besucher zurückgreifen: den magischen Variablenwert HTTP_USER_AGENT.
Javascript Lösung
Auch mit Javscript kann man den Useragent abfragen, die entsprechende Zeichenfolge erhält man über Zugriff auf »navigator.userAgent«. Darüber hinaus stehen weitere Detailinformationen zur Verfügung, etwa in »navigator.appCodeName«, »navigator.appName«, oder »navigator.appVersion«. Da in manchen Browsern jedoch die Möglichkeit besteht, sich als ein anderer auszugeben, also getürkte Angaben zu liefern, greifen viele Programmierer auf Eigenschaften zurück, die vermeintlich nur echte Browser auswerten. Bekannte Beispiel sind Abfragen nach der Existenz von »document.all«, »document.layers« und »document.getElementById«, um Internet Explorer ab Version 4 von Netscape Navigator 4, oder Netscape 6 und Mozilla zu unterscheiden.
Das grundsätzliche Problem besteht darin, dass viele alternative Browser sowohl Eigenschaften von Netscape, als auch von Microsoft übernommen haben, keinem der genannten aber vollständig gleichen. In der Folge kommt es nach unvollständigen Abfragen zu Fehlern bei der Ausführung von Scripts und schlimmstenfalls zur Verzweigung auf eine für den fälschlich klassifizierten Browser ungeeignete Darstellung. Wie komplex eine umfassende Prüfung mit Javascript werden kann, mag ein Beispiel dokumentieren, das auf der Mozilla Website zu finden ist: ein ohne Kommentare über einhundert Zeilen starkes Javascript Fragment, das – längst veraltet auf Stand Oktober 2001 – verschiedene Variablen zu Browsern und Betriebssystemen besetzt, die danach abgefragt werden können, um auf unterschiedliche Seiten zu verzweigen.
Vielleicht will sich ja jemand die Mühe machen, den Code zu aktualisieren? – Mein Fazit jedenfalls lautet: Es macht wenig Sinn, verzweifelt zu versuchen, jede Variante abzudecken. Verzweigungen in Abhängigkeit von Systemwerten erfordern unverhältnismäßig viel Aufwand, ich verzichte daher auf sie. Ich beschränken mich darauf, meine Seiten für die große Mehrheit – über 95 Prozent der Surfer – zu optimieren.
Serverseitige Lösung
Zu diesem Zweck führe ich statistische Auswertungen, die Aufschluss über die meist genutzten Systemumgebungen geben soll. Weil diese Statistiken auf dem Server abgelegt werden, realisieren wir sie als serverseitiges Script. Wir werten die Umgebungsvariable HTTP_USER_AGENT, die sich laut Spezifikation aus mehreren Teilen zusammensetzen kann:
browsercode (info_1; ...; info_n) add_on
Den Browser bestimme ich auf Basis des Codes vor der Klammerung, sowie nach Inhalten der einzelnen Klammerelemente und der zusätzlichen Information nach der Klammerung. Das Betriebssystem erfrage ich aus den einzelnen Klammerelementen.
Nach meinem Algorithmus verwenden Sie beim Besuch dieser Seite als Browser Robots unter Robots.
Eine mühselige Angelegenheit ist das Prüfen allemal, da sich in relativ kurzen Zeitabständen neue Versionen bestehender Browser oder gar neue Browser verbreiten, deren Identitätselemente im Useragent erst einmal gefunden und zur Auswertung formalisiert werden müssen. Ob sich der Aufwand wirklich lohnt, bleibt ganz ehrlich gesagt abzuwarten.
Pragmatischer ist wahrscheinlich der Ansatz, sich beim Gestalten auf die »zwei Großen« (IE und Mozilla) zu konzentrieren und zusätzlich eventuell noch mit Opera und Safari testen.




