User Agent

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

Использование веб-сайтами[править | править вики-текст]

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

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

Веб-сайты для мобильных телефонов часто вынуждены жёстко полагаться на определение 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 году, лучше соответствуют стандартам, чем это было ранее в истории Web. Однако, на некоторых сайтах всё ещё используются устаревшие скрипты JavaScript, в сущности, блокирующие работу других браузеров, помимо Internet Explorer или Netscape Navigator. Причина этого часто заключается в бездумном копировании старого кода, взятого с других сайтов, без полного понимания того, какой эффект этот код будет в действительности иметь.

Последствия[править | править вики-текст]

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

Подделка значения User-Agent также может привести к угрозе безопасности[какой?] при подделывании поискового робота и обходе ключевых частей веб-сайта.[источник не указан 591 день]

Уровни шифрования «U» / «I» / «N»[править | править вики-текст]

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.

Ссылки[править | править вики-текст]