Edited at

UserAgentからOS/ブラウザなどの調べかたのまとめ

WEBサイトにアクセスしてくる利用者の情報をUserAgentから調べることが出来るが、どんな情報がわかるか調べてみた。より詳しい情報は参考に使ったサイトを参照で。


UserAgent


自分のブラウザのUserAgentを調べるのに使ったサイト


色々なUserAgent情報が載っているサイト


UserAgentの記述ルール

UserAgentの書き方は厳格に定義されているようではないようだ。RFC 1945とか、他のアプリケーションのやり方にならっているだけのような感じがする。

RFC 1945では、

User-Agent = "User-Agent" ":" 1*( product | comment ) 

と指定されており、

product tokens は、section-3.7では 

product = token ["/" product-version]

となっていて、

CERN-LineMode/2.15 の用に product名の後にスラッシュをいれてバージョンを記載するようになっている。 

あとはuser-agent strings | archive.mozilla.orgと、User-Agent - HTTP | MDNに記載がある。

User-Agent: <product> / <product-version> <comment>

WEBブラウザの一般的な書式:
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>

大体のブラウザが上記のルールにしたがっている感じのようだ。

アプリケーション固有の値は次々に出てくると思うので、UserAgentから情報収集、判定するプログラムを作る場合は、アプリケーションごとに判定が必要そう。


Mozilla 4 or Mozilla 5

多くのブラウザのUserAgentの先頭には下記の通りMoziila/4 or 5のバージョンが記載されている。

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; NP06; rv:11.0) like Gecko

これは、元々 Mozilla 互換のブラウザという意味のようだ。

WikipediaのMozillaによると

最初、ネットスケープブラウザが、Mozilla/バージョン名とつけて、

いくつかのサイトが「Mozilla」を検出したブラウザのみ動作する仕組みにしたおかげで、

競合ブラウザ(IE等)も「Mozilla」とつけるように偽装し始めた経緯が今まで残っているせいらしい。

ユーザー エージェント文字列を理解するによると「歴史的な経緯から、Internet Explorer は自身を Mozilla 4.0 ブラウザとして識別します。」とのこと。IE8以前がMozilla/4、IE 9以降がMozilla/5となっている。

Mozilla 4.0 vs. 5.0でv4がNetscape Communicator、v5が GeckoベースのFirefox, Netscape 6/7という情報もあった。


Gecko

Firefox(Mozilla)関連のブラウザには「Gecko」の文字列が入っているが、IEなど他のブラウザにも「like Gecko」といった文字列が入っている。

Microsoft Edgeのブラウザなんて、「Gecko」も「Chrome」も「Safari」も入っている。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.<OS build number>


ブラウザ戦争とUserAgent

どうして、UserAgentにMozillaなどの文字がつくようになったかの歴史が書かれている記事があった。

世界中を巻き込んだブラウザ戦争と「ユーザーエージェント文字列」をめぐる複雑怪奇な変遷とは?



あとその元記事も

History of the browser user-agent string



上記のサイトに書かれていることを順番にいうと、下記のリストの通り。

History of the user-agent stringも一部参考にした。

できごと
user-agent string

NCSA Mosaic」のブラウザが出来る。
NCSA_Mosaic/2.0 (Windows 3.1)

「Mosaic Killer」の略称を持つ「Mozilla」というブラウザが登場する。

「Mosaic」から異議申し立てがあったため、「Mozilla」を「Netscape」に改める。
Mozilla/1.0 (Win3.1) 

「Netscape」はフレームに対応していた為、フレーム対応のサイトが「Netscape」のみに制限するようになる。

「Internet Explorer」が「Netscape」に偽装するようになる。
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

「Netscape」は「Mozilla」に生まれ変わり、「Gecko」のレンダリングエンジンを採用する。
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826

「Mozilla」は「Firefox」に形を変える。


「Firefox」の人気が出て、2008年時点のヨーロッパだとシェア20%を超える

Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

「Firefox」以外の「Gecko」を採用するブラウザも「Mozilla」を付けるようになる。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1


Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0

ブラウザ「Konqueror(KHTML)」が「Mozilla Firefox(Gecko)」を偽装し始める。

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

Appleが「Konqueror(KHTML)」をベースに「WebKit」のレンダリングエンジンを作成する。


Appleのブラウザ「Safari」は「WebKit」を採用するが、「KHTML」の記載は残る。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

Operaはユーザーが任意でなりすませるようにした

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51


Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51, or Opera/9.51 (Windows NT 5.1; U; en)

「Internet Explorer」が「FireFox」を偽装するようになる。
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)

「Google Chrome」が「Safari」の「WebKit」を偽装する。
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

とややこしいことになっている。

それに今は、「Microsoft Edge」が「Chrome」を偽装するが追加になってくる。

ブラウザの偽装だけでもややこしいのに、「WindowsPhone」のようにOSまで偽装して「Windows」も「Android」も両方入ってしまって、

「Gecko」、「Chrome」、「Safari」、「Edge」も入っているケースが下記の通りになる。

Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; Lumia 640 LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Mobile Safari/537.36 Edge/14.14390


OS


PC


Windows

WindowsのバージョンはWindows NT 6.1の様なWindows NT系のバージョンで表示される。

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

Serverかどうかの区別はできなそうだ。

NT Ver.
プロダクト名

NT 5.1
Windows XP

NT 5.2
Windows XP (64ビット)/Windows Server 2003

NT 6.0
Windows Vista/Windows Server 2008

NT 6.1
Windows 7/Windows Server 2008 R2

NT 6.2
Windows 8/Windows Server 2012

NT 6.3
Windows 8.1/Windows Server 2012 R2

NT 10.0
Windows 10/Windows Server 2016、2019


macOS

「Mac OS X」+OSのバージョンで判定できる。プロセッサのIntel と PowerPC(PPC)の区別も出来るが、今現在PowerPCはほとんど残っていないと思うのであまり意味なし。

OSのバージョンの表示がFirefoxの場合「10.11」と、その他の場合「10_11」と表記が異なるので注意。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 

バージョン
コードネーム

10.5
Leopard

10.6
Snow Leopard

10.7
Lion

10.8
Mountain Lion

10.9
Mavericks

10.10
Yosemite

10.11
El Capitan

10.12
Sierra

10.13
High Sierra

10.14
Mojave

10.15
Catalina

各バージョンについての詳細はWikipediaで


Linux

64bitの場合「x86_64」が32bitの場合「i686」、x86_64 環境の i686 Linux デスクトップの場合は、「i686 on x86_64」が入る。

Androidの場合も「Linux」文字列が入るので、「x86_64」、「i686」の有無で判定するか「Android」を除くの条件がいる?

「X11」はGUI環境を提供している「X Window System」のことだと思われる。

「armv7l」のようについている場合は、ARM系CPUを使用していると思われる。Chromecastなど。

Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0

Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.0 Safari/537.36 CrKey/1.27.96538

Chrome OSの場合、CrOSが含まれる。

Mozilla/5.0 (X11; CrOS x86_64 7520.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36

OSのディストリビューションの名前が入る場合が多い。「Mint」、「Ubuntu」など

# Ubuntu

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0

# Mint Linux
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Linux Mint/7 (Gloria) Firefox/3.5.1

# Fedora
Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10

# Gentoo
Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.11) Gecko/2009070611 Gentoo Firefox/3.0.11

# Arch Linux
Mozilla/5.0 (X11; Arch Linux; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0


その他


BSD系OS

# FreeBSD

Mozilla/5.0 (X11; FreeBSD amd64; rv:41.0) Gecko/20100101 Firefox/41.0

# OpenBSD
Mozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.9.0.1) Gecko/2008081402 Firefox/3.0.1

# NetBSD
Mozilla/5.0 (X11; NetBSD amd64; rv:16.0) Gecko/20121102 Firefox/16.0


ゲーム機 (Wii/PS4/PSVita/Switch/3DS/XBox)

# Wii

Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28
(KHTML, like Gecko) NX/*** NintendoBrowser/***.US

# PlayStation 4
Mozilla/5.0 (PlayStation 4 1.52) AppleWebKit/536.26 (KHTML, like Gecko)

# PS Vita
Mozilla/5.0 (PlayStation Vita 1.50) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2

# Nintendo Switch
Mozilla/5.0 (Nintendo Switch; ShareApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.9 NintendoBrowser/5.1.0.13341

# Comparable to the Wii U browser
Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.11 NintendoBrowser/4.3.0.11224.US

# 3DS
Mozilla/5.0 (New Nintendo 3DS like iPhone) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.0.5.20 Mobile NintendoBrowser/1.8.10156.US

# XBox One
Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10553


Oculus Go

Mozilla/5.0 (Linux; Android 7.1.1; Pacific Build/N9F27L)

AppleWebKit/537.36 (KHTML, like Gecko)
OculusBrowser/4.0.0.17
SamsungBrowser/4.0
Chrome/61.0.3163.109
Mobile VR
Safari/537.36


Amazon Fire TV


# Android WebView (android.webkit.WebView)
Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; AFTB Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

# Amazon WebView (com.amazon.android.webkit.AmazonWebView)
Mozilla/5.0 (Linux; Android 4.2.2; AFTB Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.173 Mobile Safari/537.22

# Amazon ウェブアプリプラットフォーム
Mozilla/5.0 (Linux; Android 4.2.2; AFTB Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.173 Mobile Safari/537.22 cordova-amazon-fireos/3.4.0 AmazonWebAppPlatform/3.4.0;2.0

開発者向けのページには「アプリやウェブページは、ユーザーエージェント文字列を読み取ることでFire TVを検出し、それぞれに応じたユーザーエクスペリエンスを提供できます。」と書かれているので、Fire TVを検出してもらうためにユーザーエージェント文字列の指定がある事がわかる。


スマホ


iPhone

iOSのバージョンによる識別になるので、iPhone 5か6かどうかの区別は画面サイズも合わせて比較が必要かも。

「iPhone」の文字列が入っていて、OSのバージョンが「OS 7_0_4」のように含まれる。

iPhone6以降は画面サイズによる違いもなくなるのでiPhone6とiPhoneXを区別することは出来ない。

Mozilla /5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B5110e Safari/601.1 

iOS版Chromeを区別したい場合は、「CriOS」があるかどうかで判定する。

Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3

PC版サイトを見るときに使用するUserAgentもある。

# Safari デスクトップ用サイトを表示

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/10.0 Safari/602.1.31


Android

Android のユーザーエージェントの検出について

によると「Android」と「Mobile」があると、Android版スマホと判定できるようだ。

タブレットなどは「Android」しかない。

Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Androidのバージョン番号も出力される。例: Android 2.2.1

バージョン
コードネーム

1.5
Cupcake

1.6
Donut

2.0/2.1
Eclair

2.2
Froyo

2.3/2.4
Gingerbread

3.0/3.1/3.2
Honeycomb

4.0
Ice Cream Sandwich

4.1/4.2/4.3
Jelly Bean

4.4
KitKat

5.0
Lollipop

6.0
Marshmallow

7.0-7.1
Nougat

8.0-8.1
Oreo

9.0
Pie

詳細はWikipediaで

機種によってデバイス名が付与される。例:Nexus One

Android ChromeのPC版サイトを見るを指定した場合のUserAgentもある

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


Windows Phone

Windows Phoneの場合は、「Windows Phone」が付与される。「Android」も入っているのがややこしい。

Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.<OS build number>

Windows Phone 8.1だとIE 11、Windows Phone 10の場合はEdgeが入るようだ

Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 1320) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537


Firefox OS

Firefox OSの場合は、「Mobile」、「Gecko」、「Firefox」が出力されるが、Androidと区別するには「Android」が含まれないという条件を入れる必要があるか。

Mozilla/5.0 (Mobile; LGL25; rv:32.0) Gecko/32.0 Firefox/32.0

Firefox OSはテレビでも使われているがそのときはMobileは付かない。Vieraなどが付く。

Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0


BlackBerry

BlackBerryの場合はBB10Mobileが入っているかで区別できる。

Mozilla/5.0 (BB10; <Device Model>) AppleWebKit/<WebKit Version> (KHTML, like Gecko) Version/<BB Version #> Mobile Safari/<WebKit Version>


タブレット


iPad

iPadの文字以外はiPhoneとほぼ同じ。iPad、iPad miniとの区別はUserAgentだけでは判断できないと思われる、

Mozilla/5.0 (iPad; CPU OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1


Androidタブレット

AndroidがあってMobileが入っていない。

Galaxy TAB P1000などのようにタブレットと言われているがMobileが入るケースもある。

Mozilla/5.0 (Linux; Android 5.0.2; SM-T530 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Safari/537.36


Kindle Fire OS

Kindle Fire OSはAndroidベースのタブレットなので、AndroidがUserAgentに付いている。

Kindleかどうかは、 SilkKindleがの文字列があるかで判定できるか。Mobileの文字列が付いているが、タブレットなので、タブレットかどうかの区別をしたい場合は、SilkKindleの判定を優先するか。

Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.146.3-Gen4_12000410) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true


Windowsタブレット

WindowsタブレットはノートPCとUserAgentからは区別が付きにくい。

タッチ対応の場合はTouchが入っている。またARM系CPUを採用していたらタブレットと判断することが出来ないかという話もあったが、機能面でもWindowsタブレットとタッチ対応ノートPCは似通っているので区別する必要性自体が無いかもしれない。Tablet PC x.0が入るケースがあるが、これはノートPCでも入る場合があるようだ。

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; GWX:QUALIFIED; rv:11.0) like Gecko


フィーチャーフォン

携帯電話、ガラパゴスケータイ、ガラケーと呼ばれていたもの。


docomo

docomoは以下の通り「DoCoMo」が先頭に入っている。

DoCoMo/2.0 F2051(c100;TB;serXXXXXXXXXXXXXXX;iccxxxxxxxxxxxxxxxxxxxx)


au

AUは以下の通り先頭に「KDDI」が入っている。

KDDI-[機種名] UP.Browser/[ブラウザバージョン] (GUI) [サーバ名]/[サーババージョン]


SoftBank

SoftBankは以下の通り先頭に「Vodafone」か「SoftBank」が入っている。

Vodafone/1.0/V904SH/SHJ001/SN  Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1

SoftBank/1.0/910T/TJ001/SN Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1


ブラウザ


Internet Explorer

IE 10以前の場合は、「MSIE」の右側のバージョン表示で判定する。

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)   

IE 11から「MSIE」が入らなくなる。「Trident/7.0」で判定するか。

Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko

互換表示の場合、MSIE x.0 と Trident/x.0 が同時に存在する。

ノートPCの場合、Tablet PC x.0 が存在する。

タッチ対応の場合、Touch が存在する。

参考

IE の UserAgent まとめ (2)

「WOW64」が入っている場合は、64 ビット プロセッサ上で 32 ビット バージョンの Internet Explorer が動いているとかわかる。

参考

ユーザー エージェント文字列を理解する

「.NET Framework」 がインストールされている場合、 ".NET CLR" およびバージョン番号が UserAgent 文字列に追加される。.NET CLR 3.0.とある場合は、.NET Framework 3.0が入っている。

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04425.00)

参考

.NET Framework 3.0 がインストールされているかどうかを確認する


Microsoft Edge

Edgeが入っているので判定。「Chrome」、「Safari」、「Gecko」も入っているので注意。

UserAgentに出力されるEdgeのバージョンはEdge本体ではなく、EdgeHTMLのバージョン。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.<OS build number>


ChromiumベースのMicrosoft Edge(MSEdge)

「Chromium」ベースで再構築となるMicrosoft Edge(MSEdge)は従来のUserAgentにあった「Edge」では無く、「Edg」となる。

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

ChromiumベースのEdgeのCanary ChannelのmacOS版も出ている。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3794.0 Safari/537.36 Edg/76.0.161.0 


Chrome

Microsoft EdgeやOperaにも「Chrome」が入っているので「Chrome」があるだけで判定出来ない。

Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36

iOS版ChromeのエンジンははBlinkではなく、SafariのWebkitと同じなので実質Safari。

ChromeもChromiumもChromeCanaryもUserAgentは同じ、バージョンが違うだけ。

ChromeのバージョンはMAJOR.MINOR.BUILD.PATCH形式。2番目のMINORバージョンは常に0で初期のバージョン以外は使われていないぽい。


Firefox

「rv:geckoversion」はGecko のリリースバージョン。

「Firefox/firefoxversion」の形式でバージョンが入っている。

Geckoの右側の「20100101」は固定文字列

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


Safari

Microsoft EdgeやChromeにも「Safari」が入っているので「Safari」があるだけで判定出来ない。

Version/Safariバージョン

Safari/WebKitバージョン

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Version/8.0.8 Safari/600.8.9


Opera

バージョン15以降からChroniumベースのブラウザに変わっている。他にもOperaMini、OperaTouchなどがある。

Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25

# Chrominumになる前の古い形式
Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.18


Vivaldi

Operaの元CEOなどにより開発されたChrominumベースのブラウザ。日本人の利用が多い。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.88 Safari/537.36 Vivaldi/2.4.1488.36


SRware Iron

ドイツのSRware社のブラウザ。ChromiumベースなのでほぼChromeだが、利用者情報の送信機能がないなど個人情報周りで気をつかっている。

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3250.0 Iron Safari/537.36


Sleipnir

日本のフェンリル社のブラウザ。

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Sleipnir/6.1.0


Brave

プライバシーを重視して、個人情報を収集するような広告をブロックし、その代わりプライバシーに配慮した別の広告を入れたり、閲覧すると仮想通貨BATが貰える仕組みがある特徴的なブラウザ。

以前は“Brave/Version”も出力されていたようだが、現在はChromeと同じUserAgentが出力される。

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


Samsung Internet

Samsung が Galaxy向けに搭載しているブラウザ。Gear VRなどでも使われている。Chromiumベース。日本でも上位6位のシェアを持っている。

Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G925F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36


UCBrowser

中国、東南アジア、インドで主に使われているブラウザ。人口の多い地域で使われているからか、FireFoxについで全世界で上位4位のシェアを持っている。

Mozilla/5.0 (Linux; U; Android 5.1; en-US; Aqua Joy Build/LMY47D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/11.2.5.932 U3/0.8.0 Mobile Safari/534.30


Androidの標準ブラウザ

かつてAndroid端末にプレインストールされていたブラウザ。Chromeとは違う。

Android 4.4以下、およびAndroid 5.0以降の一部の端末に搭載されている。

現在、開発は終了している。

Chromeの文字が入るケースと


Mozilla/5.0 (Linux; Android 4.2.2; ja-jp; SC-04E Build/JDQ39) AppleWebkit/535.19 (KHTML,like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

Chromeの文字が入らないケース


Mozilla 5.0 (Linux; U; Android 4.0.4; ja-jp; SC-06D Build/IMM76D) AppleWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.030

があるらしい。Chrome と区別する必要がある場合はちょっとややこしい。


Tor Browser

通信経路を秘匿化する「Tor」が組み込まれたTor BrowserはFireFoxベースに作られているので、UserAgentもFireFoxと同じに見える。

Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0

「Firefox 60 ESR」ベースに作られているからなのか、現在はバージョンは60のままのようだ。以前は別のUserAgentが使われていたがどの様な頻度で変わっているかは不明。

個人特定が出来ないようにUserAgentは一本化されているようなので、プラグインとか使ってUserAgentをカスタマイズしないほうが良いみたい。


アプリ等のブラウザ

YahooのAndroid用ブラウザ。iOS版は提供終了。


Mozilla/5.0 (Linux; U; Android 4.2.2; ja-jp; SH-07E Build/S5310) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 YJApp-ANDROID jp.co.yahoo.android.yjtop/2.3.16

http://himenaotaro.hatenablog.com/entry/20151011/1444564265

https://promo-ybrowser.yahoo.co.jp/

モバイル関連のブラウザは「Mobile」がついているだろうと思っていると、

Opera Miniのように、Mobileがついていないものがあるので、


User-Agent: Opera/9.80 (Android; Opera Mini/8.0.1807/36.1609; U; en) Presto/2.12.423 Version/12.16

モバイルか否かの判定はUserAgentじゃなくて解像度で判断してしまったほうが良いのかもしれない。

https://dev.opera.com/articles/opera-mini-request-headers/


Facebookアプリ

facebookアプリからアクセスする場合は、“FBAN”とか”FBIOS”の文字列が入ってくる。

Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 [FBAN/FBIOS;FBAV/59.0.0.51.142;FBBV/33266808;FBRV/0;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/9.3.2;FBSS/3;FBCR/Telkomsel;FBID/phone;FBLC/en_US;FBOP/5]


iOSアプリ(CFNetwork)

iOSアプリ経由でWEBページにアクセスすると、標準ブラウザとは別のUserAgentが記録される


CFNetwork/609 Darwin/13.0.0


Androidアプリ(HttpURLConnection)

Androidのアプリ経由でアクセスする場合のUserAgentもある。

Dalvik/1.4.0 (Linux; U; Android 2.3.2; Nexus S Build/GRH78C)


海外のブラウザ

特定の国で使われているブラウザなどもある。


ベトナム

ベトナムでは「Cốc Cốc」というブラウザのシェアがNo2となっている。

Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/49.0 Chrome/43.0.2357.126_coc_coc Safari/537.36


インドネシア

2016年時点ではインドネシアでは「UC Browser」がよく使われていたが、2019年時点では減少している。

Mozilla/5.0 (Linux; U; Android 5.1; en-US; Aqua Joy Build/LMY47D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/11.2.5.932 U3/0.8.0 Mobile Safari/534.30


中国

中国は「UC Browser」は多いが、インドの方が多かったりする。

他に「QQ Browser」というブラウザも多く使われている。

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Zune 4.7; QQBrowser/7.7.24562.400; rv:11.0) like Gecko

他にも「Sogou Explorer」というChromiumベースのブラウザも使われている。

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0ozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)


インド

インドではシェアを減らしつつあるが、「UC Browser」がよく使われている。

またKai OSというフィーチャーフォン向けOSが2〜5%の範囲でシェアを保っている。

Mozilla/5.0 (Mobile; LYF/F90M/LYF-F90M-000-02-21-131117; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0

KaiOSはFirefoxOSの後継のB2G OSからフォークされたOS。


ロシア

ロシアではYandex Browserが多く使われている。

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 YaBrowser/18.9.1.954 Yowser/2.5 Safari/537.36

Yandex BrowserはロシアのYandex社のChromiumベースのブラウザ。


韓国

韓国はSamsung製のスマホやSmartTVのおかげか「Samsung Internet」が第3位になっている。

Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G960F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.2 Chrome/67.0.3396.87 Mobile Safari/537.36

また、第5位に「Whale Browser」が上がってきている。「Whale」はNaver製のブラウザ。whalestoreという独自のストアを持っている。

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Whale/0.7.33.5 Safari/537.36


シンガポール

シンガポールだとPuffin Browserのシェアが約3%ある。

Puffin Browserは帯域幅の使用を減らし高速に実行させるために一部の処理をクラウドサーバー上で行なっている。そのサーバーの一つがシンガポールにあるらしいがそれと関係ある?

Mozilla/5.0 (Linux; Android 8.0.0; moto g(6) play Build/OPP27.91-87; pt-br) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36 Puffin/7.5.3.20547AP


アフリカ

アフリカはOpera(Mini)が多い。特にチャドの42%、ナイジェリアの36%など。

アフリカで利用が多いのはOpera Miniにデータ圧縮機能がある為だとか。

南アフリカだと1GBあたりへ平均$7.19と高額なモバイルデータ料金を払っている為、データ通信量の圧縮機能が費用の節約の為の解決策になっているらしい。

低価格なAndroidスマホにOperaが初期インストールされているからという説もある。

Mozilla/5.0 (Linux; U; Android 5.1.1; en-US; ONE A2003 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 OPR/15.0.2125.101257 Mobile Safari/537.36


その他のブラウザ

他にも色々ブラウザがたくさんあるので、全部書くのは難しい。

Wikipediaにあるものだと200種類以上ある。(各言語版によっても異なる)

2017年のシェアが高い順で見ていくと

Browser Market Share Worldwide

UC BrowserのシェアがChrome、Safariの次に高いのが目を引く。

Browser
Market Share Perc. (Sept 2016 - Sept 2017)

Chrome
52.73

Safari
14.2

UC Browser
8.27

Firefox
6.54

IE
4.28

Opera
4.26

Samsung Internet
3.28

Android
2.81

Edge
1.72

IEMobile
0.41

Yandex Browser
0.27

BlackBerry
0.16

Coc Coc
0.16

QQ Browser
0.09


アプリケーション


Vendor fragment

メーカー製のPCの場合、「MASP」や「MDDR」の様な文字列が付与される場合がある。これはメーカーによって値が異なる。

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MASP)

Fragment
Description & opinion

MDDR / MDDRJS / MDDC / MDDCJS / MDDS / MDDSJS
Dell

MAAR / MAARJS
Acer

MASP / MASPJS / MASA / MASAJS
Sony

MAAU / NP06 / NP07 / NP08 / NP09 / ASJB / ASU2 / ASU2JS
Asus

MASM / MASMJS
Samsung

MALC / MALCJS / MALN / MALNJS / LCJB / LEN2
Lenovo

量が多いので詳細は参考サイトで


WebView

スマホアプリの WebViewを使っている場合のUserAgent。


ChromeベースのWebViewの場合

Lollipop以上の場合は「vw」があるかとか。

Old WebView

Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Build/KLP) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30

KitCat〜Lollipopの場合

Mozilla/5.0 (Linux; Android 4.4; Nexus 5 Build/_BuildID_) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36

Lollipop以上の場合

Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36

Chrome User Agent Strings


クローラーなど


Google

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

ニュース用、画像用、モバイル用など他にも色々ある。Google クローラ


Yahoo

Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

用途によって色々ある。


Bing

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

他にも何種類かある。


Baidu

Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,likeGecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)


DuckDuckGo

DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)  


脆弱性スキャナなど怪しいアクセス

何も公開していないはずのサイトでも海外から謎のアクセスが来ていたりするが、脆弱性スキャナーや攻撃ツールだったりすることが多いようだ。UserAgentからどんなツールかわかる場合もある。

# ZmEu 脆弱性スキャナの一種 phpMyAdminなどへの攻撃を目的としてスキャン

ZmEu
# Jorgee PHPの脆弱性をスキャン
Mozilla/5.0 Jorgee
# NYU (New York University Information Technology)
NYU
# muhstik-scan
Mozilla/5.0 muhstik-scan, muhstik/1.0
# Indy-Library
Mozilla/3.0 (compatible; Indy Library)
# zgrab
Mozilla/5.0 zgrab/0.x
# masscan
masscan/1.0 (https://github.com/robertdavidgraham/masscan)
# sysscan
sysscan/1.0 (https://github.com/robertdavidgraham/sysscan)

通常のブラウザに偽装している場合も多いので、UserAgentだけで判断すると言うのは難しいが、やたらOSのバージョンやブラウザのバージョンが最新のものと比べて古かったりして怪しいアクセスもある。

また、Python-urllib/3.6 の様に使っているプログラム自体のUserAgentを返す場合もある。


その他クローラー

AppleもSiriとSpotlightなどに活用するためにクローラーが存在するようだ。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1)

企業や、特定の団体によるクローラーもある。

ICC-Crawler(NICT-情報通信研究機構のクローラー)

ICC-Crawler/2.0 (Mozilla-compatible; ; http://ucri.nict.go.jp/en/icccrawler.html) 

死活監視サービスPingdom

HTTP/1.1 Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)

企業がやっているサービスの場合は大体、URLが付いている感じ

その他、参考

検索エンジンのロボットとユーザーエージェント、クローラー・Bot - Google、Yahoo、Bing、Baidu


プログラム言語

プログラムでHTTP通信をする時、プログラム言語で使用しているモジュールがデフォルトで出力するUserAgentがある場合もある。

プログラム言語によってUserAgentが異なると言うより、ライブラリ毎に異なってくる。

動作確認にはPlay With Dockerが使い捨てで環境構築できるので便利だった。

実際に試したサンプルは下記に乗せていく予定。


C/C++

# QWebKitの場合

Mozilla/5.0 (Symbian; U; N8-00; fi-FI) AppleWebKit/534.3 (KHTML, like Gecko) Qt/4.7.4 Mobile Safari/534.3

プログラム言語固有のUserAgentというのがあるわけではないので、ライブラリ次第。

アプリケーションフレームワークのQtの場合、QWebKitはSymbian端末としてUserAgentが出力されるとのこと。


Perl

libwww-perl/5.805

perl+apache - LWPを責めないでの記載を参考。


Perl6

# LWP::Simpleの場合

LWP::Simple/0.100 Perl6/rakudo


Ruby

# net/httpを使った場合

Ruby

# httpclientを使った場合
HTTPClient/1.0 (2.8.3, ruby 2.3.7 (2018-03-28))

# faradayを使った場合
Faraday v0.15.4

net/httpで接続した場合、「Ruby」とだけ出力された。


Crystal

# http/clientを使った場合

Crystal


Python

# urllibを使った場合

Python-urllib/3.6

# requestsを使った場合
python-requests/2.18.4


PHP

file_get_contents、curlでアクセスした場合、特に指定しなければUserAgentは出力されない。


C#

C#でアクセスした場合、特に指定しなければUserAgentは出力されない。

HTTPクライアントを全て確認はしていない。

VB.net、F#も同じと思われる。

.NetじゃなくてMonoベースのC#でも、同じく特に指定しなければUserAgentは出力されなかった。


VBA/VBScript

# MSXML2.XMLHTTPの場合

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

# WinHttp.WinHttpRequest.5.1の場合
Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)

VBA/VBScriptも使用するオブジェクトによって異なってくる。


Javascript(NodeJS)

Javascript(NodeJS)でアクセスした場合、特に指定しなければUserAgentは出力されない。


Javascript(Ajax)

Javascript(Ajax)でアクセスした場合は、実行したブラウザのUserAgentが出力される。

XHRでもFetchAPIの場合もどちらでも同じ。


Java

Java/1.8.0_66   

# HttpClientの場合
Java-http-client/11.0.3


Kotlin

# khttpを使った場合

khttp/1.0.0-SNAPSHOT

AndroidじゃないKotlinで試した。


Groovy

# groovysh new URL("http://xxxx").getText() の場合

Java/1.8.0_181

Java上で動いているだけあって、Javaの場合と同じか。


Processing

# loadStrings()を使った場合

Java/1.8.0_202

ProcessingはJavaとしてコンパイルされて実行するらしい。


Scala

Dispatch/0.11.1-SNAPSHOT

Scala HTTP 通信を参考にDispatchを使った場合


CFML(ColdFusion/Lucee/Railo/OpenBD)

# ColdFusionの場合

ColdFusion

# Luceeの場合
Lucee (CFML Engine)

# Railoの場合
Railo (CFML Engine)

# OpenBDの場合
BlueDragon

CFML系言語で一まとめ。

cfdocsのオンライン実行環境にて確認

cfdocsにはOpenBDの環境がない為、実際には確認できず。

OpenBDのマニュアルには初期値が「BlueDragon」と記載あり。


Go

# net/httpの場合

Go-http-client/1.1


Rust

# reqwestの場合

reqwest/0.9.17

# curl-rustの場合は無し

curl-rustを使った場合、特に指定しなければUserAgentは出力されない。

Mac に homebrew で Rust 開発環境を作るを参考に環境構築。


Elixir

特に指定しなければUserAgentは出力されないようだ。

Play With Docker上で、対話環境IExを作って、httpcクライアントを実行してみた。HTTPoisonは試してない。


Erlang

特に指定しなければUserAgentは出力されない。

ElixirはErlang上で動いているし、同じhttpcクライアントを使っているので同じ結果になるか。


Clojure

# dakrone/clj-http の場合

Apache-HttpClient/4.5.5 (Java/11.0.1)

homebrewでLeiningenをインストールして、dakrone/clj-httpを試した。Java上で動いているからJavaのバージョンが出ているのか。他のライブラリだと違う?


Common Lisp

# drakma:http-requestの場合

Drakma/1.3.11 (SBCL 1.2.6; Linux; 4.4.0-96-generic; http://weitz.de/drakma/)

Play With Docker上で、

CommonLispの実行環境をDockerで構築してみたを参考に環境を作って、Common Lisp入門してwebスクレイピングやろうとしてるを試してみた。


Racket

Racket/7.4 (net/http-client)


OCaml

# Cohttpを使った場合

ocaml-cohttp/1.2.0


D言語

# std.net.curlを使った場合

Phobos-std.net.curl/2.080 (libcurl/7.47.0)

Play With Docker上で、

DockerとD言語のイメージで環境を作って

std.net.curlのhttp getの例を試してみた。


Lua

# LuaSocket

LuaSocket 3.0-rc1


Julia

HTTP packageを使った場合、UserAgentは返さなかった。


Nim

Nim httpclient/0.19.4

標準ライブラリの httpclientを使った。


PowerShell


# Windows版の場合
Mozilla/5.0 (Windows NT; Windows NT 6.1; ja-JP) WindowsPowerShell/4.0

# Mac版の場合
Mozilla/5.0 (Windows NT; Darwin 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64; ja-JP) WindowsPowerShell/6.0.0

# Linux版の場合
Mozilla/5.0+(Linux;+Linux+3.10.0-693.5.2.el7.x86_64+#1+SMP+Fri+Oct+20+20:32:50+UTC+2017;+ja-JP)+PowerShell/6.1.0

Mac版でも、Windows NTの文字が入ってくる。


Google Apps Script

Mozilla/5.0 (compatible; GoogleDocs; script; +http://docs.google.com)

Mozilla/5.0 (compatible; Google-Apps-Script)

Mozilla/5.0 (compatible; GoogleApps script;+http://script.google.com/bot.html)

Google Apps Scriptの場合は、ローカルからアクセスするわけでは無いのでbotに近い扱いになるのか。


Elm

elm/0.19.0

動作未検証で詳しくは不明。Elm Reactor上で下記リンクのUserAgentが発生するようだが。


Dart

Dart/2.0 (dart:io)

動作未検証で詳しくは不明。dart:io websocket使用時に下記リンクのUserAgentが発生するようだが。


Haskell

The Haskell Stack

動作未検証で詳しくは不明。Stackを使用している場合、The Haskell Stackが追加されるようになったようだが、元々はUserAgentは付与されていなかったらしい?


R言語

# httrを使った場合

curl/7.19.6 Rcurl/1.95.4.1 httr/0.3


各種ツール


wget

Wget/1.16.3 (darwin15.0.0)


curl

curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5


ShortLinkTranslate

トレンドマイクロ社のウイルスバスターに搭載されているTrendツールバーの「Webページ内のリンクの安全性を表示」機能が有効だと記録されるらしい。

ShortLinkTranslate

ShortLinkTranslateというユーザエージェントのアクセスログ


ahrefs

SEOツール

Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)

SEOの被リンク分析・競合調査ツール | Ahrefs(エイチレフス)


semrush

SEOツール

Mozilla/5.0 (compatible; SemrushBot/1.2~bl; +http://www.semrush.com/bot.html) 

キーワード調査や競合調査を強力サポート!!】Semrushを活用しよう!


その他


自分のUserAgentを調べるAPI

ブラウザではなくて、プログラムやツール等でUserAgentをチェックしたい時は、

Javascriptや「あなたの情報(確認くん)」で確認というわけにはいかないので、UserAgentだけ返すAPIが欲しい。

調べたらifconfig.ioというのがあったので、

curl ifconfig.io/ua 

wget http://ifconfig.io/ua -O -

とかで試せた。

curl ifconfig.io/all.json

と打つとIPアドレスなど他の情報も取得できる。

同様のサービスは複数ある。

# inet-ip.info

curl inet-ip.info/json

# ifconfig.me
curl ifconfig.me/json

# httpbin.org
curl httpbin.org/user-agent


Mobile、Tablet、PC判定

UserAgentからMobile、Tablet、PCかどうか判定したいという要望があると思うが、方法として思いつくのは下記のようなパターン。


if (navigator.userAgent.match(/(iPhone|iPod|Android.*Mobile)/i)) {
// iPhone、iPod、Android(Mobileを含む)
console.log("Mobile");
} else if (navigator.userAgent.match(/(iPad|(?!(Android.*Mobile)+)Android)/i)) {
// iPad、Android(Mobileを含まない)
console.log("Tablet");
} else {
// それ以外はPC
console.log("PC");
}

ただ、この場合、Kindle FireにはMobileの文字列が入っているので、Mobileとして判定されてしまう。KindleをTabletと判定したい場合、「Silk」、または「Kindle」の文字列が入ってくるのでこれを条件に入れる必要がある。

WindowsPhoneはAndroidとMobileの文字列があるのでMobileで判定される。

Androidタブレットの中にはGalaxy TAB P1000などのようにMobileが入るものも一部存在する。

スマホでもKaiOSやFireFoxOSの場合はAndroidの文字列は含まれないのでFireFoxとMobileが含まれる条件を入れる必要が出てくる。

WindowsタブレットとTouch機能付きのノートPCと区別は多分出来ない。


User-Agent parser

User-Agentから情報を取り出すものをUser-Agent parserと言うらしい。

いい感じにUserAgentからOSやブラウザなどの端末情報を抽出したい場合、結構やっている人たちがいるので、GoogleとかGithubとかでUser Agent parserで検索すると色々見つかる。


UserAgentは最大何桁ぐらいまであるか。

UserAgentをデーターベースに格納する場合は最大桁数が気になるところだが、

特に決まりはなさそう。それらしい情報は見つからなかった。

多くのUserAgentは大体100桁前後が多いようだ。

ASP.NETは下記の参考URLによるとUserAgentの文字数制限が512文字となっているようなので、512桁と考えるのが良いのか。

Amazon MWSは500文字以上は拒否すると記載がある。

Internet Explorer 7のUserAgentのカスタマイズについては最大200文字を推奨となっている。

ただものすごく長いものもあるかもしれない。

心配ならば、WebサーバーのHTTP headerの制限値までというという考えも。

Apache 8K、Nginx 4K-8K、IIS 8K-16K、Tomcat 8K-48K

下記の参考URLによると8000文字以上のケースはあったらしい。

あまり長いのはマトモな目的では無いと思うので無視した方が良いかもしれない。

  • OS
  • ブラウザ
  • アプリケーション
  • その他