Что такое пользовательский агент браузера?
Ваш браузер отправляет свой пользовательский агент на каждый веб-сайт, к которому вы подключаетесь. Мы уже писали об изменении пользовательского агента вашего браузера - но в любом случае, что такое пользовательский агент?
Пользовательский агент - это «строка», то есть строка текста, идентифицирующая браузер и операционную систему для веб-сервера. Это звучит просто, но со временем пользовательские агенты превратились в беспорядок.
Основы
Когда ваш браузер подключается к веб-сайту, он включает поле 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. Чтобы понять почему, нам нужно изучить историю пользовательских агентов и браузеров..
Пользовательский агент String Mess
Mosaic был одним из первых браузеров. Его строка агента пользователя была NCSA_Mosaic / 2.0. Позже появился Mozilla (позже переименованный в Netscape), а его агентом был Mozilla / 1.0. Mozilla была более продвинутым браузером, чем Mosaic - в частности, она поддерживала фреймы. Веб-серверы проверили, что пользовательский агент содержит слово Mozilla, и отправили страницы с фреймами в браузеры Mozilla. В другие браузеры веб-серверы отправляли старые страницы без фреймов.
В конце концов появился Microsoft Internet Explorer, который также поддерживал фреймы. Однако IE не получал веб-страницы с фреймами, потому что веб-серверы просто отправляли их в браузеры Mozilla. Чтобы решить эту проблему, Microsoft добавила слово Mozilla к своему пользовательскому агенту и добавила дополнительную информацию (слово «совместимый» и ссылку на IE). Веб-серверы были рады видеть слово Mozilla и отправили IE на современные веб-страницы. Другие браузеры, которые пришли позже, сделали то же самое.
В конце концов, некоторые серверы искали слово Gecko - движок рендеринга Firefox - и обслуживали браузеры Gecko на разных страницах, чем старые. KHTML - изначально разработанный для Konquerer на рабочем столе KDE в Linux - добавил слова «как Gecko», чтобы они также получили современные страницы, разработанные для Gecko. WebKit был основан на KHTML - когда он разрабатывался, они добавили слово WebKit и сохранили оригинальную строку «KHTML, как Gecko» в целях совместимости. Таким образом, разработчики браузеров со временем добавляли слова в свои пользовательские агенты..
Веб-серверам все равно, какая именно строка пользовательского агента - они просто проверяют, содержит ли она определенное слово.
Пользы
Веб-серверы используют пользовательские агенты для различных целей, включая:
- Обслуживание разных веб-страниц в разных браузерах. Это может быть использовано во благо - например, для обслуживания более простых веб-страниц в старых браузерах - или для зла - например, для отображения сообщения «Эта веб-страница должна просматриваться в Internet Explorer».
- Отображение разного контента для разных операционных систем - например, путем отображения уменьшенной страницы на мобильных устройствах.
- Сбор статистики, показывающей браузеры и операционные системы, используемые их пользователями. Если вы когда-нибудь видели статистику доли рынка браузеров, то вот как они.
Боты для веб-сканирования также используют пользовательские агенты. Например, веб-сканер Google идентифицирует себя как:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
Веб-серверы могут предоставлять ботам особый режим - например, позволяя им проходить обязательные экраны регистрации. (Да, это означает, что иногда вы можете обойти экраны регистрации, установив в своем пользовательском агенте Googlebot.)
Веб-серверы также могут отдавать приказы определенным ботам (или всем ботам), используя файл robots.txt. Например, веб-сервер может указать конкретному боту, что он должен уйти, или сказать другому боту, чтобы он индексировал только определенные области веб-сайта. В файле robots.txt боты идентифицируются по строкам пользовательских агентов..
Все основные браузеры содержат способы установки пользовательских пользовательских агентов, чтобы вы могли видеть, какие веб-серверы отправляются в разные браузеры. Например, установите в браузере на рабочем столе строку агента пользователя мобильного браузера, и вы увидите мобильные версии веб-страниц на рабочем столе..