8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

大量にUser-AgentからブラウザやOSを判別するスクリプト

Last updated at Posted at 2016-08-01

アクセスログなどに残されたアクセスしてきたユーザーエージェント(User-Agent)をもとにブラウザやらOSについて一括で大量に解析したい必要があったので、いろいろ探していたら woothee-java が良い感じだったのでプチツールを書いてみました。

どれほどの需要があるかわかりませんが、意外と便利だったので自分のメモ代わりに。

コード

lookupbrowser.groovy
@Grab("is.tagomor.woothee:woothee-java:1.4.0")
import is.tagomor.woothee.Classifier

println '"UA","Category","OS","Vender","Browser","Version"'
System.in.eachLine { line ->
    String userAgent = line.replaceAll('\\+', ' ');
    Map info = Classifier.parse(userAgent)

    println "\"$userAgent\",\"$info.category\",\"$info.os\",\"$info.vendor\",\"$info.name\",\"$info.version\""
}

実行例

$ cat ualist.txt | groovy lookupbrowser.groovy
"UA","Category","OS","Vender","Browser","Version"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)","pc","Windows Vista","Microsoft","Internet Explorer","7.0"
"Mozilla/5.0 (Linux; Android 5.1.1; KYV36 Build/100.0.2710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.91 Mobile Safari/537.36","smartphone","Android","Google","Chrome","52.0.2743.91"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0","pc","Mac OSX","Mozilla","Firefox","47.0"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/537.86.7","pc","Mac OSX","Apple","Safari","9.1.2"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/537.86.7","pc","Mac OSX","Apple","Safari","9.1.2"
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586","pc","Windows 10","Microsoft","Edge","13.10586"
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Vivaldi/1.2.490.43","pc","Windows 10","Vivaldi Technologies","Vivaldi","1.2.490.43"
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393","pc","Windows 10","Microsoft","Edge","14.14393"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0","pc","Windows 10","Mozilla","Firefox","47.0"
"Mozilla/5.0 (iPad; CPU OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.5","smartphone","iPad","Apple","Safari","7.0"
"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.53","smartphone","iPhone","Apple","Safari","7.0"
"Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G34 Safari/601.1","smartphone","iPhone","Apple","Safari","9.0"
"Opera/9.80 (Android 4.4.2; Linux; Opera Mobi/ADR-1411061201) Presto/2.11.355 Version/12.10","smartphone","Android","Opera","Opera","12.10"

標準入力にユーザーエージェントの文字列を丸々流し込めば、CSV形式で出力してくれます。

Excel等で読み込むと、こんな感じのテーブルとして見えます。

UA Category OS Vender Browser Version
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1) pc Windows Vista Microsoft Internet Explorer 7.0
Mozilla/5.0 (Linux; Android 5.1.1; KYV36 Build/100.0.2710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.91 Mobile Safari/537.36 smartphone Android Google Chrome 52.0.2743.91
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0 pc Mac OSX Mozilla Firefox 47.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/537.86.7 pc Mac OSX Apple Safari 9.1.2
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/537.86.7 pc Mac OSX Apple Safari 9.1.2
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 pc Windows 10 Microsoft Edge 13.10586
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Vivaldi/1.2.490.43 pc Windows 10 Vivaldi Technologies Vivaldi 1.2.490.43
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 pc Windows 10 Microsoft Edge 14.14393
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 pc Windows 10 Mozilla Firefox 47.0
Mozilla/5.0 (iPad; CPU OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.5 smartphone iPad Apple Safari 7.0
Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.53 smartphone iPhone Apple Safari 7.0
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G34 Safari/601.1 smartphone iPhone Apple Safari 9.0
Opera/9.80 (Android 4.4.2; Linux; Opera Mobi/ADR-1411061201) Presto/2.11.355 Version/12.10 smartphone Android Opera Opera 12.10

後は、集計するなり煮るなりご自由に。

※UAのサンプルは 歌うキツネ さんより。

所感

こういうプチツールを作るのに、豊富なライブラリを手軽に使えるgroovy便利過ぎ。あまり構文やら型を意識しなくてもJavaScript感覚で書けるのがいいですね。

結果として1,000パターン程度読み込ませて認識できなかったのは、ボットやアタックツール系のUAらしくないものくらいで精度の良さに驚いた。マイナーなブラウザやモバイル端末のOSまで認識してくれる woothee-java 様様でした。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?