User-Agent (w skrócie UA) to pole w nagłówku żądania HTTP. Za każdym razem, gdy przeglądarka (lub crawler, lub inny klient HTTP) wysyła żądanie, dołącza ten ciąg, aby powiedzieć serwerowi kim jestem, zawierający nazwę i wersję przeglądarki, system operacyjny i wersję, silnik renderujący, typ urządzenia, architekturę CPU i wiele więcej. Serwery mogą używać UA do zwracania treści dostosowanych do różnych urządzeń, a programiści często używają UA do obsługi zgodności, analityki ruchu i wykrywania botów.
Ciągi UA wydają się rozwlekłe i chaotyczne z przyczyn historycznych: w czasach wojen przeglądarkowych nowe przeglądarki deklarowały się jako starsze przeglądarki w swoim UA, aby witryny zbudowane dla starszego wykrywania przeglądarek działały poprawnie (na przykład Chrome zawiera identyfikatory Safari, a Safari zawiera identyfikatory Gecko). Warstwa po warstwie przestarzałych tokenów kumulowała się, co sprawia, że współczesne ciągi UA są trudne do bezpośredniego odczytania. Celem parsera UA jest rozbicie tych złożonych ciągów i wyodrębnienie naprawdę przydatnych informacji.
Główne przeglądarki mają ustalone formaty i tokeny identyfikacyjne: Chrome zawiera Chrome/wersja, Firefox zawiera Firefox/wersja, Safari zawiera Version/wersja i znaczniki Safari/, nowy Edge używa Edg/, a wbudowana przeglądarka WeChat używa MicroMessenger/. Systemy operacyjne również mają odpowiednie znaczniki: Windows używa Windows NT + wersja, macOS używa Mac OS X + wersja, iOS używa CPU iPhone OS + wersja, a Android bezpośrednio używa Android + wersja. Dokładna identyfikacja jest osiągana poprzez dopasowywanie wzorców regex do tych słów kluczowych.
Silnik renderujący to główny komponent, którego przeglądarka używa do parsowania HTML/CSS i renderowania stron: przeglądarki oparte na Chromium (Chrome, Edge, Opera itp.) używają silnika Blink, Safari używa WebKit, Firefox używa Gecko, a starszy IE używa Trident. Znajomość silnika renderującego pomaga diagnozować problemy zgodności CSS/JS, ponieważ Chrome i Edge wykazują wysoce spójne zachowanie renderowania podczas współdzielenia silnika Blink.
Wykrywanie botów jest jednym z kluczowych zastosowań parsowania UA. Crawlery wyszukiwarek (Googlebot, Bingbot, Baiduspider), crawlery narzędzi SEO, złośliwe scrapery, narzędzia wiersza poleceń (curl, wget) i biblioteki skryptowe (Python requests) — wszystkie dołączają własne identyfikatory w UA lub używają bardzo prostych ciągów UA. Ruch nie-ludzki można szybko zidentyfikować, dopasowując słowa kluczowe takie jak bot, crawler, spider i curl.
Identyfikacja typu urządzenia opiera się głównie na wskaźnikach mobilnych: UA zawierające Mobile, iPhone lub Android to telefony komórkowe; te zawierające iPad, Tablet lub Kindle to tablety; wszystko inne to desktopy. Należy jednak pamiętać, że UA mogą być fałszowane (fałszowanie User-Agent). Złośliwe crawlery mogą podszywać się pod normalne przeglądarki, więc ścisła ochrona anty-crawlerowa wymaga połączenia innych sygnałów, ponieważ parsowanie UA służy tylko jako wstępny wskaźnik.
Informacje o architekturze CPU stają się dziś coraz ważniejsze: komputery Mac z serii Apple M używają architektury ARM64, tradycyjne Intel Mac używają x64; komputery z systemem Windows występują zarówno w wersji x64, jak i ARM64 (np. platformy obliczeniowe Snapdragon); urządzenia mobilne są jednolicie ARM64. Podczas dostarczania pobrań oprogramowania, jeśli możesz określić architekturę użytkownika z UA i bezpośrednio podać odpowiedni instalator (np. rozróżniając Intel/Apple Silicon .dmg lub x64/ARM64 .exe), znacznie poprawiasz doświadczenie użytkownika.
Ważne jest, aby pamiętać o ograniczeniach parsowania UA: UA mogą być modyfikowane lub fałszowane przez użytkowników lub rozszerzenia; nowe wersje przeglądarek mogą zmieniać formaty UA, co powoduje awarię wzorców regex; Windows 11 nie można odróżnić od Windows 10 przez UA, ponieważ zachowuje numer wersji NT 10.0; w iOS wszystkie przeglądarki firm trzecich (Chrome, Firefox dla iOS) są zobowiązane do używania silnika WebKit, więc ich UA noszą identyfikatory Safari. Parsowanie tego narzędzia jest odpowiednie dla większości scenariuszy, w tym debugowania programistycznego i analizy logów, ale w kontekstach o wysokim bezpieczeństwie używaj wieloskładnikowego osądu, łącząc IP, odciski palców TLS i inne sygnały.