Анализ браузера (также известный как обнаружение браузера ) — это набор методов, используемых на веб-сайтах и в веб-приложениях для определения веб-браузера, используемого посетителем, и предоставления посетителю соответствующего браузеру контента. Он также используется для обнаружения мобильных браузеров и отправки им оптимизированных для мобильных устройств веб-сайтов. Эта практика иногда используется для обхода несовместимости между браузерами из-за неправильной интерпретации HTML , каскадных таблиц стилей (CSS) или объектной модели документа (DOM). Хотя Консорциум Всемирной паутины поддерживает актуальные центральные версии некоторых из наиболее важных веб-стандартов в форме рекомендаций, на практике ни один разработчик программного обеспечения не разработал браузер, который бы точно соответствовал этим стандартам; реализация других стандартов и протоколов, таких как SVG и XMLHttpRequest , также различается. В результате разные браузеры отображают одну и ту же страницу по-разному, поэтому анализ браузера был разработан для обнаружения веб-браузера с целью обеспечения согласованного отображения контента. [1]
Веб-страницы могут использовать языки программирования, такие как JavaScript , которые интерпретируются пользовательским агентом , а результаты отправляются на веб-сервер . Например:
вар isIEBrowser = ложь ; если ( window . ActiveXObject ) { isIEBrowser = true ; } // Или короче: var isIE = ( window.ActiveXObject ! == undefined ) ;
Этот код запускается клиентским компьютером, а результаты используются другим кодом для внесения необходимых корректировок на стороне клиента. В этом примере клиентскому компьютеру предлагается определить, может ли браузер использовать функцию, называемую ActiveX . Поскольку эта функция была собственностью Microsoft, положительный результат будет означать, что клиент может использовать Microsoft Internet Explorer . Однако это больше не является надежным индикатором с момента выпуска Microsoft кода ActiveX с открытым исходным кодом, что означает, что его может использовать любой браузер.
Веб-сервер взаимодействует с клиентом с помощью протокола связи, известного как HTTP (протокол передачи гипертекста), который определяет, что клиент отправляет серверу информацию о браузере, используемом для просмотра веб-сайта, в заголовке User-Agent .
Расширенные методы браузера позволяют постоянно отслеживать пользователя, даже если он пытается оставаться анонимным. Подробнее об отпечатке браузера см. в разделе отпечаток устройства .
Многие веб-сайты используют сниффинг браузера, чтобы определить, может ли браузер посетителя использовать определенные функции (такие как JavaScript , DHTML , ActiveX или каскадные таблицы стилей ), и отображать страницу с ошибкой, если определенный браузер не используется. Однако практически невозможно учесть огромное разнообразие браузеров, доступных пользователям. Как правило, веб-дизайнер, использующий сниффинг браузера, чтобы определить, какую страницу следует представить, будет тестировать три или четыре самых популярных браузера и предоставлять контент, адаптированный для каждого из них. [2] Если пользователь использует пользовательский агент , для которого не проводилось тестирование, нет гарантии, что будет предоставлена пригодная для использования страница; таким образом, пользователь может быть вынужден либо сменить браузер, либо избегать страницы. Консорциум Всемирной паутины , который устанавливает стандарты для построения веб-страниц, рекомендует, чтобы веб-сайты разрабатывались в соответствии с его стандартами и были организованы так, чтобы « изящно давать сбой » при отображении в браузере, который не может справиться с определенным стандартом.
Сниффинг браузера увеличивает потребность в обслуживании. Веб-сайты, которые по-разному относятся к некоторым браузерам, должны предоставлять альтернативную версию для других браузеров. Использование строк пользовательских агентов подвержено ошибкам, поскольку разработчик должен проверять соответствующую часть, например, « Gecko » вместо « Firefox ». Они также должны гарантировать поддержку будущих версий. Кроме того, некоторые браузеры позволяют изменять строку пользовательского агента, что делает эту технику бесполезной. [3]