Die wichtigsten mobilen User Agents
In manchen Fällen ist es notwendig, mobile Devices anhand ihres User Agents zu erkennen (z.B. serverseitige Weiterleitung auf mobile Website). Im Folgenden ein Überblick über die User Agents der populärsten Devices (iOS, Android, BlackBerry, Kindle, Windows Phone).
Zur Erinnerung: Stellt ein Browser einen Request an einen Server, überträgt er seinen Namen („User Agent”) im HTTP-Header. Der Name wird in Form eines Strings übertragen, der z.B. über das Gerät, Betriebssystem und Browser inklusive entsprechender Version Auskunft gibt. Aus historischen Gründen sind auch einige Altlasten enthalten, so beginnen z.B. alle Browser mit Mozilla/5.0
, nicht nur Firefox.
User Agent vs. Feature Detection
Grundsätzlich sollte man vorsichtig, einzelne Features und Funktionen anhand des User Agents (UA) auszuliefern. Das Problem hierbei ist, dass ständig neue User Agents im Umlauf sind und es schwierig ist, immer eine aktuelle und korrekte Zuordnung zu gewährleisten.
Sinnvoller ist stattdessen der Ansatz, über eine Feature Detection (z.B. mit der JavaScript-Bibliothek Modernizr) zu prüfen, was der Browser tatsächlich kann. Auch jQuery Mobile bietet eine JavaScript-Funktion gradeA, die zurückgibt, ob ein Device vollständig unterstützt wird und alle benötigten Funktion bietet.
Serverseitige Weiterleitung auf mobile Website
Nichtsdestotrotz gibt es Fälle, in denen man nicht am Auslesen des User Agents vorbeikommt. Hat man z.B. eine Website (www.domain..), die eine Startseite mit hoher Datenmenge besitzt, möchte man mobile Devices beim Aufrufen dieser direkt auf eine mobile Variante weiterleiten (m.domain..). Dies wäre mit einer Feature Detection in JavaScript nur bedingt sinnvoll, da das Device die „schwergewichtige” Startseite herunterladen muss.
Besser ist es, den User Agent serverseitig z.B. über den Apache oder PHP auszulesen und das Device direkt auf die mobile Website weiterzuleiten. So wird nur die mobile und optimierte Startseite mit geringer Datenmenge heruntergeladen, auf der man den Nutzer dann per Dialog noch fragen kann, ob er auch tatsächlich die mobile Website ansehen möchte.
Übersicht der wichtigsten User Agents
Im Folgenden eine Sammlung der wichtigsten User Agents und entsprechender Quellenangaben. Es handelt sich übrigens um Devices, die auch von jQuery Mobile unterstützt werden.
Außerdem habe ich jeweils einige Vorschläge für Regular Expressions hinzugefügt, um den User Agent abzufragen (am Beispiel einer PHP-Konstanten). Zum einen in einer recht einfachen Variante (die im Zweifel eher öfters greift), als auch ein exakteren Variante mit Versionsnummern.
iOS
Der User Agent unterscheidet sich bei den iOS-Geräten nur an der Stelle, die Auskunft über das Gerät (iPod, iPhone, iPad) gibt.
iPhone (Smartphone)
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
/* * Simple: iPhone * Exact: iPhone with iOS 3_2/3_2_ oder higher */ const iPhone_simple = "/iPhone/"; const iPhone_exact = "/iPhone.* (([3]_[2-9](_| ))|([4-9]_[0-9](_| )))/"; |
iPod (Smartphone)
Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
iPad (Tablet)
Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
/* * Simple: iPad * Exact: iPad with iOS 3_2/3_2_ oder higher */ const iPad_simple = "/iPad/"; const iPad_exact = "/iPad.* (([3]_[2-9](_| ))|([4-9]_[0-9](_| )))/"; |
Link: Apple Safari Web Content Guide
Android
Erwähneswert ist, dass bei Android-Smartphone immer die Kombination Android … Mobile
vorkommt, während Android-Tablets lediglich Android
(ohne Mobile
) haben.
Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
/* * Simple: Android * Exact: Android Smartphone */ const Android_exact = "/Android/"; const Android_exact = "/Android.*Mobile/"; |
Link: Best Practices for Web Apps
BlackBerry
BlackBerry 6 and 7 (Smartphone)
Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/X.X.X.X Mobile Safari/534.11+
/* * Simple: BlackBerry * Exact: BlackBerry 6 or higher */ const BlackBerry_simple = "/BlackBerry/"; const BlackBerry_exact = "/BlackBerry.*Version\/[6-9]\./"; |
PlayBook (Tablet)
Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+
/* * Simple: PlayBook * Exact: PlayBook with OS 1.0 or greater */ const PlayBook_simple = "/PlayBook/"; const PlayBook_exact = "/PlayBook.*OS [1-9]\./"; |
Link: How to detect the BlackBerry Browser
Kindle
Kindle (Tablet)
Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)
/* * Simple: Kindle * Exact: Kindle 3 or higher */ const Kindle_simple = "/Kindle/"; const Kindle_exact = "/Kindle\/[3-9]/"; |
Kindle Fire (Tablet)
Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
const KindleFire_simple = "/Kindle Fire/"; |
Link: The User Agent String of Kindle Fire Revealed
Opera Mobile
Opera Mobile
Opera/9.80 ($OS; Opera Mobi/$BUILD_NUMBER; U; $LANGUAGE) Presto/$PRESTO_VERSION Version/$VERSION
Link: Opera’s User Agent String
Windows Phone
IE9 on Mango
Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; <manufacturer>; <model> [;<operator])
/* * Simple: Windows Phone * Exact: Windows Phone 7 or higher */ const WindowsPhone_simple = "/Windows Phone/"; const WindowsPhone_exact = "/Windows Phone OS [7-9]/"; |
Link: Introducing the IE9 on Windows Phone “Mango” User Agent String
Link: Introducing IE9’s User Agent String
13 Kommentare zu: Die wichtigsten mobilen User Agents
Pingback: Mobile Theme Switcher Plugin – Redirect mobile users to an alternative theme
Pingback: WebDesign: iPhone erkennen und umleiten | Technokrat