Camino je webový prohlížeč určený pro Mac OS X, který pod nativním uživatelským rozhraním skrývá Gecko. Síla Mozilly se v něm snoubí se stylem Maca. Řada jablíčkářů preferuje Camino před Safari a trochu cizácky vypadajícím Firefoxem. Sice jsem Camino snad nikdy nepoužil (nemaje Mac), ale podle článků na webu byla verze 1.0 překvapivě dobrá a nedávno vydaná verze 1.5 podle všeho dojem jen zlepšovala.
Přesto není modrá obloha nad Caminem úplně bez mráčku. Camino je vskutku minoritní prohlížeč: je určený pro minoritní platformu (cca 4–5 %), která má vlastní, vydatně podporovaný webový prohlížeč. Autoři Camina o tento malý fragment reality bojují a pokud by se jim podařilo ukousnout půl procenta z celosvětového koláče, považovali by to za velký úspěch.
Půl procenta je však příliš málo pro hodně autorů webů. Firefox se svým podílem dokázal přihlásil o jejich pozornost a mnoho z nich přiblížilo weby k webovým standardům. Ale mnozí se stále nepoučili z chyb minulosti (weby dostupné jen Netscape či v MSIE) a na svých stránkách dál detekují prohlížeče podle rozpoznávání řetězců v identifikaci prohlížeče. Firefox detekují podle stejného řetězce. Ano, pochopitelně a najdou jej, ale… Stejné zobrazovací schopnosti jako Firefox má i SeaMonkey, Epiphany, Flock, Firefox, Kazehakase, Netscape i Camino, prostě všechny prohlížeče používající stejnou verzi vykreslovacího jádra Gecko. Je-li detekce podle identifikace opravdu na místě, je lepší hledat řetězec “Gecko”. Více na webu Gecko is Gecko.
A zpět ke Caminu. Jeho vývojáři rezignovali na mnohdy marné snažení opravit chování problematických webů detekujících právě Firefox a rozhodli se přidat řetězec Firefox do identifikace Camina. Nedělají to rádi, ani za všeobecného souhlasu, ale jsou rozhodnuti obětovat své ideály pro komfort uživatelů. Identifikace – čili user-agent string – Camina bude vypadat možná následovně, případně bude uvedena i aktuální verze Firefoxu:
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.4) Gecko/20070509
Camino/1.5 (MultiLang) (like Firefox)
Ale Camino nebude prvním prohlížečem, který se bude schovávat za Firefox, svého silnějšího brášku. Činí tak např. jeho oba známější klony, Netscape Navigator 9 a Flock:
Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.5pre) Gecko/20070604 Firefox/2.0.0.4 Navigator/9.0b1
Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.11) Gecko/20070322 Firefox/1.5.0.11 Flock/0.7.12
i Epiphany a Galeon, prohlížeče linuxového GNOME:
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.4 Epiphany/1.6.3
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060410 Firefox/1.0.8 Galeon/1.3.21
a dokonce i Opera nabízí uživatelům možnost vydávat se za Firefox:
Mozilla/5.0 (Windows NT 5.2; U; cs; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20
Nějak se to s těmi identifikacemi dál zamotává…
S rostoucím množstvím frameworků generujících odlišný kód dle UA se detekce nezbavíme. Máme tu ASP.NET (aspoň že ve verzi 2.0 jsem tu detekci už nemusel opravovat), myslím že i Google Web Toolkit a určitě nebudou jediní.
Každopádně správná detekce se už dávno stala černou magií. ASP.NET 2.0 obsahuje 25 konfiguračních souborů s detekcí UA. Pro ukázku ten, který má na starosti Mozillu (shodou okolnostím i Safari). http://a.met.cz/blog-aha/ua-asp-net2/mozilla.browser
A to není ani zdaleka ten nejsložitější. Představa, že bych se v tom někdy musel vrtat a opravovat mě neláká. A při tom, jak Adame píšeš, ty UAstringy jsou čím dál komplikovanější. Bych se nedivil, když by z toho šel za 10 let složit doktorát 😎
Ten odkazovaný soubor hodně zjednodušuje, vzpomeň si jen na rozšíření Firesomething. Detekovat správně Firefox s ním není úplně legrace, někdy ti ukážu, jak vypadá detekce v NV.
Chybně testuje Gecko i Microsoft Silverlight. To je podle mě do budoucna potencionálně více nebezpečné než existující weby, které ne-Firefoxí prohlížeče založené na Gecko odmítnou. Tedy za předpokladu, že chyba nebude opravena a Microsoft Silverlight se více prosadí. Chyba se týká detekce prohlížeče v souboru Silverlight.js:
Příslušný bug v Bugzille:
https://bugzilla.mozilla.org/show_bug.cgi?id=385720
Chybná detekce v Silverlight.js:
http://silverlight.net/samples/1.0/clock/js/Silverlight.js
Nahlášená chyba
http://silverlight.net/forums/t/2244.aspx