В вычислении , агент пользователя является любое программное обеспечение, действующее от имени пользователя , который «извлекает, оказывает и облегчает взаимодействие конечных пользователей с веб - контентом.» [1] Пользовательский агент - это особый вид программного агента .
Некоторыми яркими примерами пользовательских агентов являются веб-браузеры и программы чтения электронной почты . Часто пользовательский агент действует как клиент в системе клиент-сервер . В некоторых контекстах, например в протоколе инициации сеанса (SIP), термин « пользовательский агент» относится к обеим конечным точкам сеанса связи. [2]
Идентификация пользовательского агента
Когда программный агент работает в сетевом протоколе, он часто идентифицирует себя, свой тип приложения, операционную систему , поставщика программного обеспечения или версию программного обеспечения, отправляя характеристическую строку идентификации своему рабочему партнеру. В протоколах HTTP , [3] SIP, [2] и NNTP [4] этот идентификатор передается в поле заголовка User-Agent . Боты , такие как поисковые роботы, часто также включают URL-адрес и / или адрес электронной почты, чтобы веб-мастер мог связаться с оператором бота.
Использование в HTTP
В HTTP строка User-Agent часто используется для согласования содержимого , когда исходный сервер выбирает подходящий контент или рабочие параметры для ответа. Например, строка User-Agent может использоваться веб-сервером для выбора вариантов на основе известных возможностей конкретной версии клиентского программного обеспечения. Концепция адаптации контента встроена в стандарт HTTP в RFC 1945 «с целью адаптации ответов, чтобы избежать определенных ограничений пользовательского агента».
Строка User-Agent является одним из критериев, по которому поисковые роботы могут быть исключены из доступа к определенным частям веб-сайта с использованием Стандарта исключения роботов ( файл robots.txt ).
Как и во многих других заголовках HTTP-запросов, информация в строке «User-Agent» вносит свой вклад в информацию, которую клиент отправляет на сервер, поскольку строка может значительно отличаться от пользователя к пользователю. [5]
Формат для веб-браузеров, управляемых человеком
Формат строки User-Agent в настоящее время определяется разделом 5.5.3 Семантики и содержимого HTTP / 1.1 . Формат строки User-Agent в HTTP - это список токенов продукта (ключевых слов) с дополнительными комментариями. Например, если продукт пользователя называется WikiBrowser, строка его пользовательского агента может быть WikiBrowser / 1.0 Gecko / 1.0 . Первым указывается «самый важный» компонент продукта.
Части этой строки следующие:
- название и версия продукта ( WikiBrowser / 1.0 )
- верстка и версия ( Gecko / 1.0 )
Во время первой войны браузеров многие веб-серверы были настроены для отправки веб-страниц, требующих расширенных функций, включая фреймы , клиентам, которые были идентифицированы только как некоторая версия Mozilla . [6] Другие браузеры, такие как Mosaic , Cello или Samba , считались устаревшими , и им отправлялся простой HTML-документ.
По этой причине большинство веб-браузеров используют строковое значение User-Agent следующим образом:
Mozilla / [версия] ([информация о системе и браузере]) [платформа] ([сведения о платформе]) [расширения] . Например, в Safari на iPad использовалось следующее:
Mozilla / 5.0 (iPad; U; CPU OS 3_2_1, например Mac OS X; en-us) AppleWebKit / 531.21.10 (KHTML, например Gecko) Mobile / 7B405
Компоненты этой строки следующие:
- Mozilla / 5.0 : ранее использовалось для обозначения совместимости с механизмом рендеринга Mozilla.
- (iPad; U; CPU OS 3_2_1, например Mac OS X; en-us) : сведения о системе, в которой работает браузер.
- AppleWebKit / 531.21.10 : платформа, которую использует браузер.
- (KHTML, например Gecko) : сведения о платформе браузера.
- Мобильный / 7B405 : используется браузером для обозначения конкретных улучшений, доступных непосредственно в браузере или через третьих лиц. Примером этого является Microsoft Live Meeting, которая регистрирует расширение, чтобы служба Live Meeting знала, установлено ли уже программное обеспечение, что означает, что она может упростить процесс присоединения к собраниям.
До перехода на кодовую базу Chromium Opera была наиболее широко используемым веб-браузером, в котором строка User-Agent не начиналась с «Mozilla» (вместо этого начиналась с «Opera»). С 15 июля 2013 г. [7] строка User-Agent Opera начинается с «Mozilla / 5.0» и, чтобы избежать столкновения с правилами устаревшего сервера, больше не включает слово «Opera» (вместо этого используется строка «OPR» для обозначения Opera версия).
Формат для автоматических агентов (ботов)
Инструменты автоматического сканирования Интернета могут использовать упрощенную форму, где важным полем является контактная информация в случае возникновения проблем. По соглашению слово «бот» включается в имя агента. [8] Например:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
Ожидается, что автоматические агенты будут следовать правилам в специальном файле под названием « robots.txt ».
Подмена пользовательского агента
Популярность различных продуктов для веб-браузеров менялась на протяжении всей истории Интернета, и это повлияло на дизайн веб-сайтов таким образом, что веб-сайты иногда проектируются так, чтобы они хорошо работали только с определенными браузерами, а не в соответствии с едиными стандартами Всемирной паутины. Консорциум (W3C) или Инженерная группа Интернета (IETF). Веб-сайты часто включают код для определения версии браузера, чтобы настроить дизайн страницы, отправляемой в соответствии с полученной строкой пользовательского агента. Это может означать, что менее популярные браузеры не отправляют сложный контент (даже если они могут правильно с ним справиться) или, в крайних случаях, отказываются от всего контента. [9] Таким образом, различные браузеры имеют возможность скрывать или подделывать свою идентификацию, чтобы принудительно использовать определенный контент на стороне сервера. Например, браузер Android идентифицирует себя как Safari (помимо прочего) для обеспечения совместимости. [10] [11]
Другие клиентские программы HTTP, такие как менеджеры загрузки и автономные браузеры , часто имеют возможность изменять строку пользовательского агента.
Спам-боты и веб-парсеры часто используют поддельные пользовательские агенты.
Результатом подмены пользовательского агента может стать неточность собранной статистики использования веб-браузера .
Обнюхивание пользовательского агента
Обнюхивание пользовательского агента - это практика, когда веб-сайты показывают различный или измененный контент при просмотре с помощью определенных пользовательских агентов. Примером этого является функция Outlook Web Access в Microsoft Exchange Server 2003. При просмотре в Internet Explorer 6 или новее отображается больше функциональных возможностей по сравнению с той же страницей в любых других браузерах. Обнюхивание пользовательского агента считается плохой практикой, поскольку оно поощряет дизайн, специфичный для браузера, и наказывает новые браузеры с нераспознанными идентификаторами пользовательского агента. Вместо этого W3C рекомендует создавать стандартную разметку HTML [12], позволяющую корректно отображать данные в максимально возможном количестве браузеров, и тестировать определенные функции браузера, а не определенные версии или бренды браузера. [13]
Веб-сайты, предназначенные для отображения на мобильных телефонах, часто полагаются на сниффинг пользовательского агента, поскольку мобильные браузеры часто сильно отличаются друг от друга.
Обозначения стойкости шифрования
Веб-браузеры, созданные в США, такие как Netscape Navigator и Internet Explorer , ранее использовали буквы U, I и N для указания силы шифрования в строке пользовательского агента. До 1996 года, когда правительство Соединенных Штатов запретило экспортировать шифрование с ключами длиной более 40 бит, поставщики поставляли различные версии браузеров с разной степенью шифрования. «U» означает «США» (для версии со 128-битным шифрованием), «I» означает «международный» - браузер имеет 40-битное шифрование и может использоваться в любой точке мира, а «N» означает ( de facto ) вместо "None" (без шифрования). [14] После снятия экспортных ограничений большинство поставщиков поддержали 256-битное шифрование.
Прекращение поддержки заголовка User-Agent
В 2020 году Google объявил, что прекращает поддержку заголовка User-Agent в своем браузере Google Chrome . Они заявили, что другие крупные поставщики веб-браузеров поддержали этот шаг, но не знают, когда другие поставщики последуют их примеру. [15] Google заявил, что новая функция под названием Client Hints заменит функциональность строки User-Agent. [16]
Смотрите также
- Стандарт исключения роботов
- Поисковый робот
- Универсальный файл ресурсов беспроводной связи (WURFL)
- Профиль агента пользователя (UAProf)
- Обнюхивание браузера
- Движок веб-браузера
Рекомендации
- ^ «Определение пользовательского агента W3C» . www.w3.org. 16 июня 2011 . Проверено 20 октября 2018 .
- ^ a b RFC 3261, SIP: протокол инициации сеанса , IETF, The Internet Society (2002)
- ^ RFC 7231, Протокол передачи гипертекста (HTTP / 1.1): семантика и контент , IETF, The Internet Society (июнь 2014 г.)
- ^ Формат статьи Netnews . IETF . Ноябрь 2009. с. 3.2.13. DOI : 10,17487 / RFC5536 . RFC 5536 .
- ^ Питер Экерсли. « Версии браузеров несут в среднем 10,5 бит идентифицирующей информации », Electronic Frontier Foundation , 27 января 2010 г. Дата обращения 25 августа 2011 г.
- ^ История строки пользовательского агента браузера . WebAIM.
- ^ «Строки пользовательского агента Opera: Opera 15 и выше» . dev.opera.com. 15 июля 2013 . Проверено 5 мая 2014 .
- ^ "https://www.rankwatch.com/blog/handle-bot-herding-and-spider-wrangling-for-rankings/"
- ^ Бурштейн жалуется «... Я был отвергнут , пока я не вернусь с Netscape»
- ^ «Браузер Android сообщает о себе как Apple Safari» . Архивировано из оригинала 6 августа 2011 года . Проверено 9 августа 2011 года .
- ^ «Объяснение строки пользовательского агента: браузер Android Webkit» . UserAgentString.com . Проверено 29 июля 2012 года .
Mozilla / 5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build / FRF91) AppleWebKit / 533.1 (KHTML, как Gecko) Версия / 4.0 Mobile Safari / 533.1
- ^ Пембертон, Стивен. «Служба проверки разметки W3C» . W3C . Проверено 18 октября 2011 .
- ^ Клэри, Боб (10 февраля 2003 г.). «Обнаружение браузера и кроссбраузерная поддержка» . Центр разработчиков Mozilla . Mozilla . Проверено 30 мая 2009 .
- ^ Завински, Джейми (28 марта 1998 г.). «Строки пользовательского агента (устарело)» . mozilla.org . Проверено 8 января 2010 .
- ^ «Прекращение поддержки Chrome для агента пользователя» . InfoQ . Проверено 25 марта 2020 .
- ^ Чимпану, Каталин. «Google постепенно откажется от строк пользовательского агента в Chrome» . ZDNet . Проверено 25 марта 2020 .