RunToolz iconRunToolz
Welcome to RunToolz!
БраузерВеб-разработкаАналитика

User Agent строки: чтение отпечатков браузера

Что эта странная строка говорит тебе о твоих посетителях и почему она часто вводит в заблуждение.

RunToolz Team21 января 2026 г.3 min read

Каждый HTTP-запрос включает заголовок User-Agent. Что-то вроде:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Это должно идентифицировать браузер. На практике это исторический беспорядок.

Почему каждый браузер лжёт

Этот user agent Chrome упоминает Mozilla, AppleWebKit, KHTML и Safari. Chrome не является ни одним из них.

Вот почему: сайты раньше проверяли user agents и подавали разный контент. Новые браузеры блокировались, потому что сайты их не распознавали.

Поэтому браузеры начали лгать. "Я совместим с Mozilla" стало стандартом. "Я совместим с AppleWebKit" было добавлено. Каждый браузер утверждает, что он каждый другой браузер.

Хотите попробовать сами?Парсить User Agent

Что ты можешь на самом деле узнать

Несмотря на хаос, user agents всё ещё содержат полезную информацию:

Имя и версия браузера: Фактический браузер обычно в конце. "Chrome/120" или "Firefox/121".

Операционная система: "Windows NT 10.0" или "Mac OS X 10_15_7" или "Linux".

Тип устройства: Мобильные user agents включают названия устройств или "Mobile".

Идентификация ботов: Googlebot, Bingbot и другие краулеры идентифицируют себя.

Частые паттерны обнаружения

Десктопный Chrome:

...Chrome/120.0.0.0 Safari/537.36

Мобильный Chrome на Android:

...Android 10; Pixel 4...Chrome/120.0.0.0 Mobile Safari/537.36

Safari на iPhone:

...iPhone; CPU iPhone OS 17_0 like Mac OS X...Safari/605.1.15

Firefox:

...Firefox/121.0

Edge, Opera, Brave и другие основаны на Chrome и выглядят похоже на Chrome.

Почему обнаружение возможностей лучше

Обнаружение user agent отвечает на "какой браузер?" Обнаружение возможностей отвечает на "может ли этот браузер делать X?"

// Обнаружение user agent (хрупкое)
if (navigator.userAgent.includes('Chrome')) {
  // предполагай возможности Chrome
}

// Обнаружение возможностей (надёжное)
if ('serviceWorker' in navigator) {
  // используй service workers
}

Браузеры меняются. User agent строки модифицируются. Обнаружение возможностей работает независимо.

Когда User Agents всё ещё важны

Аналитика. Понимание твоей аудитории: доля рынка браузеров, мобильные vs десктоп, распределение ОС.

Обнаружение ботов. Идентификация краулеров и корректировка поведения сервера.

Целевое тестирование. Воспроизведение проблем, о которых сообщают пользователи на конкретных браузерах.

Решения о поддержке унаследованного кода. Если 0.1% пользователей запускают IE11, может быть, ты прекращаешь его поддержку.

Подделка и приватность

User agents легко подделываются. Расширения приватности модифицируют их. Некоторые браузеры позволяют пользователям менять их вручную.

Не полагайся на user agents для безопасности. Это подсказки, а не аутентификация.

Фингерпринтинг браузера комбинирует user agent с другими сигналами (размер экрана, шрифты, плагины) для отслеживания. Это спорно и всё больше блокируется браузерами.

Client Hints: современная альтернатива

User-Agent Client Hints — более новый подход. Серверы запрашивают конкретную информацию:

Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Platform: "Windows"
Sec-CH-UA-Mobile: ?0

Структурированные, надёжные, уважающие приватность. Но принятие всё ещё растёт.

Библиотеки парсинга

Не парси user agents с помощью regex. Крайние случаи победят тебя.

Используй устоявшиеся библиотеки, которые поддерживают базы данных паттернов:

  • ua-parser-js (JavaScript)
  • user-agents (Python)
  • DeviceDetector (PHP)

Они обрабатывают исторический беспорядок и обновляются, когда появляются новые браузеры.


User agents полезны для аналитики и диагностики, но ненадёжны для решений о возможностях. Парси их библиотеками, предпочитай обнаружение возможностей для функциональности и помни, что любой пользователь может подделать свой user agent.