Введение

Программное обеспечение, действующее от имени пользователя.

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

Использование в запросах клиентов

Когда программный агент работает в сетевом протоколе, он часто идентифицирует себя, тип приложения, операционную систему, модель устройства, поставщика программного обеспечения или версию программного обеспечения, отправляя характерную идентификационную строку своему взаимодействующему узлу. В протоколах HTTP, SIP и NNTP эта идентификация передается в поле заголовка "User-Agent". Боты, такие как веб-сканеры, часто также включают URL и/или адрес электронной почты, чтобы администратор сайта мог связаться с оператором бота. В HTTP "строка User-Agent" часто используется для согласования контента, когда сервер выбирает подходящий контент или операционные параметры для ответа. Например, веб-сервер может использовать строку User-Agent для выбора вариантов на основе известных возможностей конкретной версии клиентского программного обеспечения. Концепция адаптации контента встроена в стандарт HTTP в RFC 1945 "для адаптации ответов и обхода ограничений конкретных User-Agent". Строка User-Agent является одним из критериев, по которым веб-сканеры могут быть исключены из доступа к определенным частям веб-сайта с использованием стандарта Robots Exclusion Standard (файл robots.txt). Как и в случае многих других заголовков HTTP-запросов, информация в строке User-Agent вносит вклад в данные, которые клиент отправляет на сервер, поскольку эта строка может существенно различаться у разных пользователей.

Формат для автоматизированных агентов (ботов)

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

Googlebot/2.1 (+http://www.google.com/bot.html)

От автоматических агентов ожидается соблюдение правил, указанных в специальном файле с именем "robots.txt".

Обозначения прочности шифрования

Веб-браузеры, разработанные в Соединенных Штатах, такие как Netscape Navigator и Internet Explorer, ранее использовали буквы U, I и N для указания степени шифрования в строке пользовательского агента. До 1996 года, когда правительство США разрешило экспорт шифрования с ключами длиной более 40 бит, поставщики выпускали различные версии браузеров с разной степенью защиты шифрованием. "U" обозначает "USA" (для версии со 128-битным шифрованием), "I" обозначает "International" (международный) – браузер имеет 40-битное шифрование и может использоваться в любой точке мира, а "N" обозначает (фактически) "None" (отсутствие шифрования). После снятия ограничений на экспорт большинство производителей стали поддерживать 256-битное шифрование.

Подделка пользовательского агента

Популярность различных веб-браузеров менялась на протяжении истории Интернета, что повлияло на дизайн веб-сайтов. В результате, сайты иногда разрабатываются для оптимальной работы только с определенными браузерами, а не в соответствии с едиными стандартами, установленными World Wide Web Consortium (W3C) или Internet Engineering Task Force (IETF). Веб-сайты часто содержат код для определения версии браузера и адаптации отображаемого дизайна на основе строки User-Agent, полученной от браузера. Это может приводить к тому, что менее популярные браузеры не получают сложный контент (хотя они могли бы его корректно отобразить) или, в крайних случаях, им вообще отказывают в доступе к контенту. Поэтому многие браузеры имеют функцию маскировки или подмены своей идентификации, чтобы получить доступ к определенному контенту на стороне сервера. Например, браузер Android идентифицирует себя как Safari (среди прочего) для обеспечения совместимости. Другие HTTP-клиенты, такие как менеджеры загрузок и офлайн-браузеры, часто позволяют изменять строку User-Agent. Следствием подмены User-Agent является неточность статистики использования веб-браузеров.

Поиск агента пользователя

Сниффинг пользовательского агента — это практика, когда веб-сайты отображают различное или адаптированное содержимое в зависимости от используемого пользовательского агента. Примером может служить функция Outlook Web Access в Microsoft Exchange Server 2003. При просмотре в Internet Explorer 6 или более новой версии отображается больше функциональности, чем на той же странице в других браузерах. Сниффинг пользовательского агента считается нежелательной практикой, поскольку он стимулирует создание дизайна, ориентированного на конкретные браузеры, и препятствует работе новых браузеров с неизвестными идентификаторами пользовательского агента. Вместо этого W3C рекомендует использовать стандартную HTML-разметку, обеспечивающую корректное отображение в максимально возможном количестве браузеров, и проверять наличие конкретных функций браузера, а не определять конкретные версии или бренды браузеров. Веб-сайты, предназначенные для отображения на мобильных телефонах, часто используют сниффинг пользовательского агента, поскольку мобильные браузеры существенно различаются между собой.

Ошибка в заголовке пользовательского агента

В 2020 году Google объявила о заморозке части заголовка User-Agent в браузере Chrome, поскольку он больше не нужен для определения возможностей браузера и в основном используется для создания отпечатков браузера. Компания заявила, что другие крупные производители веб-браузеров поддерживают это решение. Google сообщила, что новая функция под названием Client Hints заменит функциональность строки User-Agent. Начиная с Chrome 113, выпущенного в апреле 2023 года, заголовок User-Agent остается прежним, за исключением номера основной версии.

Неправильная идентификация браузера

Начиная с Firefox 110, выпущенного в феврале 2023 года, Mozilla объявила о временной фиксации части строки пользовательского агента браузера на версии 109. Это было сделано из-за того, что некоторые веб-сайты ошибочно определяли предварительную версию браузера (которая идентифицировала себя строкой Mozilla/5.0 (Windows NT 10.0; Win64; rv:110.0) Gecko/20100101 Firefox/110.0) как устаревший Internet Explorer 11 (который сообщает строку Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) как Gecko). Проблема разрешится автоматически после выпуска Firefox 120, так как только браузеры, идентифицирующие себя как версии от 110 до 119, подвергались этому влиянию.