stringtranslate.com

Заголовок User-Agent

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

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

Когда программный агент работает в сетевом протоколе, он часто идентифицирует себя, свой тип приложения, операционную систему , модель устройства, поставщика программного обеспечения или версию программного обеспечения, отправляя характерную строку идентификации своему рабочему партнеру. В протоколах HTTP, [1] SIP, [2] и NNTP [3] эта идентификация передается в поле заголовка User-Agent . Боты , такие как веб-сканеры, часто также включают URL и/или адрес электронной почты , чтобы веб-мастер мог связаться с оператором бота.

В HTTP «строка агента пользователя» часто используется для согласования контента , где исходный сервер выбирает подходящий контент или рабочие параметры для ответа. Например, строка агента пользователя может использоваться веб-сервером для выбора вариантов на основе известных возможностей конкретной версии клиентского программного обеспечения. Концепция адаптации контента встроена в стандарт HTTP в RFC 1945 «для адаптации ответов с целью избежания ограничений конкретного агента пользователя».

Строка агента пользователя является одним из критериев, по которым веб-сканерам может быть запрещен доступ к определенным частям веб-сайта с помощью стандарта исключения роботов ( файл robots.txt ).

Как и во многих других заголовках HTTP-запросов, информация в строке пользовательского агента влияет на информацию, которую клиент отправляет на сервер, поскольку строка может значительно различаться у разных пользователей. [4]

Формат для веб-браузеров, управляемых человеком

Формат строки агента пользователя в настоящее время определен в разделе 10.1.5 HTTP Semantics. Формат строки агента пользователя в HTTP представляет собой список токенов продукта (ключевых слов) с необязательными комментариями. Например, если продукт пользователя называется WikiBrowser, его строка агента пользователя может быть WikiBrowser/1.0 Gecko/1.0 . «Самый важный» компонент продукта указан первым.

Части этой строки следующие:

Во время первой войны браузеров многие веб-серверы были настроены на отправку веб-страниц, требующих расширенных функций, включая фреймы , клиентам, которые были идентифицированы как некая версия Mozilla . [5] Другие браузеры считались устаревшими продуктами, такими как Mosaic , Cello или Samba , и им отправлялся простой HTML-документ.

По этой причине большинство веб-браузеров используют строковое значение пользовательского агента следующим образом:

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

Компоненты этой строки следующие:

До перехода на кодовую базу Chromium Opera была наиболее широко используемым веб-браузером, не имевшим строки пользовательского агента с «Mozilla» (вместо этого она начиналась с «Opera»). С 15 июля 2013 года [6] строка пользовательского агента Opera начинается с «Mozilla/5.0» и, чтобы избежать столкновения с устаревшими правилами сервера, больше не включает слово «Opera» (вместо этого используется строка «OPR» для обозначения версии Opera).

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

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

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

Автоматизированные агенты должны следовать правилам, изложенным в специальном файле под названием « robots.txt ».

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

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

Подмена агента пользователя

Популярность различных продуктов веб-браузеров менялась на протяжении всей истории Интернета, и это повлияло на дизайн веб-сайтов таким образом, что веб-сайты иногда проектируются для хорошей работы только с определенными браузерами, а не в соответствии с едиными стандартами Консорциума Всемирной паутины (W3C) или Целевой группы по инжинирингу Интернета (IETF). Веб-сайты часто включают код для определения версии браузера, чтобы скорректировать дизайн страницы, отправленной в соответствии с полученной строкой пользовательского агента. Это может означать, что менее популярные браузеры не отправляют сложный контент (хотя они могут правильно с ним справиться) или, в крайних случаях, отклоняют весь контент. [8] Таким образом, различные браузеры имеют функцию скрытия или подделки своей идентификации, чтобы принудительно отображать определенный контент на стороне сервера. Например, браузер Android идентифицирует себя как Safari (помимо прочего) для обеспечения совместимости. [9] [10]

Другие клиентские программы HTTP, такие как менеджеры загрузок и автономные браузеры , часто имеют возможность изменять строку пользовательского агента.

Результатом подмены пользовательского агента может стать неточность собранной статистики использования веб-браузера .

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

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

Веб-сайты, предназначенные для просмотра на мобильных телефонах, часто используют анализ пользовательских агентов, поскольку мобильные браузеры часто сильно отличаются друг от друга.

Устаревание заголовка User-Agent

В 2020 году Google объявила, что заморозит части заголовка User-Agent в своем браузере Chrome , поскольку он больше не требуется для определения возможностей браузера и вместо этого в основном используется для снятия отпечатков браузера . Они заявили, что другие крупные поставщики веб-браузеров поддерживают этот шаг. [13] Google заявила, что новая функция под названием Client Hints заменит функциональность строки user agent. [14]

Начиная с Chrome 113, выпущенного в апреле 2023 года, заголовок User-Agent остается прежним, за исключением части с основной версией. [15]

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

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

Смотрите также

Ссылки

  1. ^ "RFC-9110: HTTP Semantics". IETF . Получено 28 июля 2022 г. .
  2. ^ RFC 3261, SIP: Протокол инициирования сеанса , IETF, Общество Интернета (2002)
  3. ^ Формат статьи Netnews. IETF . Ноябрь 2009. Раздел 3.2.13. doi : 10.17487/RFC5536 . RFC 5536.
  4. ^ Экерсли, Питер (27 января 2010 г.). «Версии браузера в среднем несут 10,5 бит идентификационной информации». Electronic Frontier Foundation . Получено 25 августа 2011 г.
  5. ^ История строки user-agent браузера. WebAIM.
  6. ^ "Строки агента пользователя Opera: Opera 15 и более поздние версии". dev.opera.com. 15 июля 2013 г. Получено 05.05.2014 г.
  7. Завински, Джейми (28 марта 1998 г.). "строки user-agent (устарело)". mozilla.org . Получено 08.01.2010 .
  8. Бурштейн жалуется: «... меня отвергали, пока я не вернулся с Netscape»
  9. ^ "Браузер Android сообщает о себе как о Apple Safari". Архивировано из оригинала 6 августа 2011 г. Получено 9 августа 2011 г.
  10. ^ "User Agent String explained: Android Webkit Browser". UserAgentString.com. Архивировано из оригинала 4 мая 2012 г. Получено 29 июля 2012 г. Mozilla /5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
  11. ^ Пембертон, Стивен. "Служба проверки разметки W3C". W3C . Получено 18 октября 2011 г.
  12. ^ Клэри, Боб (10 февраля 2003 г.). «Обнаружение браузера и поддержка кросс-браузера». Центр разработчиков Mozilla . Mozilla . Архивировано из оригинала 2011-11-17 . Получено 2009-05-30 .
  13. ^ "Chrome прекращает поддержку User Agent". InfoQ . Получено 25.03.2020 .
  14. ^ Чимпану, Каталин. «Google постепенно откажется от строк user-agent в Chrome». ZDNet . Получено 25.03.2020 .
  15. ^ "User-Agent Reduction". www.chromium.org . Получено 2023-07-13 .
  16. ^ "Firefox Release Notes". mozilla.org . Получено 8 апреля 2023 г. .
  17. ^ "www.bestbuy.com - Firefox - неподдерживаемый браузер". github.com . Получено 8 апреля 2023 г. .
  18. ^ Шуберт, Деннис. «Заморозьте сегмент 'rv:' в строке User Agent на 'rv:109.0', чтобы избежать ошибочного обнаружения IE11». bugzilla.mozilla.org . Получено 8 апреля 2023 г.
  19. ^ Петерсон, Крис. «Удалите замороженный обходной путь IE11 UA 'rv:109.0' после того, как Firefox достигнет версии 120 (для настольных ПК и Android)». bugzilla.mozilla.org . Получено 8 апреля 2023 г.