Разбор строки User-Agent: что это и зачем нужно

User-Agent — это HTTP‑заголовок, который идентифицирует клиент: браузер/приложение, ОС и устройство. Серверы используют его для адаптации контента, аналитики и защиты; однако он ненадёжен (можно подделать), поэтому не полагайтесь на него единственно верно.

Оглавление {{TOC_AUTOMATIC}}

Что такое User-Agent и откуда появилась строка Mozilla/5.0

User-Agent — стандартный заголовок HTTP (req.headers['user-agent']), появившийся для совместимости в 1990‑х. Современная строка — набор токенов: базовый идентификатор, в скобках платформа/устройство, затем движок и браузер. "Mozilla" сохранилась как исторический префикс для совместимости; число (например, 5.0) — формальный маркер совместимости, а не строгая версия Firefox.

Как читать строку — по шагам и на примере

Разбирайте слева направо, выделяя блоки:

Пример: Mozilla/5.0 (Linux; Android 14; SM-G998B Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36

  • Mozilla/5.0 — базовый идентификатор (исторический).
  • (Linux; Android 14; SM-G998B Build/UP1A.231005.007) — платформа: ядро (Linux), ОС и версия (Android 14), модель устройства и build — полезно для баг‑репортов.
  • AppleWebKit/537.36 — движок рендеринга (WebKit/Blink‑производные), версия.
  • (KHTML, like Gecko) — совместимость с другими движками (индикация поведения).
  • Chrome/122.0.0.0 — имя браузера и его версия.
  • Mobile/Safari/537.36 — метки мобильной сборки и эмуляция Safari.

Короткая таблица для ориентира:

КомпонентЧто значит
Платформа (в скобках)ОС, ядро, устройство, сборка
ДвижокWebKit/Blink/Gecko и версия
Браузер/версияКонкретный клиент (Chrome, Firefox и т.д.)
Mobile / TabletТип клиента (влияет на верстку)

Чтобы быстро определить мобильность: /Mobile|Android|iPhone/i. Для точного парсинга используйте ua‑parser‑lib.

User‑Agent легко подделать (спуфинг). Не используйте его как единственный фактор при решениях безопасности.

Практическое применение и советы

Для разработчиков:

  • На клиенте: navigator.userAgent — быстрое определение, но ненадёжное. Лучше feature‑detection (Modernizr) для критичных функций.
  • На сервере: читайте req.headers['user-agent'] и используйте библиотеки (ua‑parser) для аналитики или логики, но применяйте дополнительные проверки (IP, cookies, поведение).
  • Тестирование: Chrome DevTools → Toggle device toolbar → поменять User‑Agent и размеры.

Для SEO и аналитики:

  • Отслеживайте популярные UA в логах и Search Console; оптимизируйте мобильную версию под доминирующие браузеры (обычно Android Chrome).
  • Будьте внимательны: поисковые боты могут иметь собственные UA — не блокируйте их по ошибке.

Для пользователей:

  • Менять User‑Agent можно расширениями или настройками разработчика, чтобы обойти ограничения (региональные блоки, некоторые paywall), но это может нарушать правила сервиса.

Частые ошибки

  • Полагаться на User‑Agent для аутентификации или блокировок — риск ложных срабатываний.
  • Игнорировать build‑номер — он помогает при воспроизведении багов на конкретной прошивке.
  • Пренебрегать feature‑detection: отмечать браузер как поддерживающий фичу, но не проверять реальное поведение.

FAQ

  • Нужно ли хранить полную строку в логах? Да, полезно для диагностики. Храните краткую версию и, при необходимости, полный UA.
  • Заменит ли Client Hints User‑Agent? Да, современные браузеры продвигают Client Hints (Sec‑CH-UA) для более приватной и точной передачи данных, но пока оба механизма сосуществуют.
  • Как быстро определить мобильный трафик? Простая регулярка /Mobile|Android|iPhone/i даёт 95% случаев; для точности используйте парсеры UA.

Если нужно, могу подготовить короткий скрипт на Node.js или пример регулярных выражений для ваших логов.