Заголовок пользовательского агента
В вычислениях заголовок User -Agent — это HTTP- заголовок, предназначенный для идентификации пользовательского агента, ответственного за выполнение данного HTTP-запроса. В то время как последовательность символов User-Agent
включает имя самого заголовка, значение заголовка, которое данный пользовательский агент использует для идентификации, в просторечии известно как его строка пользовательского агента . Пользовательский агент оператора компьютера, используемого для доступа к Интернету, закодировал в правилах, управляющих его поведением, знания о том, как согласовывать свою часть транзакции запрос-ответ; Таким образом, пользовательский агент играет роль клиента в системе клиент-сервер . В сетях часто считается полезной способность идентифицировать и различать программное обеспечение, обеспечивающее сетевой сеанс. По этой причине HTTP-заголовок User-Agent используется для идентификации клиентского программного обеспечения на отвечающем сервере.
Использование в запросах клиентов
[ редактировать ]Когда программный агент работает по сетевому протоколу, он часто идентифицирует себя, тип своего приложения, операционную систему , модель устройства, поставщика программного обеспечения или версию программного обеспечения, отправляя характеристическую идентификационную строку своему операционному партнеру. В HTTP, [1] ГЛОТОК, [2] и ННТП [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 . «Самый важный» компонент продукта указывается первым.
Части этой строки следующие:
- название и версия продукта ( WikiBrowser/1.0 )
- Механизм компоновки и версия ( Gecko/1.0 )
Во время первой войны браузеров многие веб-серверы были настроены на отправку веб-страниц, требующих расширенных функций, включая фреймы , клиентам, которые были идентифицированы только как какая-то версия Mozilla . [5] Другие браузеры считались более старыми продуктами, такими как Mosaic , Cello или Samba , и им отправлялся простой HTML-документ.
По этой причине большинство веб-браузеров используют строковое значение пользовательского агента следующим образом:
Например, Safari на iPad использовало следующее:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
Компоненты этой строки следующие:
- Mozilla/5.0 : ранее использовался для обозначения совместимости с механизмом рендеринга Mozilla.
- (iPad; U; ОС CPU 3_2_1, например Mac OS X; en-us) : Подробная информация о системе, в которой работает браузер.
- AppleWebKit/531.21.10 : платформа, которую использует браузер.
- (KHTML, например Gecko) : сведения о платформе браузера.
- Mobile/7B405 : используется браузером для обозначения конкретных улучшений, доступных непосредственно в браузере или через третьих лиц. Примером этого является Microsoft Live Meeting, которая регистрирует расширение, чтобы служба Live Meeting знала, установлено ли уже программное обеспечение, что означает, что оно может упростить присоединение к собраниям.
До перехода на 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. Это было сделано из-за того, что несколько веб-сайтов неправильно распознали разрабатываемую версию браузера (которая идентифицировала себя по строке Mozilla/5.0 (Windows NT 10.0; Win64; rv:110.0) Gecko/20100101 Firefox/110.0
) [17] как устаревший Internet Explorer 11 (который сообщает Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
). [18] Проблема исчезнет сама собой после выпуска Firefox 120, поскольку было замечено, что она затрагивает только браузеры, идентифицирующие себя как с 110 по 119. [19]
См. также
[ редактировать ]- Обнюхивание браузера
- Список полей заголовка HTTP
- Стандарт исключения роботов
- Профиль пользовательского агента (UAProf)
- Сокращение пользовательского агента
- Движок веб-браузера
- Веб-сканер
- Универсальный файл ресурсов беспроводной сети (WURFL)
Ссылки
[ редактировать ]- ^ «RFC-9110: Семантика HTTP» . IETF . Проверено 28 июля 2022 г.
- ^ RFC 3261, SIP: протокол инициации сеанса , IETF, Интернет-сообщество (2002)
- ^ Формат статьи Netnews . IETF . Ноябрь 2009 г. сек. 3.2.13. дои : 10.17487/RFC5536 . РФК 5536 .
- ^ Экерсли, Питер (27 января 2010 г.). «Версии браузера в среднем несут 10,5 бит идентификационной информации» . Фонд электронных границ . Проверено 25 августа 2011 г.
- ^ История строки пользовательского агента браузера . ВебАИМ.
- ^ «Строки пользовательского агента Opera: Opera 15 и последующие версии» . dev.opera.com. 15 июля 2013 года . Проверено 5 мая 2014 г.
- ^ Завински, Джейми (28 марта 1998 г.). «строки пользовательского агента (устарело)» . сайт mozilla.org . Проверено 8 января 2010 г.
- ^ Бурштейн жалуется: «... мне отказывали, пока я не вернусь с Netscape»
- ^ «Браузер Android сообщает о себе как Apple Safari» . Архивировано из оригинала 6 августа 2011 года . Проверено 9 августа 2011 г.
- ^ «Строка пользовательского агента объяснила: браузер 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
- ^ Пембертон, Стивен. «Служба проверки разметки W3C» . W3C . Проверено 18 октября 2011 г.
- ^ Клэри, Боб (10 февраля 2003 г.). «Обнаружение браузера и кросс-браузерная поддержка» . Центр разработчиков Mozilla . Мозилла . Архивировано из оригинала 17 ноября 2011 г. Проверено 30 мая 2009 г.
- ^ «Поэтапное прекращение поддержки пользовательского агента в Chrome» . ИнфоQ . Проверено 25 марта 2020 г.
- ^ Чимпану, Каталин. «Google постепенно отказывается от строк пользовательского агента в Chrome» . ЗДНет . Проверено 25 марта 2020 г.
- ^ «Сокращение количества пользовательских агентов» . www.chromium.org . Проверено 13 июля 2023 г.
- ^ «Примечания к выпуску Firefox» . сайт mozilla.org . Проверено 8 апреля 2023 г.
- ^ «www.bestbuy.com – Firefox не поддерживается браузером» . github.com . Проверено 8 апреля 2023 г.
- ^ Шуберт, Деннис. «Заморозьте сегмент 'rv:' в строке User Agent на 'rv:109.0', чтобы избежать ошибочного обнаружения IE11» . bugzilla.mozilla.org . Проверено 8 апреля 2023 г.
- ^ Петерсон, Крис. «Удалите зависший обходной путь 'rv:109.0' IE11 UA после того, как Firefox достигнет версии 120 (настольный компьютер и Android)» . bugzilla.mozilla.org . Проверено 8 апреля 2023 г.