User-Agent — HTTP-заголовок запроса, в котором клиент сообщает сведения о себе. Браузер обычно указывает семейство и версию движка, операционную систему и совместимость; робот — имя продукта и иногда адрес справки. Эти данные полезны для диагностики, но клиент заполняет их сам.
Где находится User-Agent
Браузер отправляет заголовок вместе с методом, адресом и другими HTTP-полями. Сервер получает его до формирования ответа и может записать в access log. В DevTools Chrome строку видно на вкладке Network в заголовках выбранного запроса; на сервере место зависит от Nginx, Apache, CDN или приложения.
Серверный заголовок User-Agent не следует путать с JavaScript-свойством navigator.userAgent. Они обычно связаны, но клиентский код работает после загрузки страницы, может не выполняться у робота и не является надёжным источником для сетевых правил.
GET /articles HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (...) Chrome/...
Accept: text/html
Почему строка выглядит странно
Фрагмент Mozilla/5.0 встречается у браузеров, которые не относятся к старому Mozilla, из-за десятилетий совместимости и серверных проверок. Далее идут комментарии в скобках, названия движков и продуктов. Строка выросла из взаимных маскировок: сайты отдавали функции только известным браузерам, а новые клиенты копировали знакомые маркеры.
Поэтому парсить её простым разделением по пробелам нельзя. Одно название может встречаться как признак совместимости, а порядок и набор токенов различаются. Для аналитики используют поддерживаемые базы регулярных выражений, сохраняя и исходное значение на случай ошибки классификации.

Что можно и нельзя определять
Строка подходит для статистической классификации: семейство браузера, примерная версия, тип устройства, известный шаблон робота. Она помогает найти, какие клиенты получают ошибку, или сравнить поведение мобильной и настольной версий. Из неё нельзя достоверно узнать человека, модель устройства во всех случаях, реальную операционную систему или подлинность поискового робота.
Клиенты изменяют строку ради приватности, совместимости или обхода фильтров. Прокси и автоматические инструменты также задают своё значение. Нельзя принимать оплату, разрешать административный путь или отключать защиту только потому, что строка совпала с ожидаемой.
| Задача | User-Agent достаточен? |
|---|---|
| Отладить ошибку в версии браузера | Как один из сигналов |
| Посчитать примерные доли клиентов | Да, с погрешностью |
| Проверить настоящего Googlebot | Нет, нужен IP/DNS |
| Выдать секретный функционал | Нет |
| Проверить поддержку CSS или API | Нет, лучше feature detection |
Сокращение строки и Client Hints
Браузеры сокращают детальность User-Agent, чтобы уменьшить пассивное fingerprinting и хрупкие проверки версий. В Chromium часть сведений можно запросить через User-Agent Client Hints: сервер объявляет нужные подсказки, а браузер решает, какие значения передать с учётом политики и защищённого контекста.
Client Hints не дают разрешения собирать всё подряд и не превращают детектирование в точную идентификацию пользователя. Для адаптивной вёрстки используйте CSS и возможности платформы. Запрашивайте дополнительные поля только там, где функция действительно зависит от них, и учитывайте требования приватности.

Как работать с User-Agent в приложении
Записывайте исходную строку вместе с временем, URL, статусом и идентификатором запроса. Нормализованную категорию храните отдельно, чтобы обновление парсера не меняло исторические данные молча. Ограничьте срок хранения и доступ к логам: в сочетании с IP и другими полями они могут относиться к персональным данным.
Для JavaScript доступны ua-parser-js и isbot, для нескольких языков — базы семейства uap-core. Проверьте лицензию конкретной версии и план обновления. Ручной разбор можно сверить через UserAgents.io, но ни библиотека, ни каталог не подтверждают источник сетевого запроса.
- Сохранять исходную строку без изменения.
- Нормализовать отдельным полем и записывать версию парсера.
- Не использовать UA как средство авторизации.
- Ограничить хранение логов.
- Проверять доверенных ботов официальным методом.
User-Agent поисковых и AI-ботов
Роботы часто указывают понятное имя, но роль нужно сверять с документацией. Один поставщик может иметь отдельные агенты поиска, обучения и действий пользователя. Правила robots.txt применяются к именам групп, а сетевой фильтр должен учитывать опубликованные диапазоны и DNS-проверку.
Подробная таблица Googlebot, YandexBot, bingbot, GPTBot, OAI-SearchBot и Claude находится в статье об известных ботах. Если задача связана с AI-политикой, сопоставьте правила с ai.txt; для технической картины обхода используйте краулинг-аудит.
Частые вопросы
Можно ли изменить User-Agent?
Да. Браузерные инструменты, curl и HTTP-библиотеки позволяют задать произвольную строку. Поэтому она не подтверждает личность.
User-Agent исчезнет полностью?
Браузеры сокращают его детальность и развивают Client Hints, но заголовок остаётся частью совместимости. Код не должен зависеть от точного полного текста.
Как узнать User-Agent своего браузера?
Откройте DevTools → Network, перезагрузите страницу и посмотрите Request Headers. JavaScript также показывает navigator.userAgent, но для диагностики запроса надёжнее сетевой журнал.
