Строка User-Agent
Разбор
Что здесь важно знать
Строка User-Agent есть в логах сервера (поле user_agent почти в каждом формате доступа), в баг-репортах из систем сбора ошибок, в DevTools → Network → любой запрос → Request Headers → user-agent. На этой странице есть и живой источник — кнопка «Мой браузер» берёт строку браузера, в котором вы сейчас сидите: удобно приложить к багу.
User-Agent врёт по построению, и это не дефект инструмента. Каждый браузер притворяется предыдущими: в строке Chrome есть и «Mozilla», и «AppleWebKit», и «Safari». Разбор читает эти наслоения по известным правилам, но строка — самоописание клиента, а не паспорт: её может выставить кто угодно, и боты этим пользуются.
Строки постепенно замораживаются. Chrome уже отдаёт огрублённую строку: реальную минорную версию и модель устройства из неё убрали (остаётся «K» вместо модели на Android у части сборок, версия вида «128.0.0.0»). Если в разборе нет модели телефона — это не пропуск разбора, это браузер её больше не сообщает. Точные данные переезжают в Client Hints (заголовки Sec-CH-UA-*), которые сервер должен запрашивать отдельно.
«Не определено» — честный ответ. Для десктопного браузера в строке нет ни «desktop», ни модели — тип устройства там просто не пишут, и инструмент говорит об этом словами, а не выдумывает. Выдуманное значение в баг-репорте хуже пустого.
Разбирает библиотека ua-parser-js (вендорится, работает в вашем браузере — строка никуда не отправляется). База правил — снимок на момент сборки: браузер, вышедший позже, может опознаться как «ближайший известный».
Частые вопросы
Строка отправляется на сервер?
Нет, разбирает библиотека ua-parser-js, лежащая на этом же сайте, прямо в браузере.
Почему не определилась модель телефона?
Свежий Chrome отдаёт замороженную строку: модель устройства и точная версия из неё убраны самим браузером. Это не пропуск разбора — данных в строке больше нет, точные значения переехали в заголовки Client Hints.
Можно ли доверять строке User-Agent?
Строка — самоописание клиента: её выставляет сам клиент, и подделать её может кто угодно. Для статистики и воспроизведения багов годится, как доказательство — нет.