Browsersniffing wird meist dazu verwendet, um veraltete oder fehlerhafte Browser zu erkennen und denen Patches auszuliefern. Beim Browsersniffing wird die Versionsnummer der Browser aus dem user agent string (UAS) extrahiert und dann je nach Browser in die Webseite ein anderes HTML, Stylesheet oder Javascript eingesetzt.
Soweit, so gut.
Das hat allerdings auch Haken, wenn nur nach der Versionsnummer gefragt wird.
In früheren Zeiten bewegte sich die Versionsnummer von Null bis Neun, heutzutage hat jedenfalls ein Browser, nämlich Opera 10 Alpha diese Marke gesprengt.
Opera 10α hatte beispielsweise den folgenden UAS:
Opera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.0.
Bei manchen Webseiten führte die 10.00 zu merkwürdigen Ergebnissen in der Anzeige oder bei Javascript-Anwendungen. Das Browsersniffing erkannte den Browser als Opera 1, ein Browser der völlig veraltet ist und bestimmte Eingenschaften nicht darstellen kann. Daraufhin wurde auf den Webseiten entweder eine inkorrekte Fehlermeldung über einen veralteten Browser gezeigt oder in die Webseite einfach ein völlig falscher Code eingesetzt, um auch diesen vermeintlich alten Browser zu unterstützen. Teilweise wurden Besucher auch einfach auf eine Seite umgeleitet, die ihnen einen neueren Browser empfahl; die Webseite konnte nicht angesehen werden, also Aussperrung.
Entstanden sind solche Eskapaden der Webseiten nicht wegen Operas Fehler wie eine denken möchte, sondern durch Schlamperei in der Browsererkennung. Webmaster und -entwickler haben einfach nicht bedacht, dass Versionsnummern auch größer als 10 werden können. Sowas ist ähnlich dem berühmten Jahr-2000-Problem (Y2K-Bug). Oder wie die Probleme mit Flash 10-Anwendungen auf Webseiten, bei denen manche schlechte Erkennungsskripte ein veraltetes Flash-Plugin vermuteten und beim Besuch der Seite immer wieder aufforderten, ein neueres Plugin herunter zu laden, um die Inhalte betrachten zu können.
Was falsches Browsersniffing in Webanwendungen erzeugen kann beschreibt schön ein Problem bei TyinyMCE und Opera 9.5.
Da auch Opera auf das Problem aufmerksam (gemacht) wurde, haben sie sich einen Trick einfallen lassen; sie veränderten die Versionsnummer im UAS.
Ab jetzt verwendet Opera 10α beispielsweise folgenden UAS:
Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00.
Wie zu sehen ist, wurde die wirkliche Versionsnummer einfach hinten angehängt und vorn eine Versionsnummer kleiner als 10 vorgetäuscht, was jedenfalls den „Versionsnummernbug“ beim Browsersniffing beheben sollte.
Dass Opera allerdings bei späteren Versionen nur hinten die Versionsnumer ändern will, irritiert mich. Andreas Bovens, ein Entwickler bei Opera schreibt nämlich im Artikel Changes in Opera’s user agent string format
:
we’ve decided to freeze the first part of the string as Opera/9.80 for now, and add the version number in the end — hence the Version/10.00 appendix. This construct allows us to somehow serve the "real" version number, while sidestepping the various double digit-related issues described above. In future releases, we plan to update the Version part. For example, Opera 11 will have a Version/11.00 appendix, and so on.
Da hätte ja Opera gleich einen Mozilla-UAS machen können, der könnte dann beispielsweise so lauten:
- Alter UAS:
- Opera/10.00 (X11; Linux i686; U; de) Presto/2.2.0
- Neuer UAS:
- Mozilla/5.0 (X11; U; Linux i686; de) Presto/2.2.0 Opera/10.00
Schließlich hatte Opera doch sowieso schon die Möglichkeit, sich als Internet Explorer oder Firefox zu tarnen, da sollte doch ein Mozilla-UAS nichts schlimmes sein. Aber ich nehme mal an, den Browsernamen im UAS voran zu stellen war wohl eher eine Marketingstrategie oder einfach nur der Stolz auf das Produkt.
Ich bin gespannt, ob Opera die nächsten Jahre immer nur Version 9.x bleiben will.
Besonders gut kommt der „Fix“ des UAS bei normalen Anwendern und Webentwicklern nicht gerade an, wenn ich mir so die Diskussion auf dev.opera ansehe.
Doch zurück zum Sinn des Browsersniffings und der Erkennung der Eigenschaften verschiedener Browser.
Es ist sinnvoller, Eigenschaften eines Browsers nicht über seine Versionsnummer herauszufinden. Warum? Weil der UAS auch geändert werden kann, was manche Browser zulassen und sich so zu verschleiern. Browsererkennung sollte eher über wirkliche Eigenschaften wie bestimmte Javascript-Objekte, die es nur in bestimmten Browsern gibt, geschehen.
Hallvord M. Steens Artikel Using capability detection
bei dev.opera aus dem Jahre 2006 zeigt einen Ansatz wie bessere Browsererkennung rein über die jeweiligen Javascript-Eigenschaften des Browsers bewerkstelligt wird.
Browsersniffing wird von manchen sogar als überholt angesehen, andere wiederum erfinden und entdecken neue Patches, um Browser zu erkennen. Dabei wird Browsersniffing schon in 2002 als übel und dumm angesehen, das Problem ist also schon älter.
Da ist in Bezug auf Browsererkennung einiges an Fortbildung bei manchen Webmastern nötig.
Es ist zu hoffen, dass Webmaster und -entwickler ihre Skripte überarbeiten und Opera 10 nicht mehr aussperren werden, denn spätestens bei Opera 10 Final wird das nötig sein. Und Browser wie der Internet Explorer sind ja auch nur noch zwei Ziffern von der 10 entfernt.

Kommentar für Blogeintrag
Vorschau des Kommentars
TrackBack-URL:
http://gwendragon.de/blog/Web/Browser/Opera/opera-10-neue-browserkennung.html/trackback↑Artikel