что это, из чего состоит, как определить и изменить?

User Agent – это клиентское приложение, используемое браузерами и прочими веб-приложениями для показа сайту информации о себе в соответствующей строке.
Для чего нужен и из чего состоит User Agent?
Все браузеры, мобильные устройства, поисковые роботы содержат Юзерагент. В строке отображается вся необходимая информация о компьютере или телефоне, версии браузера, операционной системе, роботе.
Так же строки с описанием User-agent можно прописать в файле Robots.txt, они важны для корректной работы поисковых роботов на сайте. Посредством строк, от всех либо от определенных поисковиков можно скрыть данные, содержащиеся на ресурсе: конкретную страницу либо сайт целиком, определенный вид файлов, личные данные пользователей и прочее. Так, с помощью User-agent, вы можете скрыть, например, только картинки, либо открыть для индексации исключительно их.
Запретить сканировать информацию можно посредством инструкции либо всем ботам, либо роботу конкретного поисковика, распознающегося User Agent.
В строке с описанием User Agent содержится следующая информация:
- Название и версия браузера.
- Язык.
- Версия операционной системы.
- Программное обеспечение, установленное на используемом устройстве.
- Тип устройства, с которого пользователь зашел на сайт.
Менять Юзерагент можно с целью изменения параметров индексации ресурса, скрытия информации, которую не стоит показывать посторонним лицам, и актуализации старого браузера, чтобы больше не получать уведомления о необходимости установки другого приложения.
Для каждого браузера и операционной системы устройства в строке прописываются разные инструкции.
Как определить User Agent?
Данные о запросах, поступающих на сайт, вы можете найти в виде логах сервера. Функцию сохранения журналов сервера можно включить в Панели управления аккаунтом хостинга
.
В дальнейшем журналы сервера можно будет найти в директории сайта domains, а именно в папке логов logs.
Каждая строка содержит информацию об одном конкретном запросе. К примеру:
[u][26/Oct/2016:12:42:08 +0300] 0.350 0.350 200 55.22.33.11 webmasterie.ru GET / HTTP/1.1 «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» «-» 6756
- 55.22.33.11 – IP адрес устройства, с которого пришел запрос
- webmasterie.ru – название сайта, на которой поступил запрос
- «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» – User-Agent браузера, используемого интернет-пользователем или роботом, зашедшим на сайт
Огромное количество строк User Agent хранятся в базе данных browscap.org. Если данную строку найти в базе, то вы получите множество параметров, таких как название и версия веб-браузера, операционная система и многое другое. База Юзерагент регулярно обновляется и ее можно скачать на сайте browscap.org совершенно бесплатно.
Зачем сайту знать с каким User-Agent к нему пришли?
Как вы уже поняли, строка Юзерагент помогает узнать, откуда был сделан запрос на сайт. Это может сделать компьютер, смартфон, робот поисковой системы или программное обеспечение. Знать данную информацию нужно, чтобы:
- перенаправить запрос со смартфона на мобильную версию сайта;
- применить соответствующие стили для определенного браузера;
- заблокировать доступ к ресурсу различным утилитам;
- собрать статистику о том, сколько запросов с каких устройств приходит;
- создать правила для обработки запросов, приходящих от ботов и так далее.
Чтобы решать вышеперечисленные задачи, современному вебмастеру не обязательно уметь разрабатывать скрипты на PHP, потому что для многих популярных движков, таких как WordPress, уже давно разработаны специальные расширения со всеми подходящими функциями. Вам нужно лишь отыскать соответствующий плагин.
User Agent и поисковые роботы
Поисковый гигант Google создал огромное количество роботов, отвечающих за индексацию контента различного вида, содержащегося на сайтах, а также устройств, с которых пользователи пользуются интернетом.
Главным поисковым ботом Google является Googlebot. Если вам нужно полностью заблокировать сайт от индексации в поисковой системе, в файле Robots агентом пользователя для Googlebot нужно указать условие, скрывающее ресурс от ботов поисковика.
Еще можно скрыть определенную часть контента. Для этого необходимо прописать правило для агента, индексирующего контент. К примеру
Список User-Agent ботов :: Блог веб разработчика
Понадобился мне на днях адекватный список User-Agent поисковых роботов, чтобы отсеивать их во внутренней статистике одного из моих сайтов. Найти такой в интернете, как ни странно, не получилось. Поэтому решил банально собрать самостоятельно из логов посещения. Вдруг кому пригодится.
Сразу предупреждаю, что здесь не только поисковые боты, а так же различные RSS читалки и прочие «нелюди». Однако список позволяет довольно неплохо просеивать посетителей и оставлять только людей.
a.pr-cy.ru AdsBot-Google (+http://www.google.com/adsbot.html) AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari Apache-HttpClient/4.5 (Java/1.8.0_60) eSyndiCat Bot facebookexternalhit/1.1 facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) Google favicon Googlebot-Image/1.0 GuzzleHttp/6.1.0 curl/7.26.0 PHP/5.5.29-1~dotdeb+7.1 GuzzleHttp/6.1.0 curl/7.35.0 PHP/5.6.14-1+deb.sury.org~trusty+1 Java/1.4.1_04 Java/1.8.0_60 LinksMasterRoBot/0.01 (http://www.linksmaster.ru) LinkStats Bot ltx71 - (http://ltx71.com/) Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/) Mozilla/5.0 (compatible; archive.org_bot; Wayback Machine Live Record; +http://archive.org/details/archive.org_bot) Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Mozilla/5.0 (compatible; CNCat/4.2; +http://www.cn-software.com/en/cncat/robot/) Mozilla/5.0 (compatible; CNCat/4.2; +http://www.vipwords.com/en/cncat/robot/) Mozilla/5.0 (compatible; DeuSu/5.0.2; +https://deusu.de/robot.html) Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, [email protected]) Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)/1.8 (InfoSeek crawler; http://www.infoseek.com; [email protected]) Mozilla/5.0 (compatible; Google-Site-Verification/1.0) Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php) Mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/) Mozilla/5.0 (compatible; LinkpadBot/1.06; +http://www.linkpad.ru) Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots) Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots) Mozilla/5.0 (compatible; meanpathbot/1.0; +http://www.meanpath.com/meanpathbot.html) Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler) Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+) Mozilla/5.0 (compatible; NetSeer crawler/2.0; +http://www.netseer.com/crawler.html; [email protected]) Mozilla/5.0 (compatible; openstat.ru/Bot) Mozilla/5.0 (compatible; SemrushBot/0.99~bl; +http://www.semrush.com/bot.html) Mozilla/5.0 (compatible; SputnikFaviconBot/1.2; +http://corp.sputnik.ru/webmaster) Mozilla/5.0 (compatible; statdom.ru/Bot; +http://statdom.ru/bot.html) Mozilla/5.0 (compatible; StatOnlineRuBot/1.0) Mozilla/5.0 (compatible; vkShare; +http://vk.com/dev/Share) Mozilla/5.0 (compatible; WebArtexBot; +http://webartex.ru/) Mozilla/5.0 (compatible; Web-Monitoring/1.0; +http://monoid.nic.ru/) Mozilla/5.0 (compatible; YaDirectFetcher/1.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YaDirectFetcher/1.0; Dyatel; +http://yandex.com/bots) Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexDirect/3.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots DEV) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots mtmon01e.yandex.ru) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots mtmon01g.yandex.ru) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots mtmon01i.yandex.ru) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots mtweb01t.yandex.ru) Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexMetrika/3.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexWebmaster/2.0; +http://yandex.com/bots) Mozilla/5.0 (compatible; YandexWebmaster/2.0; +http://yandex.com/bots) Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4 (compatible; YandexMobileBot/3.0; +http://yandex.com/bots) Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Mozilla/5.0 (Windows NT 6.2; WOW64) Runet-Research-Crawler (itrack.ru/research/cmsrate; [email protected]) Mozilla/5.0 (Windows NT 6.2; WOW64) Runet-Research-Crawler (itrack.ru/research/cmsrate; [email protected]) Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.0.13) Gecko/2009073022 Firefox/3.5.2 (.NET CLR 3.5.30729) SurveyBot/2.3 (DomainTools) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.0; trendictionbot0.5.0; trendiction search; http://www.trendiction.de/bot; please let us know of any problems; web at trendiction.com) Gecko/20071127 Firefox/3.0.0.11 Netcat Bot netEstate NE Crawler (+http://www.website-datenbank.de/) OdklBot/1.0 ([email protected]) parser3 PEAR HTTP_Request class ( http://pear.php.net/ ) pr-cy.ru Screenshot Bot python-requests/2.8.1 Riddler (http://riddler.io/about) rogerbot/1.0 (http://moz.com/help/pro/what-is-rogerbot-, [email protected]) RookeeBot SafeDNS search bot/Nutch-1.9 (https://www.safedns.com/searchbot; support [at] safedns [dot] com) SeopultContentAnalyzer/1.0 Validator.nu/LV http://validator.w3.org/services W3C_Validator/1.3 http://validator.w3.org/services W3C_Validator/1.3 libwww-perl/6.05 Websquash.com (Add url robot) Who.is Bot Y!J-ASR/0.1 crawler (http://www.yahoo-help.jp/app/answers/detail/p/595/a_id/42716/) Yandex/1.01.001 (compatible; Win16; I)
akuma.su
Собираем сами список user agent для браузеров
В один прекрасный день вам обязательно понадобятся актуальные значения юзер агент (user agent). В своих поисках пересмотрите много специальных сайтов, размещающих такие списки, но свежих данных не найдете. Далее опишем способ получения списка значений user agent, наиболее актуальных на текущую дату. Не исключено, что несколько записей будет от старых браузеров так как наш метод основан на сборе статистики посещений сайтов, а некоторые пользователи пользуются старыми не обновленными версиями программ.
Для тех кто забыл: User Agent — это клиентское приложение, использующее определённый сетевой протокол. Термин обычно используется для приложений, осуществляющих доступ к веб-сайтам, таких как браузеры, поисковые роботы (и другие «пауки»), мобильные телефоны и другие устройства.
1 этап — сбор статистики с сайтов
Для сбора значений юзер агентов нам понадобятся свои работающие сайты, если нет своих, можно попросить друзей, если и у друзей нет, то можно за небольшое вознаграждение поискать исполнителя на каком-нибудь сео форуме или фриланс сайтах. Чем больше посещаемость сайта, тем лучше так как статистика соберется за короткий срок и по объему она будет значительно лучше.
Определившись с сайтами «донорами» идем в панель управления хостинга и в меню «Журналы» (такое название меню у хостинга beget, в другом может отличатся) включаем функцию «Журнал доступа к веб-серверу». После этих манипуляций в коневой папке сайта появится текстовый файл со списком записей к каким страницам вашего сайта были обращения, ip-адрес и юзер агент устройства. Далее нужно выждать время чтобы эти записи накопились.
На следующем изображении выделена запись user agent, которые мы и сможем узнать и будем собирать.
Пример записи user agent2 этап — чистка списка user agent
Скачиваем получившиеся файлы к себе на компьютер, если их несколько, то открываем любой в блокноте, а все последующие добавляем в него копированием текста. Тем самым мы подготовим файл для загрузки через excel. В нашем примере получился файл на 86072 строки. Далее необходимо получившийся файл открыть через excel. Открываем программу, жмем «Файл»-«открыть», в следующем окне выбираем наш файл. Далее откроется мастер текстов (импорт) в котором нужно поставить чекбокс в положение «с разделителями» и в следующем окне в поле «другой» поставить двойную кавычку. На третьем шаге в таблице «образец разбора данных» выделить последний столбец и указать для него формат «текст».
После такого импорта данные о посещении разбиты по столбцам. Нужные нам юзер агенты находятся в столбце F, поэтому смело можно удалить столбцы от A до E. Далее необходимо воспользоваться встроенной в excel функцией удаления дублей. В 2007 версии кнопка «удалить дубликаты» находится на вкладке «данные». Нажимаем ее и видим, что вместо 86072 строк, осталось 1555. Но на этом не останавливаемся, а следующим шагом удаляем ненужные записи юзер агент от поисковых систем. Выглядят они так: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html). Можно поставить фильтр по слову «bot» или «compatible». Далее идем по списку юзер агент и удаляем не нужные нам записи, например, от браузеров телефонов на андроид или айфон.
3 этап — итоговый файл
После всех чисток, получился довольно большой файл user agent, который можете использовать для смены записи в браузере, для добавления в программы парсинга и тому подобные. Актуальность списка — первая половина февраля 2016 года. Периодически он будет обновляться.
Скачать список юзер агент
В файле экселя есть 3 вкладки:
- Основной список, где найдете 823 записи user agent от yandex, mozila firefox, opera, internet explorer (IE), google chrome, safari и других браузеров. Записи собирались со статистики посещений сайта, поэтому могут попадаться старые браузеры и операционные системы, ведь не у всех они обновлены.
- Вкладка «Мобильные устройства» содержит лист с 530 записями от мобильных браузеров. Решено их не удалять, а перенести в отдельную вкладку.
- Во вкладке «Мусор» собрали старые версии браузеров, использование которых не рекомендуется.
Заключение
Файл user agent браузеров не в фомате txt, но это легко поправимо обычным копированием. На сайтах донорах использовался протокол http. Если в строке встречается запись wow64, то она означает, что компьютер посетителя с таким юзер агентом использует 64-битную операционную систему. Большая часть посетителей — это Россия.
Способ сбора записей не самый быстрый и удобный, но лучше, чем использовать старые и не современные записи.
Рекомендуем обязательному прочтению статьи—здесь
web-how.ru
User-Agent: визитная карточка веб-приложения | Бортовой журнал
В этой статье мы расскажем о том, что такое User-Agent, для чего он нужен и как с его помощью делать всякие нужные штуки. Эта информация пригодится тем, кто планирует всерьез самостоятельно заняться оптимизацией своего сайта, уделяя особое внимание вопросам безопасности. Вслед за этой статьей появится еще несколько материалов, посвященных оптимизации сайтов, не пропустите.
Итак, User-Agent. В обычной жизни нас с вами можно идентифицировать по разным параметрам: голос и внешность выдают в нас мужчину или женщину, форма — военного или доктора. Помимо таких очевидных, есть ряд прочих критериев, которые позволяют нам определить, с кем имеешь дело, и как именно стоит себя вести в данной ситуации. Похожим образом происходит взаимодействие с сайтами — веб-приложение сообщает данные о себе, а сайт в свою очередь может обрабатывать их различными способами. Эта информация передается в User-Agent, о котором пойдет речь далее.
Что такое User-Agent, какую информацию он передает?
В последние годы использование глобальной сети Интернет стало настолько привычным и даже обыденным, что при открытии какого-либо сайта мы вовсе не замечаем, что первым делом запускаем браузер. А ведь именно он — браузер — является тем приложением, которое позволяет нам видеть сайты красиво оформленными, а не состоящими из набора HTML-тегов и текстовых ссылок. При открытии сайта браузер посылает HTTP-запрос к серверу, который занимается обслуживанием этого сайта, дожидается ответа от сервера и обрабатывает его определенным образом. HTTP-запрос содержит в себе набор информации, из которой стоит выделить метод обработки данных (GET, POST), адрес запрашиваемого ресурса, IP-адрес отправителя, и, собственно, User-Agent.
User-Agent — это текстовая часть запроса, которую веб-приложения используют для сообщения сайту информации о себе. User-Agent браузера содержит название и версию приложения, а также данные об операционной системе компьютера: версия, разрядность, язык по умолчанию и другие параметры. Помимо браузеров User-Agent есть у утилит (Wget и cURL) и поисковых роботов — обычно в них содержится имя робота и ссылка на ресурс, регламентирующий его работу.
Ниже рассмотрены различные варианты User-Agent с расшифровкой тех данных, на которые следует обратить внимание.
Браузеры ПК на примере Mozilla Firefox 36 (Win 8.1 x64):
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Windows NT 6.3 — вид и версия операционной системы компьютера, на котором установлен браузер.
Firefox/36.0 — имя браузера и его версия.
Мобильные браузеры на примере Android 2.3.5 (Philips W632):
Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; Philips W632 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Linux — тип операционной системы (семейство Linux).
Android 2.3.5 — название операционной системы и ее версия.
ru-ru — язык на мобильном устройстве по умолчанию.
Philips W632 Build/GRJ90 — название и версия мобильного устройства, на котором установлен браузер.
Поисковые системы на примере роботов Яндекс:
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
YandexBot/3.0 — имя и версия робота.
http://yandex.com/bots — ссылка на ресурс, содержащий справку о работе робота.
Утилиты на примере wget (Linux):
Wget/1.15 (linux-gnu)
Wget/1.15 — название и версия программного обеспечения.
Как узнать, от каких User-Agent поступают запросы к вашему сайту?
Информация о поступающих запросах хранится в виде журналов работы веб-сервера. Вы можете включить сохранение журналов веб-сервера в Панели управления аккаунтом хостинга. Перейдите в раздел «Дополнительно» → «Журналы веб-сервера», отметьте домен сайта и нажмите на кнопку «Включить». После этого журналы веб-сервера начнут сохранятся в папке /logs, находящейся в директории сайта, в указанном примере это директория domains/user-agent.01sh.ru/logs.
Информация о каждом запросе хранится в журнале отдельной строкой, например:
[u][26/Oct/2016:12:42:08 +0300] 0.350 0.350 200 77.88.99.00 sprinthost.ru GET / HTTP/1.1 «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» «-» 6756
Разберем подробнее те части записи, которые нас интересуют в контексте статьи.
77.88.99.00 — IP-адрес, с которого поступил запрос.
sprinthost.ru — имя сайта, к которому было направлено обращение.
«Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» — тот самый User-Agent браузера, который обращался к сайту.
Зачем сайту знать, с каким User-Agent к нему пришли?
Как видно из приведенных выше примеров, по User-Agent очень просто определить, откуда пришел запрос — это может быть компьютер, планшет, мобильное устройство, поисковый робот или некое программное обеспечение.
Информация об источнике запроса может быть необходима для решения следующих задач:
- перенаправление запросов на мобильную версию;
- использование специфических стилей для определенных браузеров;
- сбор статистики о количестве запросов с разных устройств;
- создание специальных правил для обработки запросов от роботов;
- запрет доступа к сайту для каких-либо веб-утилит;
- всякие другие штуки.
Значительная часть перечисленных задач требует опыта разработки скриптов на PHP, но не стоит пугаться — для большинства популярных CMS уже существуют расширения, обладающие необходимыми функциями, и вам достаточно найти подходящий плагин или модуль, чтобы получить желаемый результат.
Мы же подробнее разберем ситуацию, когда требуется запретить доступ к сайту по User-Agent. Чаще всего это необходимо для исключения из индексации поисковыми роботами файлов из определенной директории, блокировки нежелательных роботов, создающих нагрузку на сайте, или же обеспечения безопасности, если к сайту поступает множество подозрительных запросов с различных IP-адресов, но с одинаковым User-Agent.
Как запретить доступ к сайту по User-Agent?
Ответ достаточно прост — всего при помощи нескольких правил в файле .htaccess, сформировать и добавить которые не составит труда даже новичку. Освежить знания по работе с файлом .htaccess вам поможет статья в нашем блоге.
Рассмотрим пример, в котором используются правила, запрещающие доступ к сайту с использованием утилиты wget:
SetEnvIfNoCase User-Agent '^Wget' bad_bot Deny from env=bad_bot
В первой строке после параметра User-Agent в кавычках указан User-Agent утилиты Wget, которому присваивается имя bad_bot. Во второй строке указывается необходимость блокировки доступа (Deny) для запроса, пришедшего от bad_bot.
Вместо «^Wget» может быть указан User-Agent любого браузера или робота, имя bad_bot может быть присвоено любому количеству User-Agent, то есть правила
SetEnvIfNoCase User-Agent '^Wget' bad_bot SetEnvIfNoCase User-Agent '^Java' bad_bot SetEnvIfNoCase User-Agent '^Zeus' bad_bot Deny from env=bad_bot
запретят доступ для всех перечисленных User-Agent.
Чтобы убедиться в том, что изменения внесены успешно, вовсе не обязательно искать большое количество различных устройств для проверки работы сайта — гораздо удобнее воспользоваться встроенными почти во все современные браузеры функциями подмены User-Agent.
Как заменить User-Agent браузера?
Обычно замена User-Agent применяется, чтобы проверить правила для роботов и утилит.
Не секрет, что каждый из браузеров при формировании страницы сайта обрабатывает полученные с сервера данные особым образом. Соответственно, если в браузере Firefox указать User-Agent браузера Chrome, результат отображения сайта может быть совершенно неожиданным. Об этом обязательно следует помнить. Всегда возвращайте исходное значение User-Agent после завершения тестирования.
Инструкция по замене User-Agent в Mozilla Firefox (для версий 34.0 и выше)
Наберите в адресной строке вашего браузера следующую фразу:
about:config
и нажмите Enter. Если появится сообщение о том, что надо быть осторожным, нажмите кнопку «Я обещаю, что буду осторожен!». После откроется список множества настроек, а также строка поиска. Введите в эту строку:
useragent
Вам необходимо убедиться, что параметра general.useragent.override не существует. Для создания этого параметра кликните правой кнопкой мыши по пустому месту и выберите пункт «Создать (New)», затем «Строка (String)». Введите имя этой строки general.useragent.override, нажмите «ОК». Затем потребуется ввести значение этой строки, которое и будет использоваться в качестве нового User-Agent, и нажать «ОК». К примеру, если вы хотите заменить значение на User-Agent утилиты Wget, после создания строки с именем general.useragent.override укажите в качестве ее значения:
Wget/1.15 (linux-gnu)
Новое значение должно появится в списке параметров. Перезапускать Mozilla Firefox не требуется.
Инструкция по замене User-Agent в Google Chrome (для версий 26.0.1410.64 и выше)
Чтобы указать для Google Chrome нестандартный User-Agent, его необходимо запустить с ключом
--user-agent=""
и в кавычках указать новую строку User-Agent.
Например, в ОС Windows это можно сделать, нажав сочетание клавиш Win+R и вписав в поле «Открыть» команду:
chrome --user-agent="MyBrowser"
где вместо MyBrowser должен быть указан нужный вам User-Agent.
Например, чтобы присвоить Google Chrome значение User-Agent консольного браузера Links, следует ввести в поле «Открыть» строку
chrome --user-agent="Links (2.8; Linux 3.13.0-24-generic x86_64; GNU C 4.8.2; text)"
и нажать на кнопку «ОК».
После этого открывшееся окно браузера будет иметь не стандартный, а заданный User-Agent. Чтобы проверить текущее значение User-Agent, можно ввести в адресной строке:
about:
Информацию о том, как изменить User-Agent других браузеров, можно найти в их документации.
Желаем вам интересных экспериментов!
blog.sprinthost.ru
что это такое, как настроить, особенности
Индексация содержимого страниц сайта поисковыми системами происходит при помощи различных поисковых роботов. Все они проводят на сайте определенное время. Поэтому важно, чтобы была проиндексирована вся нужная информация, которая может привлечь посетителей.
Если сайт состоит из большого количества страниц, то целесообразно скрыть от внимания ботов ту информацию, которая не является целью первоначального запроса при поиске информации по теме сайта в интернете. Также на период внесения изменений в тексты или оформление сайта можно скрыть его весь или отдельные страницы от поисковиков. Для того чтобы это сделать, нужно отредактировать файл Robots.txt, расположенный в корневой директории сайта. В нем прописываются строки User-agent – директив, которые задают инструкции ботам поисковых систем при работе с сайтом. Именно их нужно менять, чтобы управлять индексацией.
Что из себя представляет User-agent?
User-agent есть в любом браузере и мобильном устройстве. Эта строка содержит множество сведений о компьютере, операционной системе, версии браузера. Прописанные в файле Robots.txt, строки с описанием User-agent влияют на работу поисковых систем на сайте. С их помощью можно скрыть от поисковиков (от всех или каких-то определённых) находящуюся на сайте информацию – какую-то страницу или весь сайт, конкретный тип файлов. Ограничивая индексацию по типу файлов, к примеру, можно сделать видимыми только картинки, только тексты или, наоборот, исключить из индексации конкретный тип файла.
Ограничение видимости можно прописать для бота конкретной поисковой системы или для всех роботов. Инструкции прописываются для каждого робота, для которого известно написание User-agent.
Из строки, содержащей описание User-agent можно узнать следующие сведения:
- Наименование основного браузера, его версию;
- Версию операционной системы;
- Какое специфическое программное обеспечение установлено на устройстве;
- Вид устройства, с которого осуществляется выход в интернет.
Изменение User-agent может понадобиться не только для того чтобы редактировать параметры индексации сайта, но и чтобы скрывать нежелательную для отслеживания информацию: например, вид устройства для аккаунтов Google, VK. Также с помощью редактирования User-agent можно сделать актуальным устаревший браузер, перестать получать предложения об установке того или иного браузера. Изменение данной строки в разных браузерах и устройствах происходит по-своему. Следует искать инструкции для конкретного браузера или типа операционной системы (Android, iOS).
User-agent и поисковые роботы Google
Одной из самых популярных поисковых систем является Google, и этой системой создано множество ботов для индексации различного контента на сайтах и устройств, с которых осуществляется выход в интернет.
Некоторые боты системы:
- APIs-Google – робот для рассылки push-уведомлений;
- AdSense – распознает содержание сайта для размещения соответствующих тематике объявлений;
- AdsBot Mobile Web Android, Mobile Apps Android, AdsBot-Google и AdsBot Mobile Web – для проверки рекламного контента, размещенного на сканируемом портале. Каждый из ботов отвечает за свои устройства – компьютеры, телефоны на IOS или Android, мобильные приложения;
- Googlebot Images – сканирует файлы, являющиеся изображением;
- Googlebot News – ищет информацию для размещения в новостном разделе системы;
- Googlebot Video – отвечает за видеофайлы;
- Googlebot.
Основной робот для поисковика Google – это Googlebot. В случае необходимости полной блокировки индексации всего сайта для этой системы, достаточно внести в файл Robots.txt условие, устанавливающее Googlebot агентом пользователя. Тогда для всех ботов компании Google сайт станет невидимым. Можно ограничить видимость определенного контента. Тогда нужно настроить правило для агента, отвечающего за этот контент. Например, сканированием изображений на сайте занимается Googlebot-Image. Запись в файле Robots, где оформляется данная операция, выглядит так:
User-agent: Googlebot
Disallow: (здесь остается пустое место, так как основному боту ничего не запрещается)
User-agent: Googlebot-Image
Disallow: /personal (запрет на видимость изображений в личном каталоге для бота, ответственного за контент данного типа).
Можно запретить индексацию всего сайта, но разрешить индексировать конкретный контент, например, видео или размещенную рекламу. К примеру, чтобы разрешить сканировать только видео, основному боту нужно запретить индексацию всего сайта, а в качестве агента, для которого запретов не предусмотрено, указать Googlebot Video.
Если сайт должен быть виден поисковой системе Google полностью, без исключений, то файл Robots.txt не нужен, его можно вовсе удалить (при условии, что не нужно ограничить какой-либо другой поисковик).
Списки User-agent
Чтобы просмотреть список User-agent поисковой системы, достаточно перейти в соответствующий раздел ее сайта в интернете.
Списки строк агента пользователя для всех ботов Google можно найти на официальной странице ресурса в разделе «Поисковые роботы Google». Там находится подробная таблица с описанием ботов, их назначения, строками User-agent для каждого из них и инструкциями по прописыванию правил доступа в robots.txt и метатегах.
Основным поисковым ботом Яндекса является Yandex, для Yahoo! это Slurp, Рамблер запускает по Сети бота StackRambler, у Мэйл.ру функцию основного робота выполняет Mail.Ru. обычно крупные поисковики имеют нескольких роботов, перечень которых должен быть на их сайте с указанием полных строк агентов пользователя.
Если специальных настроек видимости для роботов поисковых систем на сайте не требуется, то можно удалить файл robots.txt и тогда сайт компании будет полностью сканироваться всеми роботами, если какие-либо другие параметры не помешают индексации.
znet.ru
Random User-Agent — версия вторая / Habr
Прошло два года с того момента, как вышла первая версия этого расширения для Chromium-based браузеров (работает в Google Chrome, Yandex.Browser и т.д.), задача которого проста и понятна — скрывать настоящий User-Agent. На данный момент это расширение работает у +6.000 пользователей (что очень скромно), и несколько дней назад получил на почту письмо с просьбой его немного доработать. Оценив состояние кода, к которому два года никто не притрагивался, было решено — переписывать его с нуля. Четыре дня работы, и вуаля — встречаем свежую мажорную версию, значительно улучшенную и с новым функционалом.
Под катом будут некоторые мысли как по поводу чуть-более анонимного веб-серфинга, так и настройке браузера Google Chrome, и почему это расширение может быть полезно. Чуть-чуть опытные анонимусы не найдут в посте для себя чего-либо интересного, поэтому как для них, так и для самых нетерпеливых, традиционно — исходники на GitHub и расширение в Google Webstore.
Об анонимности
Не буду говорить о том, что есть смысл пускать весь внешний сетевой трафик через VPN/OpenVPN/Tor и прочие шифрованные туннели; не буду говорить и о том, что если компетентным лицам, обладающими достаточными ресурсами понадобиться схватить тебя за задницу, скорее всего — они схватят (ты же не пользуешься только мобильным интернетом в странах третьего мира по анонимным сим-картам, постоянно перемещаясь, и глядя в сеть только с помощью telnet-а через Tor?).
Анонимность и удобство веб-серфинга, всё чаще — вещи взаимоисключающие. 3rd party cookies — это очень удобно (не надо авторизовываться на ресурсах, использующих единую авторизацию), но они же позволяют успешно отслеживать ваши перемещения по другим ресурсам. Использование proxy/socks дают дополнительные средства сокрытия реального IP адреса, но они порою успешно определяются многими ресурсами (авито, пикабу — к примеру), и из-за их использования — доступ к ресурсу для тебя закрывают. Использование агрессивных AD-блокеров определяются сайтами, и они бережно просят отключить их. Поэтому и приходится балансировать на грани — удобство, или безопасность.
Да, для меня безопасность является синонимом к слову анонимность. «Нет, мне нечего скрывать, но это совершенно не ваше дело» (с) хабражитель.
Я пользуюсь различными браузерами. Одновременно довольно часто запущены и FireFox, и TorBrowser, и Google Chrome (его то и использую чаще всего). В разных браузерах различные наборы плагинов/прокси, и соответственно разные настройки. Каждый из них заслуживает отдельного разговора, но сейчас я бы хотел вновь поговорить именно о Google Chrome. Ниже я перечислю настройки этого браузера по умолчанию которые, возможно, следует изменить:
- Настройки синхронизации избыточны;
- «Настройки» > «Дополнительные настройки синхронизации» > Отмечаем лишь «Сервисы», «Расширения», «Настройки» и «Закладки» (этот список можно сократить до «Расширения», «Настройки»);
- Там же включаем шифрование с помощью кодовой фразы;
- Переходим по ссылке и выключаем всё;
- Популярные поисковые системы отслеживают ваши действия;
- Ставим в качестве поисковой системы (вроде как анонимный)
https://duckduckgo.com?q=%s
;
- Ставим в качестве поисковой системы (вроде как анонимный)
- Хранение файлов cookies разрешено для всех;
- «Настройки» > «Настройки контента» > «Файлы cookie» > «Не разрешать сайтам сохранять данные» + «Блокировать данные и файлы cookie сторонних сайтов»;
- При посещении ресурсов, где поддержка cookies необходима для функционирования, нажимаем на «печеньку» в строке браузера > «Показать cookies и другие данные…» > «Заблокировано» > Те, которые необходимо хранить после закрытия браузера — отмечаем как «Разрешить», иначе — «Удалять при выходе»;
- Время от времени проверять списки исключений, удаляя из разрешенных всё лишнее;
- Максимальный срок хранения файлов cookies невозможно ограничить;
- Ставим Limit Cookie Lifetime, выставляем лимит в 7 дней, к примеру. Да, раз в неделю придется перезаходить на свои ресурсы, но и треки более недели не будут актуальны (если только анализатор треков не обладает добротной логикой);
- Запуск контент-плагинов (и flash-решето входит в их число) разрешен по умолчанию;
- «Настройки» > «Настройки контента» > «Плагины» > «Заправить разрешение на запуск контента плагинов»;
- Открываем эту ссылку и выключаем «Adobe Flash Player» (при необходимости посмотреть онлайн-кино придется ручками временно включить обратно, но зато HTML5 плееры будут сразу понимать что флеша нет и корректно запускаться);
- Доступ камере, микрофону и пр. лучше запретить по умолчанию;
- Всё те же «Настройки» > «Настройки контента» — самостоятельно запрещаем доступ ко всему, что не критично прямо сейчас;
- Обязательно запрети «Доступ к плагинам вне тестовой среды» и определение местоположения;
- Отправка «Do Not Track» отключена;
- Очень, очень сомневаюсь что кто-либо следует правилу не отслеживать тех, кто отправляет данный заголовок, поэтому реши самостоятельно — ставить его в «Настройки» > «Личные данные», или же нет;
- Пароли и формы сохраняются;
- «Настройки» > «Пароли и формы» — обязательно выключаем оба чекбокса. Пояснять причину, думаю, смысла нет;
- Браузер подвержен утечке IP адреса по средствам WebRTC;
- Ставим плагин WebRTC Leak Prevent, разрешаем ему работать в режиме «Инкогнито», в настройках его указываем «Disable non-proxied UDP»;
- Проверяемся, к примеру, на этой странице;
- Referer отправляется безконтрольно, что позволяет всем ресурсам определять откуда вы к ним пришли;
- Ставим Referer Control, в настройках указываем «Referer Control status» — «Active», а «Default referer for all other sites» — «Block»;
- Некоторые сайты (например — Habrastorage) используют провекру referer-а, поэтому работа плагина может немного «доставать», но надо это пересилить, и научиться писать регулярки исключений;
- Отсутствует контроль запуска JS-скриптов, которые занимаются трекингом и аналитикой;
- Ставим всем хорошо известный Ghostery, настраиваем на блокировку всего возможного;
- Любимые плагины для блокировки рекламы детектятся посещаемыми ресурсами и закрывают доступ к контенту;
- Попробуй использовать менее популярные, но не менее эффективные. uBlock до недавнего времени входил в этот список, но крайнее время использую Adguard AdBlocker, так как он пока ещё мало кем детектится и памяти потребляет в разы меньше чем собратья.
О том, какое расширение использовать для проксирования и где брать прокси-листы — ответить тебе придется самому. Скажу лишь то, что лучше всего — использовать цепочки прокси, но от этого в 9 из 10 случаев скорость серфинга просто дохнет. Публичные прокси-листы не живучие совсем. Те, что приобретались за кровные — чуть более живучие, но не значительно. Халявы тут вообще не много, и для комфорта лучше всего приобрести собственный прокси-сервер (да, такие услуги предоставляют, и довольно много кто; при оплате не используй реальные карты, имена, ip-адреса — разумеется). О том что предварительно весь внешний трафик следует пускать через туннели — я не напоминаю, ты и так всё знаешь.
Основные методы идентификации
Заранее прошу прощения за использованную ниже терминологию. Она не совсем корректна, но, как мне кажется — более проста для понимания
Идентификация пользователя, определение что эти N запросов выполнил именно он, а не кто-то другой — является главным врагом анонимизации. Методы идентификации делятся на как минимум два больших класса — использующих стороны клиента и сервера соответственно. На стороне клиента в классическом подходе она может выглядеть следующим образом:
- Страница ресурса содержит в своем теле ссылку на JS-скрипт, например — google.analytics;
- Браузер отправляет на сервер, который хранит этот самый JS-скрипт GET запрос;
- Сервер отвечает контентом скрипта;
- Браузер исполняет полученный скрипт (загружая дополнительные «модули» при необходимости), получает от браузера информацию о его версии, ОС, установленных плагинах, установленных шрифтах, разрешению экрана, локалях, системном времени, и прочей вкусной информации;
- Скрипт проверяет наличие уникальной плюшки, или устанавливет её для отслеживания ваших дальнейших перемещений в сети;
- Скрипт отправляет собранные данные + имя плюшки себе для хранения;
«Ну и чего такого?» — спросишь ты, и будешь чертовски прав. «Пускай собирают эти данные — мне не жалко!» — да-да, дружище! А пока ты так думаешь, давай немного займемся анализом. Для посещения сайтов ты использовал Google Chrome версии 52.0.2743.116 (версия актуальная — у тебя включено автообновление) под управлением Windows 10 (минорная версия подсказывает что, возможно, у тебя не установлены крайние обновления и, как следствие, отключен Windows Update) находясь в России и, предположительно, в городе Москва (и часовой пояс соответствует), с IP провайдера «MTC», у которого данный пул привязан к Люблинскому району, скорее всего используя ноутбук (судя по разрешению экрана), и наверняка интересующийся покупкой нового автомобиля (потому как до этого на сайте drom ты искал подержанную Мазду, и именно в Москве; на сайте drom, к примеру, стоит та-же аналитика). Судя по времени посещений — ты это делал с рабочего места и, наверное, в этом или соседнем районе и работаешь. Если твоя соц. сеть использует аналогичный сервис аналитики, то… То ты понял (пример вымышленный, но не лишенный зерна здравого смысла).
Понимаешь, почему довольно важно следить за тем, какие скрипты запускает твой браузер? «Да я вообще выключаю JS по умолчанию!» — воскликнет кто-то в комментариях, и будет прав — так правильнее. Именно правильнее, а не удобнее. Тут надо тебе всё-таки выбирать, что для тебя важнее — безопасность, или комфорт. Сейчас 7 из 10 сайтов просто не заработают как надо без JS, и только тебе решать когда переходить на telnet и переезжать в страну третьего мира, попутная скупая анонимные сим-карты. Ghostery хорош, но даже если он бы давал 99% гарантию блокировки всех средств аналитики — 1% всё равно имеет место быть. Тут не может быть универсального правила, надо просто быть бдительным и чуть-чуть думать своей головой.
Как происходит идентификация на стороне сервера? Давай вспомним как выглядят access-логи http-демонов:
[meow@hosting /var/log]$ cat somesite.org.access_log | tail -3
10.12.11.254 - - [25/Jul/2016:15:51:16 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"
10.12.11.254 - - [25/Jul/2016:15:57:38 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
10.12.11.254 - - [25/Jul/2016:19:19:25 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"
Примитивнее. По-умолчанию сервер сохраняет о тебе 4 вещи:
- IP адрес, с которого пришел запрос;
- Время, когда он пришел;
- Какую страницу ты запросил;
- Какой у тебя User-Agent.
Грепнув логи по IP мы получим всех, кто мог прийти с твоего IP (если это IP на котором NAT — мы узнает кто из твоих соседей-абонентов ещё был). Грепнув же по User-Agent — мы получим почти наверняка именно конкретного пользователя. Плюс сможем посмотреть на какие страницы он ходил, в какое время и последовательности, а если есть дебаг-лог — то возможно и какие данные вводил на формах сайта, и какие плюшки у него в браузере.
Шеф, что делать?
Избежать утечек информации на 99.8% возможно — но это очень неудобно в плане юзабилити. Если обобщить, то к самой критичной информации можно отнести твой IP (провайдер и местонахождение) и User-Agent (используемое ПО, ОС и их версии), так как они наиболее информативны и уникальны. Как скрыть реальный IP — мы уже говорили. Как скрыть User-Agent? Есть разные способы, и описанный ниже — просто один из многих. Возможно, именно он тебе покажется чуть удобнее.
С твоего позволения основные его «фишки» будут изложены в виде простого списка:
- Открытые исходники, доступные на GitHub (принимаю Pull-реквесты и включены Issues);
- Заменяет поле User-Agent в HTTP заголовках всех запросов;
- Компактное (на момент написания этого поста — всего 45Кб в zip архиве);
- Используемый User-Agent генерируется случайным образом, подобный определенным типам браузеров и ОС (настраивается; можно было бы использовать и один какой-то определенный, но этот подход работал бы лишь если очень много кто пользовался этим расширением — так бы пользователь «терялся» в куче);
- Автоматически подменяет User-Agent на случайный через заданный промежуток времени, по нажатию на кнопку, или при старте браузера;
- Умеет использовать заданный ручками User-Agent, а не использовать генерируемый;
- Настройки синхронизируются между браузерами (настраивается);
- Включает в себя поддержку защиты от определения User-Agent средствами JavaScript (экспериментально) — то, о чем так долго просили (mock запускается асинхронно, поэтому не во всех случаях успешно скрывает; на сколько мне известно — такого больше не умеет ни одно расширение — поправьте меня, если не прав);
- Поддерживает список исключений (возможно использование масок в адресах);
- На данный момент русская, английская и украинская локализации;
- Бесплатно и без рекламы;
- Лицензия WTFPL 😉
Как выглядит?
Скриншот страницы настроек
Если у вас есть вопрос, предложение или багрепорт, но вы не можете о нем написать ни в WebStore, ни в комментариях на хабре — вот вам волшебная ссылка. Хотел бы ещё написать и о том, как писал само расширение; как создал объект, который поддерживает события onGet и onSet произвольных свойств и сам хранит свои данные в хранилище; как пришел к решению реализовывать работу всех компонентов расширения с помощью своего, внутреннего API — но это совсем другая история, и исходники, возможно, расскажут её лучше. Пользуясь случаем скажу что был бы чертовски признателен в помощи перевода расширения на языки, отличные от русского и английского. Если таковое желание имеет место быть — просто создайте Issue в репозитории с темой «Помогу с переводом на %имя_локали%», или бабахните Pull-Request.
Протестировать как работу плагина, так и свою анонимность ты можешь, например, вот по этим ссылкам. Но не стоит к результатам этих тестов относиться слишком серьезно.
И, с вашего позволения, продублирую ссылку на расширение Random User-Agent в WebStore.
Спасибо nazarpc за очень оперативный перевод на украинский язык и pull-request. Прям здорово!Если встретите очепятки, грамматические или пунктуационные ошибки в тексте — пишите о них в личку, пожалуйста.
habr.com
С чем едят UserAgent / Habr
Для начала, конечно, стоило рассказать зачем едят этот самый «пользовательский агент». Ну или, вообще, начать с того что же это за агент такой. (Кстати, никто не знает какой-нибудь славянско-православный перевод этого термина?)Но рассчитывая, что хабра юзер либо уже знает и использует useragent либо ему это не нужно, я бы не хотел останавливаться на предисловиях. И так, мой совет — употребляйте useragent с регулярными выражениями!
Конечно, тебе свойственно регулярно употреблять выражения, %username%, но они другие и для души, а я о regex. Одной из основных задач в моей работе, является правильное определение возможностей устройства и браузера конечного пользователя. Так как основной упор мы делаем на мобильные устройства (сотовые телефоны), то их я и возьму в пример. В отличие от пользователей обычных компьютеров, пользователи мобильных устройств жёстко и жестоко ограничены в разрешении экрана, возможностях браузера и т.д. У нас имеется небольшая база данных собранная и автоматически обновляемая с помощью UAProf и Wurfl. Но заголовки агентов (useragent header) постоянно изменяются и количество различий постоянно растёт. О том чтобы делать поиск очередного устройства проверкой агента один к одному не может идти и речи, но как то же надо искать. Поэтому мы стали разбираться с устройством useragent и что из него можно выжать.
Ингредиенты
Стандарты и формат — как обычно никто их не соблюдает. Формат useragent изменяется от производителя к производителю и от серии к серии. К тому же большинство сотовых операторов любят переписывать заголовки.
Основные блоки должны быть такие:
устройство/версия браузер/версия (поддерживаемые стандарты и технологии).
Первый же пример sonyericssonk530i/r6bc browser/netfront/3.3 profile/midp-2.0 configuration/cldc-1.1 как бы говорит нам, что скобки ожидать не приходится, а второй пример mozilla/5.0 (symbianos/9.4; u; series60/5.0 nokia5800d-1/21.0.025; profile/midp-2.1 configuration/cldc-1.1 ) applewebkit/413 (khtml, like gecko) safari/413 мягко намекает, что и порядок никто соблюдать не будет. Но всё же мне важно знать, что разные агенты появляются у одного и того же устройства, например nokia n95:
- mozilla/5.0 (symbianos/9.2; u; series60/3.1 nokian95/12.0.013; profile/midp-2.0 configuration/cldc-1.1 ) applewebkit/413 (khtml, like gecko) safari/413
- mozilla/5.0 (symbianos/9.2; u; series60/3.1 nokian95/31.0.017; profile/midp-2.0 configuration/cldc-1.1 ) applewebkit/413 (khtml, like gecko) safari/413 [en-us]
- mozilla/5.0 (symbianos/9.2; u; series60/3.1 nokian95/30.0.015; profile/midp-2.0 configuration/cldc-1.1 )
- mozilla/5.0 (symbianos/9.2; u; series60/3.1 nokian95_8gb/30.0.018; profile/midp-2.0 configuration/cldc-1.1 ) applewebkit/413
- mozilla/5.0 series60; nokian95;
Рецепт
Однако, как можно заметить кое какая логика есть. После слеша (/) идёт версия — динамическая часть, которая особой роли не играет. Обязательно присутствует указание на браузер. Разделение токенов с помощью пробела и/или точки с запятой. Покрутив логи мы обнаружили много мусора в заголовках агента, поэтому первым шагом стала стандартизация и выделение сегментов. Получились вот такие полезности:
- Выбираем то, что действительно useragent:
([[(]?[a-z0-9._+;]\s?[/\-;:\\,*\s]*[)\]]?\s?)*
- Определяем токен браузера:
((iemobile|kbrowser)\s[0-9.]+)|((up(\.link)?|netfront|obigo|opera\s?(mini|mobile)?|deckit|safari|(apple)?webkit|mozilla|openwave)/[0-9\.a-z\-]+\+?)|(browser/[a-z\-0-9]+/?[0-9\.a-z\-]+)|([a-z\.-]+browser[a-z\.-]*(/[0-9\.a-z\-]+)?)
- Определяем профиль и конфигурацию:
(((profile|configuration|java(platform)?)/[a-z]+-?)|((cldc|midp|wap)[\s\-]?))[0-9\.-a-z]+
- Язык:
((?<=[\s;\[\(])[a-z]{2}[\s-][a-z]{2}(?=[\s;\]\)]))|\[([a-z]{2,3}[\-_\s]?)+\]
- Версия:
[\s;/]+(v(er)?[\s.]*)?[0-9]+\.[0-9\.]+([a-z]{1,2}[0-9\.]*)?
- Иногда указывают размеры экрана в пикселях:
[0-9]{3}x[0-9]{3}
Естественно, что сто процентного результата не получилось, но прогонка по 30 000 useragent-ов показала, что правильные сегменты высветились в 97%. Так что результат вполне достойный. Но нам этого не хватило. Некоторые вещи надо проверять по базе данных и там всё тот же разброс и разнообразие моделей и агентов. Возникла простая и интуитивно понятная идея — поиск по модели. То есть несмотря на то, что существует более десятка разных useragent-ов для той же 95-ой Нокии, в каждом варианте присутствует nokian95. Задача была бы тривиальной, если бы нужно было определить/искать только одну и ту же модель (допустим узнать iPhone или нет). Но тогда вполне хватило бы if-else. В жизни всё сложней и никакого универсального стандарта для определения модели просто нет.
Десерт
Мы пошли от обратного — подчистим useragent от тех токенов, определять которые мы научились.
Используя те же выражения (с лёгкими изменениями) я стираю из useragent блоки один за другим (псевдокод
while useragent ismatch replace match with string.empty
). Получается остаток из неизвестных мне заранее кусков, часть которых является мусором, а какой то один — моделью. Простейшим решением стало разбиение остатка на отдельные токены — Split(' ', '/', ';')
и поиск токена с производителем. Ищем в какая часть содержит одну из следующих строк:"nokia", "motorola", "mot-", "moto-", "motorazr", "sonyericsson", "samsung", "sec-", "sgh-", "lg-", "lge", "lg", "sie-", "siemens","ipod", "iphone" ,"ipaq", "spv", "i-mate", "mobilephone", "htc", "vodafone", "palm", "rover", "gigabyte", "asus", "alcatel", "mitsu", "verizon", "apple".
Теперь из приведённых выше разных длинных useragent-ов n95 у меня остаются только nokian95 и nokian95_8gb соответственно. Вот ещё несколько примеров полных useragent-ов и результатов очистки:
- samsung-sgh-f480/f480jihh3 shp/vpp/r5 netfront/3.4 qtv5.3 smm-mms/1.2.0 profile/midp-2.0 configuration/cldc-1.1
=samsung-sgh-f480 - sonyericssonw705/r1ea browser/netfront/3.4 profile/midp-2.1 configuration/cldc-1.1 javaplatform/jp-8.4.2
=sonyericssonw705 - lg-kc910q browser/teleca-q7.1 mms/lg-mms-v1.0/1.2 mediaplayer/lgplayer/1.0 java/asvm/1.1 profile/midp-2.1 configuration/cldc-1.1
=lg-kc910q - mozilla/5.0 (symbianos/9.3; u; series60/3.2 nokia6210navigator/03.25; profile/midp-2.1 configuration/cldc-1.1 ) applewebkit/413 (khtml, like gecko) safari/413
=nokia6210navigator - sgh-z370/1.0 netfront/3.3 profile/midp-2.0 configuration/cldc-1.1
=sgh-z370 - vodafone/1.0/sex1i/r2aa mozilla/4.0 (compatible; msie 6.0; windows ce; iemobile 7.11) up.link/6.3.1.20.0 profile/midp-2.0 configuration/cldc-1.1
=vodafone sex1i
На посошок
Помимо браузера вас может интересовать токен WAP (кратко WAP 1.0 = WML, WAP 2.0 = XHTML). Версия mmp (multimedia mobile processor) должна указывать на поддержку аудио/видео кодеков — 1.0 только аудио mp3, а 2.0 поддерживает и видео 3gp. В большей части useragent-ов указанна операционная система и версия — актуально для iPhone:
ip(hone|od).*?os\s*(v(er(sion)?)?)?[\s.]*([0-9._]+|[a-z]+)
Приятного аппетита
Проверка на базе данных и подгонка (finetunning) привели к 99% результату. Это конечно явный overfitting, но это была одной из целей (максимальная точность в определённой аудитории и регионе). Кстати, вышеприведённые regex-ы более абстрактны и должны дать большую погрешность в силу своей универсальности.
habr.com