User-Agent — HTTP | MDN
Заголовок запроса User-Agent — это строка с характеристиками, по которым сервера и сетевые узлы могут определить тип приложения, операционную систему, производителя и/или версию пользовательского агента.
Обратите внимание: Показывать ту или иную страницу в зависимости от характеристик пользовательского агента — дурная практика. Почему не стоит так делать, читайте в статье «Определение браузера по пользовательскому агенту».
Тип заголовка | Заголовок запроса |
---|---|
Запрещённое имя заголовка | Нет |
User-Agent: <product> / <product-version> <comment>
Общий формат для веб-браузеров:
User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>
Директивы
- <product>
- <product-version>
Версия продукта
Может быть пустым или содержать дополнительную информацию. Например, информацию о продукте.
Подробные сведения о user agent строках в Firefox и других браузерах, основанных на движке Gecko, вы найдёте в справочнике.
Строка UA в Firefox разбита на 4 части и одну общую метку для всех:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
Mozilla/5.0
— общая метка, которая сообщает, что браузер совместим с Mozilla. По историческим причинам сегодня такую метку отправляет почти каждый браузер.- platform указывает платформу, на которой работает браузер (Windows, Mac, Linux, Android и т.д.), а так же, мобильный ли это телефон. В телефонах на Firefox OS (en-US) указывается только
Mobile
, поскольку Firefox OS построена на веб-технологиях.Обратите внимание, platform может содержать несколько значений, разделённых
;
. Подробная информация и примеры ниже. - rv:geckoversion указывает релизную версию Gecko (например, «17.0«). В последних браузерах geckoversion совпадает с firefoxversion.
- Gecko/geckotrail указывает, что браузер основан на Gecko (на компьютерах geckotrail — всегда строка
20100101
). - 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
Строка 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
Браузер Opera также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется "OPR/<version>"
.
Примеры
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
Браузер Microsoft Edge также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется "Edg/<version>"
.
Примеры
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
В этом примере строка 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
Примеры
Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)
Примеры
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; YandexAccessibilityBot/3.0; +http://yandex.com/bots)
Примеры
curl/7.64.1
PostmanRuntime/7.26.5
Specification |
---|
HTTP Semantics # field.user-agent |
BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
- User-Agent detection, history and checklist
- Firefox user agent string reference
- Browser detection using the user agent
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
Want to get more involved?
Learn how to contribute.
This page was last modified on by MDN contributors.
golang — Проверка user-agent — Stack Overflow на русском
Вопрос задан
Изменён 1 год 3 месяца назад
Просмотрен 222 раза
Возникла необходимость проверить, откуда пользователь делает запрос, чтобы определить, каким способом дать ему ответ(дать html в браезер или JSON в, например, curl). Знаю, что html можно дать и в curl, но это будет неудобоваримо.
Погуглив, узнал, что нет какого-то «железного» способа определить, делается ли запрос из браузера. Но есть некая закономерность в юзерагентах браузеров. Написал мини-функцию и хочу спросить мнения, является ли она хоть сколь-либо надежной, для определения пришел пользователь из браузера или нет и почитать мнение, как можно надежнее определить это. Вот функция:
func GetRequest(w http.ResponseWriter, r *http.Request) { ua := r.Header.Get("User-Agent") switch true { case strings.Contains(ua, "Mozilla"): w.Write([]byte("Browser" + "\n")) return case strings.Contains(ua, "Gecko"): w.Write([]byte("Browser" + "\n")) return default: w.Write([]byte("Rest quester" + "\n")) } }
Добавил еще такой кейс
case strings.Contains(ua, "Opera"): w.Write([]byte("Browser" + "\n")) return
- golang
- useragent
Я думаю, что Ваш подход очень необычен. А что если я в curl хочу получать текст? Или в браузере получать данные в виде json? Но человечество нашло выход.
Самый простой и наивный способ — кодировать тип желаемого результата в самом запросе. Ведь если url/uri содержит index.html, то очевидно, что хотят получить текст в виде html, а если там data.json, то явно не xml ожидают. Этот подход очень «нативный» и «ожидаемый».
Второй способ — клиент явно декларирует в запросе, что он хочет использует для этого заголовок Accept: text/plain
(или что именно нужно)
[зачеркнуто] Content-Type может быть не только в ответе, а и в запросе. Вот есть пример https://stackoverflow.com/questions/56722602/golang-http-server-return-html-or-json-depending-on-content-type [/зачеркнуто]
7
Попробуйте использовать существующие пакеты для парсинга User-Agent, например https://github.com/mileusna/useragent
, https://github.
или com/mssola/user_agent
https://github.com/ua-parser/uap-go
.
Данные пакеты позволяют определить тип браузера, операционную систему, тип устройства и т.д.
Вот пример с перехватом четрыех браузеров (в пакете доступно больше):
package main import ( "github.com/mileusna/useragent" "log" "net/http" ) func GetRequest(w http.ResponseWriter, r *http.Request) { useragent := r.Header.Get("User-Agent") parsed := ua.Parse(useragent) if parsed.Name == ua.Chrome || parsed.Name == ua.Opera || parsed.Name ==ua.Firefox || parsed.Name == ua.Safari { // вернуть HTML } else { // вернуть JSON } } func main() { http.HandleFunc("/", GetRequest) log.Fatal(http.ListenAndServe(":8000", nil)) }
В можете перечислить в if все браузеры, которые заданны в данном пакете. Таким образом вы покроете абсолютное большинство запросов (за исключением кастомных браузеров).
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Что такое пользовательский агент?
Обновлено: 05. 12.2021 автором Computer Hope
Иногда сокращенно UA , пользовательский агент представляет собой текстовую строку браузера, которая предоставляется каждому веб-сайту, который вы посещаете. UA содержат такую информацию, как версия браузера, совместимость, операционная система и любые модифицирующие плагины. Используя эти данные, веб-сайт может оценить возможности вашего компьютера, оптимизируя производительность и отображение страницы.
- Просмотр вашего пользовательского агента.
- Примеры агента пользователя с пояснением строки.
- Различные версии Windows в пользовательском агенте.
- Как получить эту информацию.
- Связанные страницы пользовательского агента.
Просмотр вашего пользовательского агента
Примеры пользовательского агента с пояснением строки
Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Mozilla/4.0 используется по историческим причинам, как указано Microsoft, не путать с вариантами браузеров Mozilla, такими как Firefox. Далее идет актуальная версия Microsoft Internet Explorer, 9.0029 совместимый; MSIE 6.0; , что указывает на то, что у этого пользователя установлен Internet Explorer 6.0. Далее Windows NT 5.1; СВ1; — это описание операционной системы. Здесь это Microsoft Windows XP с Service Pack 1. Наконец, .NET CLR 1.1.4322 — это платформа .NET.
Примечание
Строка пользовательского агента с Internet Explorer может иметь несколько версий .NET.
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080325 Fedora/2.0.0.13-1.fc8 Firefox/2.0.0.13
Во втором примере пользовательский агент находится в варианте Linux. Первое, что заметно отличается от этого пользовательского агента, — это X11; , вариант X Windows . Далее У; — это уровень шифрования, сокращенно от USA, что указывает на сильное шифрование. В прошлом для определенных частей мира приходилось выпускать разные версии шифрования из-за законов США. Далее i686; и Fedora/2.0.0.13-1.fc8 описывает платформу и ОС. После этого ан-США; — язык и местоположение браузера (соответственно английский и американский). Наконец, Firefox/2.0.0.13 — это браузер и его версия.
Mozilla/5.0 (Macintosh; U; Intel macOS 10.5; en-US; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4
В этом последнем примере агентом пользователя является компьютер Apple. Есть много общего с предыдущим примером, в котором также работает Firefox. Однако пользовательский агент — Macintosh с процессором Intel и операционной системой macOS 10.5. Компьютеры Apple, на которых не установлен процессор Intel, называются «PPC».
Различные версии Windows в пользовательском агенте
Ниже приведена дополнительная информация о каждой из различных версий Microsoft Windows и соответствующих строковых кодах пользовательского агента.
Windows 95 = Windows 95 или Win95 Windows 98 и 98 SE = Windows 98 или Win98 Windows CE = Windows CE Windows ME = Windows 9x 4.90 Windows NT 4.0 = Windows NT 4.0 Windows 2000 = Windows NT 5.0 Windows XP = Windows NT 5.1 Windows Server 2003 и XP x64 = Windows NT 5.2 Windows Vista = Windows NT 6.0 Windows 7 = Windows NT 6.1 Windows 8 = Windows NT 6.2 Windows 8.1 = Windows NT 6.3 Windows 10 = Windows 10.0
Примечание
Windows 11 невозможно обнаружить с помощью строки пользовательского агента. Microsoft и другие разработчики браузеров перестали обновлять эту информацию в Windows 10. Вместо этого Microsoft предлагает использовать клиентские подсказки.
Как получить эту информацию
Есть несколько способов получить доступ к информации агента пользователя. Например, кнопка в начале этой страницы использует JavaScript для отображения строки пользовательского агента. Однако, если вы хотите собрать информацию или манипулировать данными, лучше использовать язык сценариев на стороне сервера, например Perl. Ниже приведен пример использования сценариев Perl.
#/usr/бен/перл использовать строгий; print "Тип контента: text/html", "\n\n"; напечатать "$ENV{HTTP_USER_AGENT}";
- См. в инструменте системной информации пример сценария, использующего все преимущества информации пользовательского агента и другой информации, получаемой с помощью JavaScript.
Агент, Браузер, Компьютерные сокращения, Термины веб-дизайна
Что такое User Agent?
Пользовательские агенты используются для различных онлайн-действий. В этой статье мы ответим на вопрос — что такое пользовательский агент? – Кроме того, мы покажем вам, как лучше всего их использовать.
Что такое агент пользователя?Проще говоря, пользовательский агент — это программа, которая работает от вашего имени. Такое программное обеспечение будет отправлять, получать и отображать веб-контент от вашего имени. Основным примером этого является веб-браузер.
Веб-браузер — это пользовательский агент, облегчающий доступ в Интернет. Вы вводите веб-адрес, и он извлекает для вас содержимое веб-страницы. Пока вы просматриваете, именно ваш браузер осуществляет взаимодействие.
Другим примером является программное обеспечение электронной почты. Программное обеспечение электронной почты поможет вам отправлять и получать сообщения от других. Интернет работает как клиент-серверная система. Пока вы, как клиент, просматриваете веб-страницы, веб-контент загружается с сервера. Следовательно, существуют клиентские и серверные пользовательские агенты.
Найдите идеальный прокси-продукт.
Proxyrack предлагает несколько вариантов для большинства случаев использования, если вы не уверены, что наша 3-дневная пробная версия позволит вам протестировать их все.
Резидентные прокси
Никогда не блокируйтесь, выберите ваше местоположение available
Тем не менее, когда люди ссылаются на пользовательские агенты, они ссылаются на поле User-agent, содержащееся в Заголовки HTTP . Это основная конечная точка для связи между браузерами, программами электронной почты и другими приложениями и веб-серверами.
Веб-браузеры включают поле User-agent в заголовок HTTP перед подключением к какому-либо веб-сайту. Каждый браузер имеет уникальный пользовательский агент, поэтому содержимое для разных браузеров разное. Примечательно, что контент UA сообщит веб-сайту, какой тип браузера и устройства вы используете.
Благодаря этой детали веб-сервер будет предоставлять вам лучшие веб-страницы. Вот почему вы получаете веб-страницы, адаптированные для мобильных устройств, когда загружаете свои веб-страницы с помощью мобильного устройства, и другой размер веб-страницы, когда вы используете компьютер. Это также то, как веб-сайты узнают, не подходит ли ваш браузер для определенного веб-контента.
Почему агент пользователя важен? Как упоминалось ранее, пользовательский агент — это программа, которая работает от вашего имени. Следовательно, веб-боты или любые другие боты также являются пользовательскими агентами, поскольку они выполняют задачи от вашего имени. Тем не менее, самое важное — это строка, включенная в заголовки запроса.
Пользовательские агенты браузера важны, если вы выполняете такую задачу, как просмотр веб-страниц. Большинство веб-сайтов блокируют доступ ботов-скрейперов к своему контенту. Пользовательский агент вашего браузера может проследить свое происхождение от бота, и поэтому веб-сайт, который вы посещаете, может его обнаружить.
Некоторые веб-сайты позволяют только определенным пользовательским агентам сканировать свои веб-сайты. Примером могут служить серверы поисковых систем. Если вы не установите UA, будет использоваться пользовательский агент по умолчанию, и, как указано ранее, его можно отследить до вашего бот-сервера, что может привести к тому, что вы попадете в черный список.
Пользовательский агент против прокси Большинство людей используют пользовательские агенты исключительно для сбора данных с веб-сайтов. Хотя это иногда работает, это не так надежно, как использование прокси. Обычно, если вы собираетесь использовать несколько UA, вам нужно определить разные IP-адреса для всех.
Вы можете получить столько IP-адресов, сколько захотите, через прокси. Кроме того, вы можете пропустить определение отдельных IP-адресов для разных пользовательских агентов, просто используя чередующийся прокси. Многие прокси-серверы изначально поддерживают ротацию строк пользовательского агента.
Если настроено, ваш трафик просмотра будет выглядеть так, как будто он из разных веб-браузеров. Следовательно, у вас меньше шансов быть обнаруженным, и вы не будете заблокированы.
Лучшие прокси для пользовательского агентаЕсли вы собираетесь использовать пользовательский агент вместе с прокси, важно выбрать лучшие из них. ProxyRack — известный поставщик прокси, у которого вы можете приобрести лучшие прокси агента пользователя.
В ProxyRack вы можете приобрести резидентный прокси или прокси для центра обработки данных. Лучший выбор зависит от того, что вы хотите делать в Интернете. Однако, если вы хотите очистить данные, резидентные прокси — ваш лучший вариант.
Прокси-сеть ProxyRack представляет собой огромную сеть с более чем 5 миллионами жилых IP-адресов и более чем 20 000 IP-адресов центров обработки данных. Вы можете использовать определенные протоколы, такие как прокси-серверы HTTP, HTTPS, SOCKS4, SOCKS4A и SOCKS5. Ознакомьтесь с ценовыми вариантами ниже.
Резидентные прокси
Unmetered Residential Proxies: Starting from $80
Premium GEO Residential Proxies: Starting from $14.95
Private Residential Proxies: Starting from $99.95
Прокси-серверы для центров обработки данных
США Прокси-серверы для центров обработки данных с чередованием : от 120 долларов США
Mixed Rotating Datacenter Proxies : Starting at $120
Shared Datacenter Proxies : Starting at $49
Canada Rotating Proxies: Starting at $65
Если вам интересно, что такое пользовательские агенты, как они работают и для чего используются, я уверен, что эта статья оказалась для вас полезной.