Перейти к содержимому

Gecko 20100101 что это

  • автор:

Ссылка на строку пользовательского агента Firefox

В этом документе описывается строка пользовательского агента, используемая в Firefox 4 и более поздних версиях, а также в приложениях на основе Gecko 2.0 и более поздних версий. Разбивку изменений строки в Gecko 2.0 см. в Final User Agent string for Firefox 4 (блог post). См. также этот документ по user agent sniffing и этот Hacks blog post .

General form

Строка UA самого Firefox разбита на четыре компонента:

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion

  • Mozilla/5.0 — это общий токен, который говорит, что браузер совместим с Mozilla, и используется почти во всех современных браузерах.
  • platform описывает родную платформу, на которой работает браузер (e.g. Windows, Mac, Linux или Android),, а также независимо от того, является ли он мобильным телефоном. На телефонах с ОС Firefox написано « Mobile »; Интернет — это платформа. Обратите внимание, что platform может состоять из нескольких токенов, разделенных символами «;». Ниже приведены дополнительные сведения и примеры.

Примечание. Несмотря на исправление в Firefox 69, предыдущие 32-разрядные версии Firefox, работающие на 64-разрядных процессорах, сообщали, что система использует 32-разрядный CPU..

Примечание. Рекомендуемый способ прослушивания для браузеров на основе Gecko (если вам нужно анализировать движок браузера вместо использования обнаружения функций) — наличие строк « Gecko » и « rv: », поскольку некоторые другие браузеры включают токен « like Gecko ».

Для других продуктов, основанных на Gecko, строка может принимать одну из двух форм, где токены имеют то же значение, за исключением указанных ниже:

  • appname/appversion указывает имя и версию приложения. Например, это может быть « Camino/2.1.1 » или « SeaMonkey/2.7.1 ».
  • Firefox/firefoxversion — это необязательный токен совместимости, который некоторые браузеры на основе Gecko могут включить для достижения максимальной совместимости с веб-сайтами, которые ожидают Firefox. firefoxversion обычно представляет собой эквивалентный выпуск Firefox, соответствующий данной версии Gecko. Некоторые браузеры на основе Gecko могут не использовать этот токен; по этой причине снифферы должны искать Gecko, а не Firefox!

До Firefox 4 и Gecko 2.0, расширения и плагины могли добавлять части пользовательского агента, но начиная с bug 581008 это было невозможно.

Мобильные и планшетные индикаторы

Примечание. Только с Firefox 11 по 68.

Часть platform строки UA указывает, работает ли Firefox на устройстве размером с телефон или планшет. Когда Firefox работает на устройстве с телефонным коэффициентом form, токен Mobile; находится в части platform строки UA. Когда Firefox работает на планшетном устройстве, вместо этого в части platform строки UA присутствует токен Tablet; . Например:

Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0 Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0 

Примечание. Номера версий не имеют значения. Избегайте выводов материалов на их основе.

Предпочтительный способ таргетинга контента на фактор устройства form — использование мультимедийных запросов CSS. Однако, если вы используете анализ UA для нацеливания контента на устройство form, ищите Mobi (включая Opera Mobile, которая использует «Mobi») для телефона form и не предполагает никакой корреляции между «Android» и устройством form. Таким образом, ваш код будет работать if/when Firefox поставляется с другими операционными системами phone/tablet или Android используется для ноутбуков. Кроме того, используйте touch обнаружение сенсорных устройств вместо поиска «Mobi» или «Tablet»,, поскольку могут быть сенсорные устройства, не являющиеся планшетами.

Примечание. Устройства с ОС Firefox идентифицируют себя без какой-либо индикации операционной системы; например: «Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0». Интернет — это платформа.

Windows

Пользовательские агенты Windows имеют следующие варианты, где x.y — версия Windows NT (например, Windows NT 6.1).

Windows version Строка пользовательского агента Gecko
Windows NT на платформе x86 или aarch64 CPU Mozilla/5.0 (Windows NT xy; К36246К Т45910Т В51656В
Windows NT на x64 CPU Mozilla/5.0 (Windows NT ху; Win64; х64; В36246В З45910З К51656К

Macintosh

Здесь x.y — это версия Mac OS X (например, Mac OS X 10.15). Начиная с Firefox 87, Firefox ограничивает сообщаемый номер версии Mac OS X до 10.15,, поэтому macOS 11.0 Big Sur и более поздние версии будут сообщаться как «10.15» в строке User-Agent.

Версия Mac OS X Строка пользовательского агента Gecko
Mac OS X на x86, x86_64, или aarch64 Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; Т45910Т В51656В З63919З
Mac OS X на PowerPC Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; Т51656Т В63919В З75101З

Linux

Linux — более разнообразная платформа. Ваш дистрибутив Linux может включать расширение, которое изменяет ваш пользовательский агент. Несколько общих примеров приведены ниже.

Linux version Строка пользовательского агента Gecko
Рабочий стол Linux на i686 CPU Mozilla/5.0 (X11; Linux i686; З36246З К45910К Т51656Т
Рабочий стол Linux на x86_64 CPU Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
Мобильный телефон Nokia N900 Linux в браузере Fennec Mozilla/5.0 (Maemo; Linux armv7l; К36246К Т45910Т В51656В З63919З

Android (версия 40 и ниже)

Form factor Строка пользовательского агента Gecko
Phone Mozilla/5.0 (Android; Мобильный; В36246В З45910З К51656К
Tablet Mozilla/5.0 (Android; Планшет; З36246З К45910К Т51656Т

Android (версия 41 и выше)

Начиная с версии 41, Firefox для Android будет содержать версию Android как часть токена платформы. Для повышения совместимости, если браузер работает на версии ниже 4, он будет сообщать 4.4. Android версии 4 и выше будет точно сообщать версию. Обратите внимание, что один и тот же Gecko с одинаковыми возможностями поставляется для всех версий Android.

Form factor Строка пользовательского агента Gecko
Phone Mozilla/5.0 (Android 4.4; Мобильный; rv:41.0) Gecko/41.0 Firefox/41.0
Tablet Mozilla/5.0 (Android 4.4; Планшет; К45910К Т51656Т В63919В

Фокус для Android

Начиная с версии 1, Focus работает под управлением Android WebView и использует следующий формат строки пользовательского агента:

Mozilla/5.0 (Linux; Android Version> Build Tag etc.>) AppleWebKit/WebKit Rev> (KHTML, like Gecko) Version/4.0 Focus/focusversion> Chrome/Chrome Rev> Mobile Safari/WebKit Rev> 

Версии для планшетов на WebView отражают мобильные устройства, но не содержат токена Mobile .

Начиная с версии 6, пользователи могут выбрать использование GeckoView-based Focus для Android со скрытыми настройками: он использует строку UA GeckoView для рекламы совместимости с Gecko.

Версия Focus (Rendering Двигатель) Строка пользовательского агента
1.0 (WebView Мобильный) Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, (например, Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Мобильный Safari/537.36
1.0 (WebView планшет) Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, как Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Safari/537.36
6.0 (GeckoView) Mozilla/5.0 (Android 7.0; Мобильный; rv:62.0) Gecko/62.0 Firefox/62.0

Клар для Android

Начиная с версии 4.1, Klar для Android использует ту же строку UA, что и Focus for Android . До версии 4.1, он отправлял токен Klar/ product/version.

Klar Версия (Rendering Двигатель) Строка пользовательского агента
1.0 (WebView) Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, (например, Gecko) Version/4.0 Klar/1.0 Chrome/58.0.3029.83 Мобильный телефон Safari/537.36
4.1+ (WebView) Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, (например, Gecko) Version/4.0 Focus/4.1 Chrome/62.0.3029.83 Мобильный телефон Safari/537.36
6.0+ (GeckoView) Mozilla/5.0 (Android 7.0; Мобильный; rv:62.0) Gecko/62.0 Firefox/62.0

Фокус для iOS

Версия 7 Focus для iOS использует строку пользовательского агента в следующем формате:

Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/7.0.4 Mobile/16B91 Safari/605.1.15 

Примечание. Этот пользовательский агент был получен из симулятора iPhone XR и может отличаться на разных устройствах.

Firefox для FireTV

Версия 3 (и, возможно, более ранняя) Firefox для Fire TV использует строку пользовательского агента в следующем формате:

Mozilla/5.0 (Linux; Android version>) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/firefoxversion> Chrome/Chrome Rev> Safari/WebKit Rev> 
ТВ-версия Firefox Строка пользовательского агента
v3.0 Mozilla/5.0 (Linux; Android 7.1.2) AppleWebKit/537.36 (KHTML, как Gecko) Version/4.0 Focus/3.0 Chrome/59.0.3017.125 Safari/537.36

Firefox для эхо-шоу

Начиная с версии 1.1, Firefox для Echo Show использует строку пользовательского агента в следующем формате:

Mozilla/5.0 (Linux; Android version>) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/firefoxversion> Chrome/Chrome Rev> Safari/WebKit Rev> 
Firefox для версии Echo Show Строка пользовательского агента
v1.1 Mozilla/5.0 (Linux; Android 5.1.1) AppleWebKit/537.36 (KHTML, (как Gecko) Version/4.0 Focus/1.1 Chrome/59.0.3017.125 Safari/537.36

Firefox OS

Form factor Строка пользовательского агента Gecko
Phone Т14153Т В25387В З36246З К45910К Т51656Т
Tablet В14153В З25387З К36246К Т45910Т В51656В
TV З14153З К25387К Т36246Т В45910В З51656З
Device-specific Mozilla/5.0 (Mobile; nnnn; В36246В З45910З К51656К

Строки пользовательского агента для конкретного устройства

Хотя Mozilla настоятельно не рекомендует это делать, некоторые производители мобильных телефонов, к сожалению, включают в строку UA своего устройства токен, представляющий идентификатор их устройства. В этом случае строка UA Firefox OS будет выглядеть как строка для конкретного устройства в таблице выше, где nnnn; это код производителя устройства (см. Guidelines ). Некоторые из них, которые мы заметили, относятся к form «NexusOne;», «ZTEOpen;» или «Open C»; (обратите внимание, что вставка пробела также является discouraged).. Мы предоставляем эту информацию, чтобы помочь вам с вашей логикой обнаружения UA, но Mozilla не рекомендует обнаруживать идентификатор устройства в строках UA.

Вот регулярное выражение JavaScript, которое обнаружит все мобильные устройства, включая устройства с идентификатором устройства в строке UA:

/mobi/i

i делает его нечувствительным к регистру, а mobi подходит для всех мобильных браузеров.

Номер версии ОС Firefox

Хотя номер версии для Firefox OS не включен в строку UA, информацию о версии можно вывести из номера версии Gecko, присутствующего в строке UA.

Номер версии ОС Firefox Номер версии геккона
1.0.1 18.0
1.1 18.1
1.2 26.0
1.3 28.0
1.4 30.0
2.0 32.0
2.1 34.0
2.2 37
2.5 44

Примечание. Соответствия легко найти, взглянув на Mercurial repository names : репозитории, начинающиеся с mozilla-b2g , являются репозиториями выпуска для Firefox OS, и имеют в своих именах версии Firefox OS и Gecko.

Firefox OS имеет четырехзначный номер версии: X.X.X.Y . Первые две цифры принадлежат команде разработчиков Mozilla и обозначают версии с новыми функциями (например: v1.1, 1.2, etc.).. Третья цифра увеличивается с обычными тегами версий (примерно каждые 6 недель) для обновлений безопасности, а четвертая принадлежит OEM..

Firefox для iOS

Firefox для iOS использует строку UA Mobile Safari по умолчанию с дополнительным токеном FxiOS/ на iPod и iPhone,, аналогично тому, как Chrome for iOS identifies itself .

Form factor Строка пользовательского агента Firefox для iOS
iPod Mozilla/5.0 (iPod сенсорный; CPU iPhone OS 8_3 как Mac OS X) AppleWebKit/600.1.4 (KHTML, как Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
iPhone Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 как Mac OS X) AppleWebKit/600.1.4 (KHTML, как Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
iPad Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, (например, Gecko) Version/13.1 Safari/605.1.15

Относительно отклонения по коэффициенту iPad form см. этот issue .

Другие браузеры на основе Gecko

Это несколько примеров строк UA из других браузеров на основе Gecko на разных платформах. Обратите внимание, что многие из них еще не выпущены на Gecko 2.0!.

Browser Строка пользовательского агента Gecko
Firefox для Maemo (Nokia N900) Mozilla/5.0 (Maemo; Linux armv7l; З36246З К45910К Т51656Т В63919В
Камино на Mac Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1
SeaMonkey в Windows З14153З К25387К НТ Т36246Т В45910В З51656З К63919К Т75101Т
SeaMonkey на Mac Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
SeaMonkey в Linux Mozilla/5.0 (X11; Linux i686; Т36246Т В45910В З51656З К63919К

See also

  • Firefox OS User Agent String (сообщение в блоге со ссылкой на bug 777710 )
  • Final User Agent string for Firefox 4 (сообщение в блоге)
  • Рекомендации по sniffing the UA string for cross-browser support
  • window.navigator.userAgent
  • Добавить версию Android в строку Fennec UA (ошибка 1169772)

Определить, является ли User-Agent подделанным

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

1. Формат User-Agent

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

Подавляющее большинство веб-браузеров используют следующий формат значения User-Agent:

 Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]

Ниже приведены значения User-Agent для типичного браузера FireFox:

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/113.0

Mozilla/5.0 — это общий префикс, указывающий на совместимость с Mozilla, что является почти стандартным для современных веб-браузеров. Это сложное историческое происхождение.

  • Macintosh; Intel Mac OS X 10.15; rv:109.0

Идентифицирует информацию об операционной системе, в которой работает браузер.

Информация о механизме рендеринга, используемом браузером.

Информация о конкретном браузере (версия).

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

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
  • macOS Safari
 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15
  • macOS Microsoft Edge
 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50
  • iPhone Safari
 Mozilla/5.0 (iPhone; CPU iPhone OS 15_7_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.4 Mobile/15E148 Safari/604.1
  • Android Chrome
 Mozilla/5.0 (Linux; Android 7.1.2; Pixel) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.71 Mobile Safari/537.36

2. Определение, является ли клиентский User-Agent подделанным

Информация User-Agent очень важна, но поскольку это простая для чтения строка в виде обычного текста, ее легко подделать. Для хорошо спроектированного веб-краулера он может подделать User-Agent любой системы и любой версии браузера, чтобы имитировать обычные запросы пользователя на доступ; большое количество запросов сканера вызовет большую нагрузку на системные службы, и легко сканировать большой объем конфиденциальных данных, чтобы решить эту проблему, в дополнение к ограничениям на частоту доступа и ненормальное поведение, вы также можете определить, является ли User-Agent был сфальсифицирован, чтобы различать запросы. Агент подделывается или не отличает запросы от вредоносных.

Обычный способ суждения состоит в том, чтобы собрать больше информации для сравнения со значением User-Agent, и когда есть несоответствие, это расценивается как подделка.

Дактилоскопия TCP/IP

HTTP использует TCP/IP в качестве базового транспортного протокола. Учитывая различия в реализации TCP в разных операционных системах и версиях операционных систем, можно использовать такую информацию, как заголовки и флаги TCP, для определения конкретной операционной системы. Если информация об отпечатке TCP определяет, что она принадлежит системе Linux, маловероятно, что пользовательский агент запроса будет системой Windows.

p0f — это инструмент для исследования, основанный на анализе информации о протоколе TCP/IP. Он может идентифицировать операционную систему, используемую хостом, перехватывая и анализируя пакеты, отправленные целевым хостом. Типичный пример результата сниффинга показан ниже.

.-[ 1.2.3.4/1524 -> 4.3.2.1/80 (syn) ]- | | client = 1.2.3.4 | os = Windows XP | dist = 8 | params = none | raw_sig = 4:120+8:0:1452:65535,0:mss,nop,nop,sok:df,id+:0 | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (mtu) ]- | | client = 1.2.3.4 | link = DSL | raw_mtu = 1492 | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (uptime) ]- | | client = 1.2.3.4 | uptime = 0 days 11 hrs 16 min (modulo 198 days) | raw_freq = 250.00 Hz | | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (http request) ]- | | client = 1.2.3.4/1524 | app = Firefox 5.x or newer | lang = English | params = none | raw_sig = 1:Host,User-Agent,Accept=[text/html,application/xhtml+xml. | `----

HTTP-информация

Помимо User-Agent , в заголовке HTTP-запроса есть много полей. Ниже приведена полная информация заголовка при запросе домашней страницы этого блога с помощью браузера FireFox.

GET / HTTP/2 Host: www.sobyte.net User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/113.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate, br Referer: https://www.sobyte.net/ Connection: keep-alive Cookie: . Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: same-origin Sec-Fetch-User: ?1 TE: trailers

Если вы запустите тот же запрос в Chrome, вы увидите, что есть еще несколько заголовков.

Sec-Ch-Ua: "Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "macOS"

Мало того, его содержимое полей Accept , Accept-Language и FireFox также имеют различия.

 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Кроме того, порядок заголовков некоторых запросов отличается между ними. В Firefox пользовательский агент находится вверху, а в Chrome — внизу.

Возможности JavaScript

Свойство window.navigator

Структуру window.navigator можно отличить по таким свойствам, как поставщик, платформа, oscpu и т. д., в дополнение к свойству userAgent.

window.navigator.vendor -> Google Inc. window.navigator.platform -> MacIntel window.navigator.oscpu -> 
window.navigator.vendor -> window.navigator.platform -> MacIntel window.navigator.oscpu -> Intel Mac OS X 10.15
window.navigator.vendor: Apple Computer, Inc. window.navigator.platform: MacIntel window.navigator.oscpu: undefined

CSS-функции

Браузеры обычно имеют свои собственные нестандартные функции CSS. Мы можем использовать JS-метод CSS.supports, чтобы проверить, поддерживается ли данная функция CSS. Например:

CSS.supports("-webkit-border-vertical-spacing", 0) -> true CSS.supports("-moz-user-focus", "normal") -> false CSS.supports("-moz-box-sizing", "content-box") -> false
CSS.supports("-webkit-border-vertical-spacing", 0) -> false CSS.supports("-moz-user-focus", "normal") -> true CSS.supports("-moz-box-sizing", "content-box") -> true

Особые свойства window

Разные браузеры могут добавлять разные свойства окна.

window.webkitCancelAnimationFrame !== undefined -> true window.mozInnerScreenX !== undefined -> false window.chrome !== undefined -> true 
window.webkitCancelAnimationFrame !== undefined -> false window.mozInnerScreenX !== undefined -> true window.chrome !== undefined -> false 

Ограничения традиционных методов контроля

Вышеупомянутый метод проверки можно сравнить с информацией об User-Agent , чтобы определить, является ли он поддельным или нет. Но в то же время мы можем обнаружить проблему в том, что информация, которая может быть использована для дифференциации, принципиально не отличается от User-Agent, это четкая строка открытого текста, и злоумышленник также может произвольно изменить ее, чтобы подделать запрос, идентичный обычный пользователь. Другими словами, даже если мы сможем найти достаточно отличительной информации, злоумышленник может легко изменить значение этой информации, как если бы это был пользовательский агент.

Источник:

Что такое пользовательский агент браузера?

image

Ваш браузер отправляет свой пользовательский агент на каждый веб-сайт, к которому вы подключаетесь. Мы уже писали об изменении пользовательского агента вашего браузера — но что такое пользовательский агент?

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

Основы

Когда ваш браузер подключается к веб-сайту, он включает поле 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

image

Этот пользовательский агент довольно много говорит веб-серверу: операционная система 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)

image

Строка агента пользователя идентифицирует браузер как 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

image

Сюжет сгущается: 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 современные веб-страницы. Другие браузеры, которые появились позже, делали то же самое.

image

В конце концов, некоторые серверы искали слово 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 боты идентифицируются по строкам пользовательских агентов.

image

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

User-Agent

Заголовок запроса User-Agent — это строка с характеристиками, по которым сервера и сетевые узлы могут определить тип приложения, операционную систему, производителя и/или версию пользовательского агента.

Обратите внимание: Показывать ту или иную страницу в зависимости от характеристик пользовательского агента — дурная практика. Почему не стоит так делать, читайте в статье «Определение браузера по пользовательскому агенту (en-US) ».

Тип заголовка Заголовок запроса
Запрещённое имя заголовка Нет

Синтаксис

User-Agent: /

Общий формат для веб-браузеров:

User-Agent: Mozilla/5.0 () ()

Директивы

Идентификатор продукта — его название или кодовое имя.

Может быть пустым или содержать дополнительную информацию. Например, информацию о продукте.

Строка UA в Firefox

Подробные сведения о user agent строках в Firefox и других браузерах, основанных на движке Gecko, вы найдёте в справочнике (en-US) .

Строка UA в Firefox разбита на 4 части и одну общую метку для всех:

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
  1. Mozilla/5.0 — общая метка, которая сообщает, что браузер совместим с Mozilla. По историческим причинам сегодня такую метку отправляет почти каждый браузер.
  2. platform указывает платформу, на которой работает браузер (Windows, Mac, Linux, Android и т.д.), а так же, мобильный ли это телефон. В телефонах на Firefox OS (en-US) указывается только Mobile , поскольку Firefox OS построена на веб-технологиях. Обратите внимание, platform может содержать несколько значений, разделённых ; . Подробная информация и примеры ниже.
  3. rv:geckoversion указывает релизную версию Gecko (например, «17.0«). В последних браузерах geckoversion совпадает с firefoxversion.
  4. Gecko/geckotrail указывает, что браузер основан на Gecko (на компьютерах geckotrail — всегда строка 20100101 ).
  5. Firefox/firefoxversion обозначает, что браузером является Firefox, и указывает его версию (например, «17.0«).

Примеры

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0

Строка UA в Chrome

Строка user agent в Chrome и браузерах, основанных на движке Chromium/Blink, аналогична строке Firefox. Для совместимости добавлены строки KHTML, like Gecko и Safari .

Примеры

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

Строка UA в Opera

Браузер Opera также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется «OPR/» .

Примеры

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41

В старых версиях Opera, на базе движка Presto, строки выглядят так:

Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00 Opera/9.60 (Windows NT 6.0; U; en) Presto/2.1.1

Строка UA в Microsoft Edge

Браузер Microsoft Edge также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется «Edg/» .

Примеры

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59

Строка UA в Safari

В этом примере строка user agent представлена в мобильной версии Safari и содержит слово «Mobile» .

Примеры

Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1

Строка UA в Internet Explorer

Примеры

Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)

Строка UA поискового робота

Примеры

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; YandexAccessibilityBot/3.0; +http://yandex.com/bots)

Строка UA у библиотек и net-tools

Примеры

curl/7.64.1
PostmanRuntime/7.26.5

Cпецификации

Specification
HTTP Semantics
# field.user-agent

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • User-Agent detection, history and checklist
  • Firefox user agent string reference (en-US)
  • Browser detection using the user agent (en-US)

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *