HTTPQUERY
Русский

User-Agent

Применение

Клиенты включают User-Agent в каждый запрос, чтобы сообщить серверу о приложении, операционной системе и движке рендеринга. Серверы используют эти сведения для согласования содержимого, аналитики и подстройки под особенности совместимости.

Значение следует структурированному формату из продуктовых токенов. Каждый токен состоит из названия продукта и необязательной версии, за которыми идут необязательные комментарии в скобках. Несколько токенов разделяются пробелами.

User-Agent: <product>/<version> (<comment>) <product>/<version>

На практике строки User-Agent браузеров стали длинными и сложными из-за исторических схем совместимости. Большинство браузеров по унаследованным причинам указывают Mozilla/5.0 в качестве первого токена, затем сведения о платформе в комментарии, а после — токены движка и браузера.

Серверы, отдающие разное содержимое в зависимости от значения User-Agent, реализуют одну из форм согласования содержимого. Поисковые роботы идентифицируют себя через этот заголовок, что позволяет серверам применять логику, специфичную для краулеров. Системы обнаружения ботов анализируют шаблоны User-Agent, чтобы отличить автоматизированный трафик от посетителей-людей.

Семейство заголовков Sec-CH-UA предлагает структурированную альтернативу строке User-Agent. User-Agent Client Hints передают ту же информацию в разобранном, низкоэнтропийном виде. По умолчанию браузер отправляет минимальный набор подсказок, а сервер запрашивает дополнительные сведения через заголовок ответа Accept-CH. Это сокращает поверхность для пассивного снятия отпечатков по сравнению с полной строкой User-Agent.

product

Идентификатор продукта для клиентского программного обеспечения. По соглашению наиболее значимый продукт указывается первым.

version

Строка версии, связанная с предшествующим продуктовым токеном и отделённая косой чертой.

comment

Дополнительные сведения в скобках, обычно описывающие операционную систему, устройство или платформу. Комментарии располагаются после пары product/version.

Пример

Десктопный браузер отправляет строку User-Agent, содержащую платформу, движок рендеринга и версию браузера. Префикс Mozilla/5.0 — исторический артефакт, присутствующий во всех современных браузерах.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.0.0.0 Safari/537.36

Мобильный браузер включает в раздел комментария сведения об устройстве и мобильной платформе.

User-Agent: Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.0.0.0 Mobile Safari/537.36

Сокращение UA в Chrome фиксирует минорную часть, сборку и патч на значении 0.0.0. Мажорная версия увеличивается с каждым выпуском.

Поисковые роботы используют для идентификации характерные значения User-Agent. В комментарии часто содержится URL, ведущий на документацию о краулере.

User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Bingbot использует вечнозелёную строку UA на базе Chromium. Компонент версии W.X.Y.Z обновляется автоматически, подстраиваясь под текущий выпуск Chrome.

Десктоп:

User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/W.X.Y.Z Safari/537.36

Мобильные устройства:

User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Инструменты командной строки и HTTP-библиотеки отправляют более короткие и простые значения.

User-Agent: curl/8.4.0

Собственные API-клиенты и боты указывают описательное название продукта, версию и контактный URL:

User-Agent: MyBot/1.0 (+https://example.re/bot)

Приватность

Строка User-Agent — значимый вектор для снятия отпечатка браузера. Сочетание браузера, версии, ОС и сведений о платформе образует почти уникальный идентификатор, который отслеживающие скрипты используют без cookie и явного согласия.

Инициатива Chrome по сокращению User-Agent фиксирует часть строки и переносит подробные сведения в Sec-CH-UA Client Hints, которые требуют явного согласия сервера через Accept-CH. Это переводит подробные данные о клиенте из пассивного раскрытия в режим активного согласования.

Серверам не следует полагаться на User-Agent при принятии решений, связанных с безопасностью, таких как аутентификация или контроль доступа. Клиенты управляют этим значением и подделывают строку без всякого труда.