stringtranslate.com

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

В вычислениях заголовок 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. Формат строки пользовательского агента в HTTP представляет собой список токенов продукта (ключевых слов) с необязательными комментариями. Например, если продукт пользователя назывался WikiBrowser, строка его пользовательского агента могла бы быть WikiBrowser/1.0 Gecko/1.0 . «Самый важный» компонент продукта указывается первым.

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

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

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

Mozilla/[ версия ] ([ информация о системе и браузере ]) [ платформа ] ([ сведения о платформе ]) [ расширения ]

Например, Safari на iPad использовало следующее:

Mozilla/5.0 (iPad; U; ОС CPU 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 заменит функциональность строки пользовательского агента. [14]

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

Ошибочная идентификация браузера

Начиная с Firefox 110, выпущенного в феврале 2023 года, [16] Mozilla объявила, что временно заморозит части строки пользовательского агента браузера в версии 109. Это было сделано из-за того, что несколько веб-сайтов неправильно распознали разрабатываемую версию браузера (которая идентифицировала себя по string ) [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» . IETF . Проверено 28 июля 2022 г.
  2. ^ RFC 3261, SIP: протокол инициации сеанса , IETF, Интернет-сообщество (2002)
  3. ^ Формат статьи Netnews. IETF . Ноябрь 2009 г. сек. 3.2.13. дои : 10.17487/RFC5536 . РФК 5536.
  4. Экерсли, Питер (27 января 2010 г.). «Версии браузера в среднем несут 10,5 бит идентификационной информации». Фонд электронных границ . Проверено 25 августа 2011 г.
  5. ^ История строки пользовательского агента браузера. ВебАИМ.
  6. ^ «Строки пользовательского агента Opera: Opera 15 и последующие версии» . dev.opera.com. 15 июля 2013 года . Проверено 5 мая 2014 г.
  7. Завински, Джейми (28 марта 1998 г.). «строки пользовательского агента (устарело)». сайт mozilla.org . Проверено 8 января 2010 г.
  8. ^ Бурштейн жалуется: «... мне отказывали, пока я не вернусь с Netscape»
  9. ^ «Браузер Android сообщает о себе как Apple Safari» . Архивировано из оригинала 6 августа 2011 года . Проверено 9 августа 2011 г.
  10. ^ «Объяснение строки пользовательского агента: браузер Android Webkit» . 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, например Gecko) Версия/4.0 Mobile Safari/533.1
  11. ^ Пембертон, Стивен. «Служба проверки разметки W3C». W3C . Проверено 18 октября 2011 г.
  12. ^ Клэри, Боб (10 февраля 2003 г.). «Обнаружение браузера и кросс-браузерная поддержка». Центр разработчиков Mozilla . Мозилла . Архивировано из оригинала 17 ноября 2011 г. Проверено 30 мая 2009 г.
  13. ^ «Постепенное прекращение поддержки пользовательского агента в Chrome» . ИнфоQ . Проверено 25 марта 2020 г.
  14. ^ Чимпану, Каталин. «Google постепенно отказывается от строк пользовательского агента в Chrome». ЗДНет . Проверено 25 марта 2020 г.
  15. ^ «Сокращение пользовательского агента» . www.chromium.org . Проверено 13 июля 2023 г.
  16. ^ «Примечания к выпуску Firefox». сайт 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. ^ Петерсон, Крис. «Удалите зависшее обходное решение UA IE11 'rv:109.0' после того, как Firefox достигнет версии 120 (настольный компьютер и Android)». bugzilla.mozilla.org . Проверено 8 апреля 2023 г.