Spójrzmy na User-Agent nowoczesnej Chrome — zobaczymy coś w rodzaju "Mozilla/5.0 ... AppleWebKit/537.36 ... Chrome/120.0 Safari/537.36" — ciąg pełen nazw przeglądarek, którymi Chrome tak naprawdę nie jest. To efekt dekad historycznych obejść, a nie przypadek.
Skąd wzięło się słowo „Mozilla"
W latach 90. strony wykrywały możliwości przeglądarki, sprawdzając, czy User-Agent zawiera „Mozilla" (kryptonim Netscape Navigatora, ówczesnego lidera rynku). Gdy Internet Explorer chciał otrzymywać tę samą „zaawansowaną" zawartość, zaczął dodawać „Mozilla" również do swojego User-Agenta — i ten precedens zakorzenił się w branży na stałe.
Testowanie cross-browserowe jako polska specjalność IT
Polska jest jednym z większych europejskich centrów outsourcingu QA i testowania oprogramowania, gdzie testy cross-browserowe i cross-device to codzienna praca wielu zespołów pracujących dla klientów z Europy Zachodniej i USA. W takiej pracy parsowanie i analiza User-Agent wciąż bywa praktycznym narzędziem — przy diagnozowaniu, czy raportowany błąd faktycznie pochodzi od konkretnej wersji przeglądarki, czy raczej od nietypowego urządzenia, zanim jeszcze sięgnie się po pełne środowisko testowe z danym User-Agentem.
Dlaczego wykrywanie po User-Agent jest niewiarygodne
Ponieważ każda nowa przeglądarka dopisuje do User-Agenta tokeny swoich poprzedników dla zachowania kompatybilności, ten ciąg zamienił się w stos historycznych naleciałości, a nie precyzyjny opis przeglądarki. Obecną dobrą praktyką jest bezpośrednie wykrywanie wsparcia dla konkretnych funkcji JavaScript/CSS, zamiast parsowania User-Agenta.
Do czego się to przydaje
- Diagnozować problemy z kompatybilnością, sprawdzając dokładnie, jaką przeglądarkę i wersję zgłasza klient.
- Zrozumieć logi serwera, w których zapisywany jest User-Agent odwiedzających.
- Zrozumieć, dlaczego stary kod wykrywania przeglądarki oparty na User-Agencie często się myli.
User-Agent Client Hints jako zamiennik
Zamiast parsować jeden przeładowany ciąg, nowoczesne przeglądarki oparte na Chromium obsługują teraz User-Agent Client Hints — osobne nagłówki takie jak Sec-CH-UA, Sec-CH-UA-Platform i Sec-CH-UA-Mobile, o które serwer musi jawnie poprosić i które otrzymuje w ustrukturyzowanej formie. To część szerszego trendu „User-Agent Reduction" na rzecz prywatności, więc z czasem klasyczny ciąg User-Agent będzie niósł coraz mniej szczegółów.