пятница, 29 апреля 2016 г.

HTTP. Исследуем useragent

Приветствую тебя, читатель!


Изучая access-лог Apache, я в очередной раз поразился многообразию существующих HTTP useragent. И в голове возникла мысль, интересно кто-нибудь их учитывает или может есть сервис, который позволяет получить по ним дополнительную информацию? Результат развития данной мысли ниже J




Вообще, что можно интересного узнать по юзерагенту? Для себя я отмечаю следующее:
  • кто совершил запрос, браузер или скрипт?
  • бот или не бот?
  • что за версия браузера и OC?
  • shellshock или не shellshock?)
  • и т.д.


Выкинув наиболее популярные строки useragent, в логах Apache можно увидеть следующее:





sourcetype=Apache_access 
| dedup useragent
| where not like (useragent,"Mozilla/%")
| table useragent


Немного погуглив, я попал на сайт с недвусмысленным названием - http://www.useragentstring.com/ . На данном сайте можно получить достаточно обширную информацию по различным юзерагентам. Можно воспользоваться полем на стартовой странице, что совсем не весело, или сразу перейти в раздел API и посмотреть, как можно автоматизировать запросы.

Из описания сразу стало ясно, необходимо сформировать простенький Get-запрос следующей структуры:

http://www.useragentstring.com/?uas= + “useragent string” + “формат получения резуьтата”

Например:

Результат проверки можно получить в текстовой строке или в JSON-формате, соответственно меняется конец запроса (&getText=all или &getJSON=all).
  
В ответ, если имеется информация по юзерагенту, можем получить следующие сведения:
  • agent_type (тип приложения сделавшего запрос)
  • agent_name (имя приложения)
  • agent_version (версия приложения)
  • os_type (тип OC)
  • os_name (название OC)
  • os_versionName (версия OC)
  • os_versionNumber (номер версии)
  • os_producer(производитель OC)
  • os_producerURL(ссылка на производителя)


  Автоматизируем отправку запросов

Powershell

Text output

$resp = Invoke-WebRequest -uri "http://www.useragentstring.com/?uas=Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)&getText=all" -Method GET
$resp.Content -split ";" 



JSON output

$resp = Invoke-WebRequest -uri "http://www.useragentstring.com/?uas=Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)&getJSON=all" -Method GET
$ua = $resp.Content | ConvertFrom-Json
$ua




Python

import json
import urllib2

url = "http://www.useragentstring.com/?uas=" + “Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)” + "&getJSON=all"
nurl = url.replace(" ", "%20")
req = urllib2.Request(nurl, None, parameters)
response = urllib2.urlopen(req)
response_json = json.loads(response.read())
print response_json["agent_type"]
print response_json["agent_name"]
print response_json["agent_version"]


Вот как-то так. Считаю данный сервис крайне полезным и нужным, особенно в рамках работы центров мониторинга. Ещё греет душу, что не надо получать никакие персональные коды)




Комментариев нет:

Отправить комментарий