В вычислении , агент пользователя является любое программное обеспечение, действующее от имени пользователя , который «извлекает, оказывает и облегчает взаимодействие конечных пользователей с веб - контентом.» [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 .
- ^ Clary, Bob (10 February 2003). "Browser Detection and Cross Browser Support". Mozilla Developer Center. Mozilla. Retrieved 2009-05-30.
- ^ Zawinski, Jamie (28 March 1998). "user-agent strings (obsolete)". mozilla.org. Retrieved 2010-01-08.
- ^ "Chrome Phasing out Support for User Agent". InfoQ. Retrieved 2020-03-25.
- ^ Cimpanu, Catalin. "Google to phase out user-agent strings in Chrome". ZDNet. Retrieved 2020-03-25.