Jak poznat přistupující zařízení
29.11.2010 – 22:59:35Nejčastější způsob, jak rozpoznat přistupující zařízení/telefon na mobilní web je analýza HTTP hlavičky User-Agent. Existuje několik cest, jak se k této problematice postavit a rád bych je v tomto článku nastínil.
Hlavička User-Agent vznikla k tomu aby identifikovala prohlížeč, který právě přistupuje na stránku. Kompletní historii obsahu hlavičky User-Agent a proč se i Internet Explorer hlásí jako Mozilla tu nebudu rozebírat, protože už napsali jiní.
Než se pustím do povídání o User-Agentech v souvislosti s rozpoznáváním mobilního telefonu, musím zmínit další užitečnou HTTP hlavičku a to x-wap-profile, která má obsahovat URL k RDF souboru, popisujícímu vlastnosti daného zařízení, ale o tom někdy jindy.
User-Agent
User-Agent, kterým se identifikují standardní internetové prohlížeče se postupem doby poměrně standardizoval (RFC 2616) a je z něj možní vyčíst několik běžných informací o daném prohlížeči. Pro příklad uvedu UA Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1, kde jednotlivé části znamenají:
Mozilla/5.0slouží pro zpětnou kompatibilitu - znamená, že je funkčně ekvivalentní Mozille ve verzi 5(uvozuje komentářMacintoshplatformaUbezpečnost, kde U je silná, I je slabá a N žádná podpora šifrováníIntel Mac OS X 10_5_5na tomto místě je operační systém, nebo architektura systému … i686, ARM, PPC, atp.en-usJazyková mutace prohlížeče)konec komentářeAppleWebKit/525.18je název vykreslovacího jádra a jeho verze(… opět komentářKHTML, like Geckoznamená, že WebKit vychází z jádra KHTML, podobnému Gecku)Version/3.1.2verze prohlížečeSafari/525.20.1název prohlížeče a aktuální sestavení
Obecně lze říct, že User-Agent se vždy skládá z tokenu identifikujícího prohlížeč, případně jeho vlastnost, následovaného lomítkem udávající verzi prohlížeče/vlastnosti. Každý token může mít komentář, uvozený závorkami. V komentáři může být libovolné množství informací, oddělených středníkem.
Kdyby to takto fungovalo všude, bylo by to krásné. Nejčastější prohřešky proti specifikaci jsou:
- Více lomítek Některé prohlížeče mají pro jeden token až 3 lomítka, většinou se jedná o mutace zařízení pro Vodafone
- Mezery Někdy může být jeden obsahovat mezeru, takže při zpracování není jasné, jestli končí aktuální, nebo začíná nový
- tokeny v komentáři kompletní tokeny, tedy výraz, lomítko, verze se někdy dají najít i v komentáři, kam nepatří, ale jsou důležité pro rozpoznání
- a mnoho dalších, jako třeba exotické znaky atp.
UA-Profile
Další způsob, jak rozpoznat mobilní telefon je hlavička x-wap-profile. V této hlavičce vy se měl vyskytovat odkaz na tzv. UA-Profile. UA-Profile je XML definiční soubor, který popisuje vlastnosti mobilního prohlížeče. Zní to krásně, ale nespoléhejte plně na informace v tomto souboru. Informace jsou často nepřesné, nekompletní, nebo prostě zastaralé.
Už jenom výskyt této hlavičky je jasným znakem, že na stránku přistupují mobilní zařízení a pokud si navíc ukládáte jednotlivé URL datových souborů a dokážete je přiřadit k určitému mobilnímu zařízení, máte hodně kvalitní způsob, jak přesně rozpoznat mobilní telefon. Bohužel, velké množství telefonů tuto hlavičku neposílá, takže není možné se na ni spolehnout.
Další možnosti
Existují i další možnosti, jak rozpoznávat mobilní zařízení. Pro další rozpoznávání se dají použít i další, specifické, hlavičky pro některé mobilní prohlížeče. Vzhledem k rozšířenosti se patří hlavně Opera Mini, která posílá 2 hlavičky:
x-operamini-phone- vypadá “Výrobce # Model” nevyskytuje se příliš častox-operamini-phone-ua- obsahuje originální user-agen prohlížeče
Na první pohled to vypadá, že pomocí těchto hlaviček je bez problému možné identifikovat přistupující mobilní telefon, ale ve výsledku to tak není a to z několika důvodů:
- Opera balí tyto informace do souboru při jeho stahování, jsou tedy relevantní jen pokud si uživatel stáhnul Operu mini z nativního prohlížeče
- Opera nemá příliš kvalitní databázi pro rozpoznávání telefonů, takže dost často nepozná, ze kterého telefonu se Opera Mini stahuje
- Operátorsky předinstalované Opery Mini, krom toho, že bývají v pekelně staré verzi, tuto informací nenesou
Jak dál?
Možností, jak rozpoznávat zařízení na mobilním webu existuje celá řada a já jsem se snažil popsat jenom ty nejrozšířenější. Pokud chcete mít co možná nejpřesnější rozpoznávání, pátrejte, bádejte a pokuste se najít další a další hlavičky a postupy, jak přesně identifikovat ten který telefon. Pokud budete mít štěstí, dovedete pak rozpoznávat telefony až na úroveň jednotlivých firmwarů.
Tento clanek jsem mel rok rozepsany, ale jeho zacatek by mel zustat aktualni
2 Responses to “Jak poznat přistupující zařízení”
Pro mě je nejjednodušší si na stránky hodit analytika a nemusím nic složitě nastavovat, ale na méně duležité stránky to je samozřejmě good
By Vodní elektrárny on Jun 7, 2011
No, pokud je potřeba generovat na mobilní stránce obsah podle přistupujícího zařízení, pak to jinak nejde. Jinak statistiky pres Analytics jsou sice fajn, ale podpora javascriptu neni stále nijak úžasná, nehledě na zařízení, kde spadne prohlížeč když narazí na tag script.
By Lukoko on Jun 8, 2011