Как определить браузер и операционную систему по строке User-Agent
Вставьте полную строку User-Agent и запустите разбор, чтобы получить классификации браузера, системы, движка и устройства. Пустой ввод приводит к признаку ошибки и примеру строки, а не к классификации среды.
Что подготовить для разбора
Строка User-Agent содержит текстовые признаки, по которым User Agent Parser может классифицировать браузер, версию браузера, операционную систему, версию системы, движок отображения и тип устройства. Такой разбор подходит для проверки диагностических данных, анализа сообщения об ошибке или сравнения поведения настольного и мобильного клиента.
Для обработки нужен исходный текст User-Agent, а не краткая подпись вроде «Chrome на Windows». В полной строке могут присутствовать маркеры браузера, версии, системы, движка и устройства. Инструмент сопоставляет их с поддерживаемыми правилами, поэтому состав результата зависит от конкретного текста. Для узнаваемых Chrome и Firefox может извлекаться версия с точками; среди распознаваемых систем указаны Windows, macOS, Android, iOS и Linux. Подходящие фрагменты AppleWebKit и Gecko также могут дать классификацию движка.
Поле User-Agent необязательно, однако отсутствие значения обрабатывается отдельно: вместо классификации появляется признак ошибки и пример строки. Поэтому для проверки среды подготовьте непустой исходный текст.
Порядок действий
-
Найдите исходный User-Agent в диагностических данных или другом месте, где он был передан. Скопируйте строку полностью, сохранив скобки, косые черты, точки, пробелы и остальные разделители. Если рядом находятся разные текстовые значения, выберите строку, описывающую клиент.
-
Вставьте скопированный текст в поле User-Agent. Не заменяйте его названием браузера и не сокращайте до слов «Chrome» или «Android»: в таком варианте могут исчезнуть признаки, необходимые для сопоставления. Пустое поле допустимо оставить для проверки реакции на отсутствие ввода, но полезная классификация в этом случае не выполняется.
-
Запустите разбор доступным элементом управления и просмотрите выведенные признаки. Отдельно проверьте браузер, его версию, операционную систему, версию системы, движок и устройство. Распознавание выполняется по переданному тексту без сетевого доступа.
-
Для браузера учитывайте порядок проверок. Chrome требует фрагмент
Chrome/, но исключается при наличииChromium,Edg/илиOPR/. Firefox требуетFirefox/и исключаетSeamonkey; Safari учитываетSafari/, если в строке нетChrome. Дополнительные проверки распознаютEdg/,OPR/и Opera, поэтому пересекающиеся маркеры нужно читать вместе. -
Сверьте систему и устройство с исходными фрагментами. Подходящие версии Windows, macOS, Android, iOS и Linux могут быть нормализованы. Android или iPhone могут привести к Mobile, iPad к Tablet, а
Mobile,Android.*Mobile,iPadиTabletвлияют на итоговое значение. Текстыbot,crawlerиspiderбез учёта регистра могут привести к Bot/Crawler. -
Если одно из полей получило Unknown, сопоставьте его с исходной строкой и проверьте, не потеряна ли часть текста. Это значение относится к конкретному полю, для которого не найдено поддерживаемое совпадение.
Как читать полученные поля
Читайте ответ как набор независимых классификаций, полученных из текстовых маркеров, а не как описание, составленное по одному названию браузера. Значение браузера и его версии показывает, какие признаки сработали для этих полей; версия операционной системы появляется только при подходящем фрагменте. WebKit связан с подходящим текстом AppleWebKit, а Gecko требует совпадения текста Gecko с версией.
Пересечение маркеров объясняет часть неожиданных ответов. Например, присутствие Edg/ или OPR/ не следует трактовать как обычный Chrome, поскольку эти проверки исключают соответствующую классификацию. Для Safari важна одновременная проверка отсутствия Chrome, а для Firefox имеет значение отсутствие Seamonkey.
Тип устройства следует оценивать после просмотра всей строки. Начальное значение Desktop может быть изменено признаками Android, iPhone, iPad, Tablet, Mobile или словами, связанными с ботом. Поэтому название системы само по себе не определяет итоговый тип. Если результат содержит Unknown, он говорит только об отсутствии поддерживаемого совпадения для этого поля и не подтверждает отсутствие реальной среды.
При диагностике сравнивайте вывод с исходным текстом по полям: так проще заметить обрезанную строку, исключающий маркер или неподдерживаемый формат версии.
Практический пример
Вы проверяете полную строку от настольного клиента на Windows и хотите увидеть, какие поля будут сформированы по её текстовым признакам.
Вставьте строку 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/, AppleWebKit/ и обозначение Windows в скобках.
Ответ может содержать браузер Chrome, версию 120.0.0.0, операционную систему Windows, движок WebKit и устройство Desktop, если указанные признаки распознаны по правилам.
Ограничения
- Результат ограничен поддерживаемыми текстовыми шаблонами: отдельные браузеры, системы, движки, боты и форматы версий могут не распознаться или попасть под другое правило при пересечении маркеров.
Частые ошибки
- Причина ошибки: вместо полной строки передано короткое название браузера или обрезанный фрагмент, в котором нет нужных маркеров. Исправьте ввод, вставив исходный User-Agent целиком.
Частые вопросы
Какие сведения показывает разбор User-Agent?
При поддерживаемых совпадениях ответ может включать браузер, его версию, операционную систему, версию системы, движок и устройство. Для поля без подходящего шаблона используется Unknown, поэтому набор заполненных значений зависит от строки.
Что будет, если оставить поле User-Agent пустым?
Если значение не введено, классификация не выполняется: появляется признак ошибки и пример User-Agent. Чтобы получить поля результата, передайте непустую исходную строку с маркерами клиента и версии, если они присутствуют.
Почему браузер иногда определяется неожиданно?
Причиной может быть пересечение текстовых признаков и порядок их проверок. Например, Edg/ или OPR/ исключают Chrome, а Safari/ учитывается только при отсутствии Chrome, поэтому итог зависит от всей строки.