Ваш браузер отправляет своего пользовательского агента на каждый веб-сайт, к которому вы подключаетесь. Мы писали о изменение пользовательского агента вашего браузера раньше - но что такое пользовательский агент?
Пользовательский агент - это «строка», то есть строка текста, определяющая браузер и операционную систему для веб-сервера. Звучит просто, но со временем пользовательские агенты превратились в беспорядок.
Основы
Когда ваш браузер подключается к веб-сайту, он включает поле User-Agent в свой HTTP-заголовок. Содержимое поля агента пользователя варьируется от браузера к браузеру. У каждого браузера есть свой собственный уникальный пользовательский агент. По сути, пользовательский агент - это способ браузера сказать веб-серверу «Привет, я Mozilla Firefox в Windows» или «Привет, я Safari на iPhone».
Веб-сервер может использовать эту информацию для обслуживания разных веб-страниц для разных веб-браузеров и разных операционных систем. Например, веб-сайт может отправлять мобильные страницы в мобильные браузеры, современные страницы - в современные браузеры, а также сообщение «пожалуйста, обновите свой браузер» до Internet Explorer 6.
Изучение пользовательских агентов
Например, вот пользовательский агент Firefox в Windows 7:
Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 12.0) Gecko / 20100101 Firefox / 12.0
Этот пользовательский агент довольно много сообщает веб-серверу: операционная система - Windows 7 (кодовое название Windows NT 6.1), это 64-разрядная версия Windows (WOW64), а сам браузер - Firefox 12.
Теперь давайте посмотрим на пользовательский агент Internet Explorer 9, который:
Mozilla / 5.0 (совместимый; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)
Строка пользовательского агента идентифицирует браузер как IE 9 с механизмом визуализации Trident 5. Однако вы можете заметить что-то непонятное - IE идентифицирует себя как Mozilla.
Мы вернемся к этому через минуту. Во-первых, давайте также рассмотрим пользовательский агент Google Chrome:
Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 536.5 (KHTML, например Gecko) Chrome / 19.0.1084.52 Safari / 536.5
Сюжет сгущается: Chrome выдает себя одновременно за Mozilla и Safari. Чтобы понять почему, нам нужно изучить историю пользовательских агентов и браузеров.
Сообщения со строками пользовательского агента
Mosaic был одним из первых браузеров. Строка его пользовательского агента была NCSA_Mosaic / 2.0. Позже появилась Mozilla (позже переименованная в Netscape), а ее пользовательский агент был Mozilla / 1.0. Mozilla был более продвинутым браузером, чем Mosaic - в частности, он поддерживал фреймы. Веб-серверы проверяли, содержит ли пользовательский агент слово Mozilla, и отправляли страницы, содержащие фреймы, в браузеры Mozilla. В другие браузеры веб-серверы отправляли старые страницы без фреймов.
В конце концов появился Internet Explorer от Microsoft, который тоже поддерживал фреймы. Однако IE не получал веб-страницы с фреймами, потому что веб-серверы просто отправляли их в браузеры Mozilla. Чтобы решить эту проблему, Microsoft добавила слово Mozilla к своему пользовательскому агенту и добавила дополнительную информацию (слово «совместимый» и ссылка на IE). Веб-серверы были рады видеть слово Mozilla и отправили IE современные веб-страницы. Другие браузеры, появившиеся позже, сделали то же самое.
В конце концов, некоторые серверы искали слово Gecko - механизм рендеринга Firefox - и обслуживали браузеры Gecko разные страницы, чем старые браузеры. KHTML - первоначально разработанный для Konquerer на рабочем столе Linux KDE - добавил слова «как Gecko», чтобы они также получили современные страницы, разработанные для Gecko. WebKit был основан на KHTML - когда он был разработан, они добавили слово WebKit и сохранили исходную строку «KHTML, как Gecko» в целях совместимости. Таким образом, разработчики браузеров постоянно добавляли слова в свои пользовательские агенты.
Веб-серверам на самом деле не важно, что такое строка пользовательского агента - они просто проверяют, содержит ли она конкретное слово.
Использует
Веб-серверы используют пользовательские агенты для различных целей, в том числе:
- Обслуживание разных веб-страниц в разных веб-браузерах. Это можно использовать во благо - например, для обслуживания более простых веб-страниц в старых браузерах - или во зло - например, для отображения сообщения «Эта веб-страница должна быть просмотрена в Internet Explorer».
- Отображение разного контента для разных операционных систем - например, путем отображения уменьшенной страницы на мобильных устройствах.
- Сбор статистики, показывающей браузеры и операционные системы, используемые их пользователями. Если вы когда-нибудь видели статистику доли рынка браузеров, значит, они были получены именно так.
Боты-сканеры также используют пользовательские агенты. Например, поисковый робот Google идентифицирует себя как:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
Веб-серверы могут предоставлять ботам особый режим - например, разрешая им проходить через обязательные экраны регистрации. (Да, это означает, что иногда вы можете обойти экраны регистрации, установив в качестве агента пользователя Googlebot.)
Веб-серверы также могут отдавать приказы определенным ботам (или всем ботам) с помощью файла robots.txt. Например, веб-сервер может приказать конкретному боту уйти или приказать другому боту проиндексировать только определенные области веб-сайта. В файле robots.txt боты идентифицируются по строкам их пользовательского агента.
Во всех основных браузерах есть способы установить пользовательских агентов , чтобы вы могли видеть, какие веб-серверы отправляют в разные браузеры. Например, установите в браузере настольного компьютера строку агента пользователя мобильного браузера, и вы увидите мобильные версии веб-страниц на своем компьютере.