Открыть сервис

User agent: определение и принципы работы

User agent (с англ. — «пользовательский агент», также UA) — строка в HTTP-запросе, идентифицирующая клиентское приложение, которое обращается к веб-серверу. Эта строка передается в составе заголовка User-Agent и позволяет серверу определить тип устройства, операционную систему и браузер пользователя, а также иное программное обеспечение, инициирующее сетевое взаимодействие.

Назначение и принцип работы

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

Формат строки не является строго стандартизированным, но исторически сложилась следующая структура: сначала указывается название продукта и его версия, затем в круглых скобках перечисляются совместимость, операционная система и архитектура, после чего перечисляются дополнительные компоненты. Например, типичная строка браузера Google Chrome выглядит так:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Здесь Mozilla/5.0 — исторический маркер совместимости, Windows NT 10.0 — операционная система, AppleWebKit и KHTML — движки рендеринга, с которыми браузер совместим, а Safari — дополнительный идентификатор, оставшийся от ранних версий Chrome.

История возникновения

Происхождение строки User-Agent связано с ранними днями Всемирной паутины. Первый популярный браузер NCSA Mosaic отправлял серверам строку, начинавшуюся с NCSA_Mosaic/2.0. Когда появился браузер Netscape Navigator, его создатели добавили в строку префикс Mozilla/1.0 (от сочетания «Mosaic killer»), чтобы серверы, распознававшие только Mosaic, не отказывали новому браузеру в доступе.

Позднее, когда Microsoft создала Internet Explorer, она включила в его строку Mozilla/4.0, чтобы обеспечить совместимость с сайтами, рассчитанными на Netscape. Похожим образом поступили разработчики Safari, добавив в строку упоминание KHTML, а затем и Chrome, который включил в свою строку Safari для корректной работы с сайтами, проверявшими только наличие Safari. В результате современные строки User-Agent содержат множество упоминаний устаревших программ, что является следствием исторического наслоения и политики совместимости.

Классификация пользовательских агентов

Браузеры

Наиболее распространенный тип user agent — веб-браузеры. Строки современных браузеров (Chrome, Firefox, Safari, Opera, Edge) содержат информацию о версии движка, операционной системе и архитектуре процессора.

Поисковые роботы

Поисковые системы используют собственные user agent для индексации сайтов. Например, Googlebot, YandexBot, Bingbot. Эти строки позволяют владельцам сайтов отличать трафик от реальных пользователей и настраивать правила доступа через файл robots.txt.

Мобильные приложения

Нативные приложения для смартфонов и планшетов также отправляют строки User-Agent, которые часто содержат название приложения, версию ОС и модель устройства. Это позволяет серверам предоставлять корректные данные в зависимости от платформы.

Скрипты и автоматизированные инструменты

Библиотеки для автоматизации (например, Python-библиотека requests), программы для тестирования и парсинга отправляют собственные строки, которые часто содержат название библиотеки и версию языка программирования.

Применение

Адаптивная верстка

Одно из ключевых применений — определение типа устройства для выдачи адаптивной версии сайта. Хотя современные сайты преимущественно используют CSS-медиазапросы для адаптации под размер экрана, серверная идентификация по User-Agent по-прежнему применяется для редиректов на отдельные мобильные поддомены (например, m.example.com).

Статистика и аналитика

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

Борьба с ботами

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

Контроль совместимости

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

Подделка и скрытие строки

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

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

Проблемы приватности

Строка User-Agent в сочетании с другими HTTP-заголовками (например, Accept-Language) может быть использована для создания цифрового отпечатка браузера — уникального набора характеристик, позволяющего отслеживать пользователя в интернете без использования файлов cookie. Из-за этого некоторые браузеры, ориентированные на приватность (например, Firefox в режиме Strict Enhanced Tracking Protection), сокращают объем информации в строке User-Agent или отправляют обобщенные значения.

Перспективы развития

Технология User-Agent считается устаревшей, но продолжает использоваться повсеместно. В 2020-х годах компания Google предложила инициативу Client Hints, которая предполагает отказ от единой строки в пользу набора отдельных заголовков, запрашиваемых сервером по мере необходимости. Это позволяет сократить объем передаваемых данных и повысить приватность, однако полный отказ от User-Agent не произошел из-за широкой распространенности технологии и необходимости обратной совместимости.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →