Microsoft Edge の User Agent - 2015/08/13 版
Microsoft Edge のユーザーエージェントはいろいろな情報を出しすぎて面白いことになってますね。
Windows 10 Insider Preview のころから言われていますし、もうそろそろ対応する必要が出てきていると思われます。
下記の通り、"AppleWebKit" "Chrome" "Safari" 等の文字が入っているのがわかると思われます。
そのためか、既存の JavaScript のライブラリで不具合を起こすものがあったり、
ページ表示に User Agent の判別、分岐がうまくできてないものもあります。
64bit と 32bit 版で若干表示がことなる
64bit
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.10240
32bit
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Edge、IE 11 の詳しい情報は MSDN に
主なブラウザの User Agent も調べてみた
2015月8月13日 時点で最新のものを調べてみました。
のっぴきならない理由で iOS だけはバージョンが古いです。
Windows 10
Internet Explorer 11 | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko |
---|---|
Microsoft Edge | 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.10240 |
Chrome | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36 |
Firefox | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0 |
Mac
Safari | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12 |
---|---|
Chrome | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36 |
Firefox | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0 |
Mobile
Android Chrome (Nexus5) |
Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36 |
---|---|
iOS 8.1.3 (iPad mini) |
Mozilla/5.0 (iPad; CPU OS 8_1_3 Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B466 Safari/600.1.4 |
Microsoft Edge (Lumia 1520) |
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 1520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10512 |
特徴を調べてみる
文字の区切りで分けてみました。
Windows 10 | Mac | Mobile | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
ブラウザ | IE11 | Edge | Chrome | Firefox | Safari | Chrome | Firefox | Android Chrome | iOS (8.1.3) | Edge |
Mozilla Ver. | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 | Mozilla/5.0 |
OS1 | Windows NT 10.0; | Windows NT 10.0; | Windows NT 10.0; | Windows NT 10.0; | Macintosh; | Macintosh; | Macintosh; | Linux; | iPad; | Windows Phone 10.0; |
OS2 | Win64; | Win64; | Win64; | WOW64; | Intel Mac OS X 10_10_4 | Intel Mac OS X 10_10_4 | Intel Mac OS X 10.10; | Android 5.1.1; | CPU OS 8_1_3 Mac OS X | Android 4.2.1; |
CPU | x64 | x64 | ||||||||
レンダリングエンジン1 | Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; | |||||||||
バージョン1 | rv:11.0 | rv:40.0 | rv:40.0 | |||||||
デバイス名 | Nexus 5 Build/LMY48I | NOKIA; Lumia 1520 | ||||||||
レンダリングエンジン2 | AppleWebKit/537.36 | AppleWebKit/537.36 | Gecko/20100101 | AppleWebKit/600.7.12 | AppleWebKit/537.36 | Gecko/20100101 | AppleWebKit/537.36 | AppleWebKit/600.1.4 | AppleWebKit/537.36 | |
レンダリングエンジン3 | like Gecko | (KHTML, like Gecko) | (KHTML, like Gecko) | (KHTML, like Gecko) | (KHTML, like Gecko) | (KHTML, like Gecko) | (KHTML, like Gecko) | (KHTML, like Gecko) | ||
バージョン2 | Version/8.0.7 | Version/8.0 | ||||||||
Chrome | Chrome/42.0.2311.135 | Chrome/44.0.2403.130 | Chrome/44.0.2403.130 | Chrome/44.0.2403.133 | Chrome/42.0.2311.135 | |||||
Safari | Safari/537.36 | Safari/537.36 | Safari/600.7.12 | Safari/537.36 | Mobile Safari/537.36 | Mobile/12B466 Safari/600.1.4 | Mobile Safari/537.36 | |||
Edge | Edge/12.10240 | Edge/12.10512 | ||||||||
Firefox | Firefox/40.0 | Firefox/40.0 |
表をまとめると
- 全てで、「Mozilla/5.0」 と 「like Gecko」 の文字がある
- Windows の環境では「Windows」、Mac の環境では「Macintosh」の文字がある。
- IE 11 と Firefox を除くと「AppleWebKit」「(KHTML, like Gecko)」 の文字がある
- IE 11 は Trident と .NET、CLR の文字がある
- IE 11 は rv のあとにブラウザバージョンの文字がある
- Firefox は rv のあとにもブラウザバージョンの文字がある
- Firefox のみ Firefox の文字がある
- Firefox は OS の部分が変更されるだけで非常にシンプルな UA を返す
- Safari はブラウザバージョンの文字がある
- iOS の Safari では「Chrome」の文字があるが、Mac OSX の方には存在しない。
- Windows 10 Mobile の Edge でも「Android」や「Mobile Safari」の文字がある
- モバイルの Android や Edge では「Mobile Safari」という文字があるが、iOSは「Mobile/*** Safari/***」 という表記になっている
- モバイルの Android や Edge などでデバイス名が表示される
User Agent からブラウザを判別する
これらを考えると、以下の文字が見つかれば各条件に振り分けられそうです。
Edge に「Safari」と「Chrome」の文字が入った為、Safari や Chrome だけの判別をしたい場合は要注意です。
Windows/Mac
OS 名 「Windows」か「Macintosh」で調べる
モバイル
「Mobile」という文字がみつかればモバイル端末と判別できそう。
IE 11
「Trident」か「.NET」か「CLR」のいずれかの文字がみつかれば判別できそう。
Edge
「Edge」という文字がみつかれば Edge と判別できそう。
Windows 10 Mobie も「Edge」がつくため、Windows 10 Mobie の Edge が知りたい場合は「Mobile」という文字も調べる。
OS 名でも大丈夫で「Windows Phone」と「Android」の文字を持つ
Firefox
「Firefox」という文字がみつかれば Firefox と判別できそう。
上の表にはありませんが、Android の場合は「Mobile」という文字も調べる。
Safari
「Safari」という文字をみつけて「Edge」という文字がなければ Safari と判別できそう。
「Version」 という文字も Safari にしかないのでこれでもできそう。
iOS の場合は上ものに加え「Mobie」を調べればよいが、旧来通り OS 名のみ調べた方が楽。
Chrome
「Chrome」という文字をみつけて「Edge」「Safari」という文字がなければ Chrome と判別できそう。
Android の Chrome を知りたい場合は「Mobile」という文字も調べる。
Windows 10 Mobie の Edge も「Android」の文字を持つため OS 名では調べられない。
User Agent はユーザー側から変更できますし、個人的には User Agent を見て表示できるコンテンツを振り分けること自体良くないと感じています。
全てのブラウザで同じコンテンツを表示できることが理想なんですが現実は厳しいです。
まとめ
Chrome、Safari と Windows 10 Mobile で Android の 文字列を入れたのは、ちょっとやりすぎかなと思っています。