User agent

User agent — идентификационная строка клиентского приложения; обычно используется для приложений, осуществляющих доступ к веб-сайтам — браузеров, поисковых роботов и «пауков», мобильных телефонов и других устройств со встроенным доступом к веб-ресурсам.

При посещении веб-сайта клиентское приложение обычно посылает веб-серверу информацию о себе — текстовую строку, являющуюся частью HTTP-запроса, начинающуюся с User-agent: или User-Agent:, и обычно включающая такую информацию, как название и версию приложения, операционную систему компьютера и язык. У «пауков» эта строка часто содержит URL и email-адрес, по которым веб-мастер может связаться с оператором «паука».

Использование веб-сайтами

Из-за доминирования отдельных браузеров в разные периоды в истории всемирной паутины многие веб-сайты проектировались не в соответствии со стандартами W3C и IETF, а для работы с определённым браузером. Такие сайты посылают разное содержимое веб-страницы в зависимости от получаемого от клиента значения User-Agent. Это приводит к тому, что сайт можно открыть только с помощью нескольких самых популярных браузеров, а браузеры, имеющие немного отличающийся идентификатор, оказываются «запрещёнными».

Многие[какие?] веб-мастера считают такой подход плохой практикой и рекомендуют создавать HTML-разметку настолько стандартизованным, насколько это возможно, чтобы корректно отображать страницы сайта на максимальном количестве браузеров[источник не указан 78 дней].

Веб-сайты для мобильных телефонов часто вынуждены жёстко полагаться на определение User-Agent, так как браузеры на разных мобильных телефонах слишком различны. Поэтому мобильные веб-порталы обычно генерируют разные страницы в зависимости от модели мобильного телефона. Эти различия могут быть как небольшими (изменение размера изображений специально для меньших экранов), так и весьма существенными (формат WML вместо XHTML).

Строка User-agent также используется веб-мастерами для предотвращения индексирования «поисковыми пауками» некоторых страниц сайта, например когда индексирование определённых страниц не имеет смысла или конкретный «паук» создаёт большую нагрузку на сервер. Веб-мастер может использовать специальный файл robots.txt для рекомендаций «пауку» или просто настроить веб-сайт не отдавать «пауку» эти страницы.

Подделка User-agent

Причины

Искусственная несовместимость

Использование веб-сайтами строки User-agent для изменения отображения страницы часто приводит к тому, что менее популярные браузеры не получают полного содержимого страницы, даже если они могут корректно его отобразить, а в некоторых радикальных случаях такие браузеры не получают вообще ничего[1]. В связи с этим многие браузеры стали «прятать» или «подделывать» User-agent.

Ранний пример этого — использование браузером Internet Explorer строки User-Agent, начинающейся с «Mozilla/<version> (compatible; MSIE <version>…», для получения контента, предназначенного для Netscape Navigator, его главного конкурента в 1990-х. «Mozilla» в данном случае — не браузер с открытым кодом Mozilla, выпущенный гораздо позже, а оригинальное кодовое имя Navigator, которое также было именем талисмана (маскота) компании Netscape. Такой формат строки User-Agent с тех пор использовался и другими браузерами; в частности, из-за того, что доминировать стал Internet Explorer.

Когда Internet Explorer стал доминирующим браузером, такие конкуренты как Firefox, Safari и Opera встроили системы, позволяющие пользователю выбрать ложное значение User-Agent, такое же, что и у свежих версий Explorer. Некоторые из них (Firefox и Safari) копировали значение User-Agent полностью, другие (Opera) копировали значение User-Agent, добавляя истинное имя браузера в конце, что позже привело к тому, что строка содержит три имени и версии: первое зовётся как «Mozilla» (то есть Netscape Navigator); далее «MSIE» (Internet Explorer); и последнее, действительный браузер, такой как «Opera». Opera также позволяла полностью замаскироваться под Internet Explorer или Firefox, полностью скрывая имя «Opera».

В случае Safari строка User-Agent содержит 5 имён (Mozilla, AppleWebKit (идентификатор «движка»), «KHTML, like Gecko» (используемый Safari WebKit основан на движке KHTML, Gecko — кодовое имя движка последних версий Mozilla Firefox) и Safari. Таким образом, если сайт делает проверку на практически любой современный браузер (кроме Opera) — Safari её пройдёт. Другие браузеры на движке WebKit работают аналогично.

Кроме браузеров, другие программы, использующие протокол HTTP, к примеру менеджеры закачек и оффлайновые браузеры, также имеют возможность изменять значение User-Agent, посылаемое серверу, по желанию пользователя. Это сделано, наверное, для обеспечения совместимости с определёнными серверами (некоторые серверы отказываются обслуживать подобные программы, так как они могут оказать значительные нагрузки на ресурсы сервера; Google, например, для агента по умолчанию python urllib отдаёт 403).

Подобная проблема продолжает существовать в мире браузеров, и поэтому начата кампания, способствующая тому, чтобы разработчики сайтов проектировали сайты в соответствии со стандартами, а не для какого-то любого определённого браузера.

Так, многие веб-сайты, созданные в 2005 году, лучше соответствуют стандартам, чем это было ранее в истории Веба. Однако на некоторых сайтах всё ещё используются устаревшие скрипты JavaScript, блокирующие работу других браузеров, помимо Internet Explorer или Netscape Navigator. Причина этого часто заключается в бездумном копировании старого кода, взятого с других сайтов, без полного понимания того, какой эффект этот код будет в действительности иметь.

Последствия

Одним из результатов подделки значения User-Agent является переоценка популярности соответствующего (обычно и без того популярного) браузера в статистике и недооценка популярности других браузеров и, как следствие, отсутствие у разработчиков вышеописанных сайтов стимула к исправлению проблем совместимости.

Уровни шифрования

Netscape, Mozilla, Opera и некоторые другие используют одну из этих букв для указания поддерживаемого уровня шифрования. Так как правительство США ранее не позволяло экспорт систем шифрования с ключом более 40 бит, выпускались разные версии с разным уровнем шифрования. «U» означало «USA» (США) (для версий с ключом шифрования в 128 бит), «I» означало «International» (международная) (браузер имел возможность шифровать с ключом в 40 бит и мог использоваться в любой точке мира), «N» означало «None» (без шифрования). Изначально версии с буквой «U» было разрешено загружать только жителям США, но с тех пор, как правительство США ослабило свою политику, экспорт систем шифрования высокого уровня теперь разрешён в большинство стран. Теперь браузеры распространяются только в версии с буквой «U» с поддержкой шифрования с ключом до 256 бит, так как необходимость в международной версии отпала.

Примечания

  1. Bug 334967 - (geckoisgecko) Tracking bug for sites broken by UA string change to not use "Firefox" (англ.). Bugzilla@Mozilla. Дата обращения: 17 июня 2010. Архивировано 25 мая 2014 года.

Литература

  • Zakas, N. C. Chapter 9. Client Detection, User-Agent Detection // Professional JavaScript for Web Developers (англ.). — Wiley, 2011. — 840 p. — ISBN 9781118059517.
  • Sikorski, M. and Honig, A. Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software (англ.). — No Starch Press, 2012. — P. 309—311. — ISBN 9781593274306.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.