Простое объяснение строки User-Agent: как она выглядит, как читать каждый токен, почему в ней до сих пор Mozilla, и как проверить свою за пару секунд.
Каждый раз, когда браузер загружает страницу, он отправляет короткую строку текста — User-Agent — самозаявленную метку, объявляющую, какой у вас браузер, движок и операционная система. На первый взгляд это выглядит как бессмысленная тарабарщина, но каждая часть — отдельный токен, и, научившись правильно её читать, вы точно поймёте, за кого вас принимает сайт.
Ключевые выводы
- User-Agent (UA) — это единый HTTP-заголовок, отправляемый при каждом запросе, который называет ваш браузер, движок рендеринга, ОС и класс устройства.
- Выглядит он так:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36— это последовательность токенов, а не сплошная фраза. - Почти все браузеры до сих пор начинают UA с
Mozilla/5.0по историческим причинам совместимости, а не потому что это действительно продукт Mozilla. - Свой UA можно мгновенно увидеть, выполнив
navigator.userAgentв DevTools, либо посмотрев заголовки запроса, которые отправляет браузер. - Поскольку строка самозаявленная и легко редактируемая, Chromium постепенно переходит на User-Agent Client Hints — более структурированную и проверяемую замену.
Что такое строка User-Agent простыми словами
Строка User-Agent — это текст, который браузер добровольно добавляет к каждому HTTP-запросу в заголовке с именем User-Agent. Её задача — позволить серверам подстраиваться: отправлять мобильную вёрстку на телефоны, предупреждать очень старые браузеры о неподдерживаемых функциях или просто фиксировать, какие браузеры реально заходят на сайт. Она существует с самых первых браузеров начала 1990-х, и формат оставался обратно совместимым всё это время — именно поэтому сегодня он выглядит настолько загромождённым.
Анатомия реальной строки User-Agent
Вот типичная строка UA десктопного Chrome, разобранная по частям:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
| Токен | Значение |
|---|---|
Mozilla/5.0 | Устаревший токен совместимости — см. ниже, он не означает, что это браузер Mozilla/Firefox |
(Windows NT 10.0; Win64; x64) | Операционная система (Windows 10/11) и архитектура процессора (64-бит) |
AppleWebKit/537.36 | Родословная движка, от которого происходит движок рендеринга |
(KHTML, like Gecko) | Фраза совместимости, заявляющая о поведении, похожем на два других исторических движка |
Chrome/124.0.0.0 | Реальный браузер и номер его версии |
Safari/537.36 | Ещё один токен совместимости, присутствующий потому, что движок Chrome, Blink, был форкнут от WebKit (движка Safari) |
Firefox и Safari следуют той же схеме, но с другими токенами — у Firefox это Gecko/20100101 Firefox/125.0, у Safari — Version/17.4 Safari/605.1.15, — однако структура (блок платформы, затем токены движка, затем имя и версия браузера) одинакова у всех.
Почему почти каждый браузер до сих пор пишет «Mozilla»
Это как раз та часть, что больше всего сбивает с толку: Chrome, Safari, Edge и даже некоторые не-браузерные инструменты начинают UA с Mozilla/5.0, хотя не имеют никакого отношения к проекту Mozilla. Вкратце история такова: в середине 1990-х внутреннее кодовое имя Netscape Navigator было «Mozilla», и сайты начали проверять этот токен, чтобы решить, поддерживает ли браузер посетителя тогда ещё продвинутые функции вроде фреймов. Когда Internet Explorer захотел получить те же функции, он добавил Mozilla в собственную строку UA, чтобы пройти эти проверки. Каждый последующий браузер сделал то же самое, лишь бы не получать урезанную версию страницы, и токен закрепился навсегда. Это окаменелость войн браузерного детектирования 1990-х, а не осмысленный идентификатор — одна из самых известных странностей в истории веба.
Как посмотреть свой User-Agent
Есть два способа, и иногда они расходятся:
Через JavaScript откройте консоль DevTools вашего браузера и выполните:
navigator.userAgent
Это вернёт точную строку, которую могут прочитать скрипты страницы.
Через сырой запрос откройте панель Network в DevTools, перезагрузите страницу, кликните на любой запрос и найдите заголовок User-Agent среди заголовков запроса. Это то, что реально получает сервер — обычно идентично navigator.userAgent, хотя расширение браузера или прокси могут переписать один из них, не тронув другой, а это само по себе обнаруживаемое несоответствие.
Инструмент проверки движка браузера от BrowserInsight показывает рядом ваш заявленный User-Agent и реальный движок рендеринга браузера, чтобы вы сразу увидели, совпадают ли они.
User-Agent как сигнал идентификации и фингерпринтинга
Поскольку строка UA раскрывает ОС, архитектуру, браузер и версию при каждом запросе без каких-либо вопросов, она всегда служила и пассивным сигналом идентификации — одним из входов, составляющих отпечаток браузера. Отчасти поэтому Chromium постепенно замораживает эту устаревшую строку до общего стаба и переходит на User-Agent Client Hints (UA-CH) — структурированный API, раскрывающий детали только тогда, когда сервер явно их запрашивает, а не транслирующий всё по умолчанию.
Предостережение: подделать легко, но и поймать легко
Поскольку строка UA — это просто самозаявленный текст, изменить её можно одной настройкой браузера или расширением. Люди делают это ради тестирования, доступа к контенту с ограничением по браузеру или из соображений приватности. Но UA — лишь один сигнал из десятков, которые выдаёт браузер, а остальные редко меняют, чтобы они совпадали, — поэтому страница, которая заявляет о себе как о Safari, но чей JavaScript-движок, client hints и особенности рендеринга говорят иное, быстро выдаёт это несоответствие сайту. Если вам интересно, как именно работает такое обнаружение, см. как сайты обнаруживают подмену User-Agent. Вывод для тех, кто меняет UA из любопытства: это меняет то, что говорит один заголовок, а не то, чем на самом деле является ваш браузер.
Часто задаваемые вопросы
Почему в моём User-Agent написано «like Gecko», хотя я не пользуюсь Firefox?
(KHTML, like Gecko) — ещё одна окаменелость совместимости, а не реальное заявление о вашем движке. Она сигнализирует о широкой поддержке поведения вёрстки эпохи Gecko/KHTML, чтобы старые сайты, написанные под эти движки, всё ещё нормально отображались. Она встречается в Chrome, Safari и Edge независимо от того, какой движок реально работает.
Строка User-Agent — это то же самое, что и мой отпечаток браузера?
Нет — это лишь один из входов отпечатка, а не сам отпечаток. Полный отпечаток браузера объединяет UA с рендерингом canvas, выводом WebGL, шрифтами, параметрами экрана и многим другим. Один только UA определяет широкие категории (семейство браузера, приблизительную ОС) и сам по себе не идентифицирует конкретное устройство однозначно.
Могут ли два разных браузера иметь одинаковый User-Agent?
Да. Поскольку строка самозаявленная, любой браузер технически может отправить любой текст UA, какой захочет, включая скопированный у совершенно другого браузера. Именно поэтому сайты сверяют UA с другими сигналами, а не доверяют ему в изоляции.
Строка User-Agent когда-нибудь исчезнет?
Не сразу, но её роль сокращается. Chromium постепенно замораживает устаревшую строку до малоинформативного стаба, пока User-Agent Client Hints берёт на себя роль основного структурированного канала. У Firefox и Safari пока нет аналога UA-CH, и они продолжают полагаться на традиционную строку.
Заключение
Строка User-Agent выглядит загадочно, но на деле это просто список токенов, накопленный за три с лишним десятилетия ради совместимости, — платформа, родословная движка, а также имя и версия браузера, — результат того, что браузеры старались не ломать сайты друг друга. Прочитать её несложно, стоит один раз понять схему, а проверить свою можно одной строкой в DevTools. Поскольку она самозаявленная, относитесь к ней как к утверждению, а не гарантии — и если хотите увидеть, совпадают ли ваш реальный движок и сигналы идентификации с тем, что заявляет UA, запустите проверку движка браузера от BrowserInsight.
Рекомендуем прочитать:


