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 →
