この文書では、Firefox 4 以降および Gecko 2.0 以降ベースのアプリケーションで用いるユーザエージェント文字列について説明します。Gecko 2.0 での変更点について詳しくは Final User Agent string for Firefox 4 (blog 記事) をご覧ください。ユーザエージェントの検出に関する文書や Hacks の投稿もご覧ください。
一般形
Firefox 自身の UA 文字列は、4つの部品に分けられます:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
- Mozilla/5.0 はブラウザが Mozilla 互換であることを示す一般的なトークンであり、今日のほとんどすべてのブラウザで共通しています。
- platform はブラウザが動作しているネイティブプラットフォーム (例: Windows、Mac、Linux、または Android)、およびモバイル端末であるかを表します。Firefox OS 端末は単に "Mobile" となり、Web がプラットフォームです。platform は "; " (セミコロン) 区切りの複数トークンで構成されることがある点に注意してください。詳細や例については後述します。
- rv:geckoversion は、Gecko のリリースバージョンを示します (例: "17.0")。最近のブラウザでは geckoversion と firefoxversion が同じです。
- Gecko/geckotrail は、ブラウザが Gecko ベースであることを示します。
- デスクトップ版では、geckotrail は固定文字列 "20100101" です。
- Firefox/firefoxversion はブラウザが Firefox であることを示すとともに、バージョン番号を提供します (例: "17.0")。
- モバイル版は Firefox 10 より、geckotrail と firefoxversion が同じです。
Gecko ベースの他製品では下記 2 つの形式のいずれかであり、各トークンの意味は以下に記載した内容を除いて同じです:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail appname/appversion
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion appname/appversion
- appname/appversion は、アプリケーションの名称とバージョンを示します。例えばこれは、"Camino/2.1.1" や "SeaMonkey/2.7.1" となります。
- Firefox/firefoxversion は、Firefox を想定する Web サイトと最大限の互換性を得るために一部の Gecko ベースのブラウザが組み入れる場合がある、省略可能な互換性トークンです。firefoxversion は一般的に、導入した Gecko のバージョンに相当する Firefox のリリースを表します。一部の Gecko ベースのブラウザはこのトークンを使用しないかもしれません。従って、スニッフィングの際は Firefox ではなく Gecko を探してください! このトークンを表示するかは、"general.useragent.compatMode.firefox" という真偽値の設定項目で制御できます。
モバイルおよびタブレットの標示
Gecko 11.0 が必要(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)UA 文字列で platform の部分は、Firefox が携帯電話サイズまたはタブレットの機器で動作しているかを示します。携帯電話フォームファクタの機器で Firefox が動作している場合は、Mobile; というトークンが UA 文字列で platform の部分に現れます。一方タブレット機器で Firefox が動作している場合は、Tablet; というトークンが UA 文字列で platform の部分に現れます。例えば:
Mozilla/5.0 (Android; Mobile; rv:30.0) Gecko/30.0 Firefox/30.0 Mozilla/5.0 (Android; Tablet; rv:30.0) Gecko/30.0 Firefox/30.0
ある機器のフォームファクタ向けのコンテンツを決めるために好ましい方法は、CSS メディアクエリの使用です。しかし機器のフォームファクタの対象コンテンツを決めるために UA スニッフィングを用いている場合は、携帯電話フォームファクタでは Mobi (Opera Mobile を含めるためであり、これは "Mobi" を使用しています) を検索するようにして、"Android" と機器のフォームファクタの間に関連があるとは考えないようにしてください。この方法では、Firefox を他の携帯電話やタブレットのオペレーティングシステム向けに公開した場合や Android がラップトップ PC に使用された場合でもコードが動作します。
また、タッチ対応デバイスを検出するには "Mobi" や "Tablet" を検索するのではなく、タッチ機能を検出してください。タブレットではないタッチ対応デバイスもあり得ます。
Windows
Windows のユーザーエージェントには以下のバリエーションがあり、その中で x.y は Windows NT のバージョンを表します (例えば、Windows NT 6.1)。
Windows のバージョン | Gecko のユーザーエージェント文字列 |
---|---|
x86 環境の Windows NT | Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
x64 環境の Windows NT での Win64 | Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Windows NT での WOW64 | Mozilla/5.0 (Windows NT x.y; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Macintosh
ここで x.y は Mac OS X のバージョンを表します (例えば、Mac OS X 10.6)。
Mac OS X のバージョン | Gecko のユーザーエージェント文字列 |
---|---|
Intel x86 または x86_64 環境の Mac OS X | Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
PowerPC 環境の Mac OS X | Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux
Linux には多様なプラットフォームが存在します。いくつかの一般的な例は以下のとおりです。
Linux のバージョン | Gecko のユーザーエージェント文字列 |
---|---|
i686 環境の Linux デスクトップ | Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 |
x86_64 環境の Linux デスクトップ | Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
x86_64 環境の i686 Linux デスクトップ | Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Nokia N900 Linux モバイルの Fennec ブラウザ | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0 |
Firefox Web ランタイム
デスクトップ版 Firefox のユーザエージェントと同じです。
Android (バージョン 40 以下)
フォームファクタ | Gecko のユーザーエージェント文字列 |
---|---|
携帯電話 | Mozilla/5.0 (Android; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 |
タブレット | Mozilla/5.0 (Android; Tablet; rv:26.0) Gecko/26.0 Firefox/26.0 |
Android (バージョン 41 以降)
バージョン 41 以降の Android 版 Firefox では platform トークンに Android バージョンが含まれます。相互運用性向上のため、Android 4 以前のバージョンでブラウザが動作している場合は 4.4 と出力します。Android バージョン 4 以降では実際のバージョン番号が出力されます。なお、Gecko エンジンはすべての Android バージョンに対して同じ機能を提供しています。
フォームファクタ | Gecko のユーザーエージェント文字列 |
---|---|
携帯電話 | Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0 |
タブレット | Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0 |
iOS
iOS 版の Firefox ではデフォルトの Mobile Safari の UA 文字列に FxiOS/<version> トークンを追加したものになります。これは Chrome for iOS の UA 定義と同じ形式です。
フォームファクタ | iOS 版 Firefox のユーザエージェント文字列 |
---|---|
iPhone | Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 |
iPad | Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 |
Firefox OS
フォームファクタ | Gecko のユーザーエージェント文字列 |
---|---|
携帯電話 | Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 |
タブレット | Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0 |
デバイス特有 | Mozilla/5.0 (Mobile; nnnn; rv:26.0) Gecko/26.0 Firefox/26.0 |
デバイス特有のユーザエージェント文字列
Mozilla は強く反対していますが、残念ながら一部の機器メーカーはデバイスの ID を表すトークンを、ユーザエージェント文字列に含めています。これに当てはまる場合は Firefox OS のユーザエージェント文字列が、前出の表で示したようにデバイス特有の文字列になります。nnnn; が、デバイスを示すメーカーのコードです (ガイドラインもご覧ください)。私たちは "NexusOne;"、"ZTEOpen;"、"Open C;" などを見つけました (空白を入れることも非推奨です)。ユーザエージェント検出のロジックを支援するためにこの情報を提供しますが、Mozilla はユーザエージェント文字列でデバイス ID を検出することを推奨しません。
ユーザエージェント文字列にデバイス ID を持つ場合を含むすべてのモバイルデバイスを検出するであろう、JavaScript の正規表現は以下のとおりです:
/mobi/i
i
は大文字・小文字を区別しないことを示し、mobi
がすべてのモバイルブラウザにマッチします。
国内モデルのユーザエージェント文字列
ユーザエージェント文字列で検出してデバイス固有の処理を行うことは推奨できませんが、参考までに端末特有の情報を追加している国内向けの Firefox OS (もしくは Boot to Gecko OS) 搭載モデルでのユーザエージェント文字列 (初回出荷時点) はこちらの通りです:
デバイス名 | Gecko のユーザーエージェント文字列 |
---|---|
Fx0 (LGL25) | Mozilla/5.0 (Mobile; LGL25; rv:32.0) Gecko/32.0 Firefox/32.0 |
CX700/CX800/CX800N | Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0 |
TZ-HDT620 | Mozilla/5.0 (rv:34.0) Gecko/20100101 Firefox/34.0 PASTB/620 |
TZ-HDT621 | Mozilla/5.0 (rv:34.0) Gecko/20100101 Firefox/34.0 PASTB/621 |
Firefox OS のバージョン番号
Firefox OS のバージョン番号はユーザエージェント文字列に含まれていませんが、ユーザエージェント文字列にある Gecko のバージョンから Firefox OS のバージョンを推測できます。Firefox OS 1.2 より、それぞれのマイナーバージョンが 2 つの Gecko メジャーバージョンに対応します。
Firefox OS のバージョン番号 | Gecko のバージョン番号 |
---|---|
1.0.1 | 18.0 |
1.1 | 18.1 |
1.2 | 26.0 |
1.3 | 28.0 |
1.4 | 30.0 |
2.0 | 32.0 |
2.1 | 34.0 |
Firefox OS のバージョン番号は 4 つの数字があります: X.X.X.Y. 始めの 2 つの数字は Mozilla の製品チームが管理しており、新機能を伴うバージョンを表します (例: v1.1、1.2 など)。3 番目の番号はセキュリティ更新向けの定期的なバージョンの識別 (最大 6 週間ごと) として増えていきます。4 番目の番号は OEM が管理します。
その他の Gecko ベースのブラウザ
以下は、さまざまなプラットフォームの Gecko ベースのブラウザにおける UA 文字列の一例です。これらの多くはまだ Gecko 2.0 ベースで公開されていないことに注意してください!
ブラウザ | Gecko のユーザーエージェント文字列 |
---|---|
Maemo 版 Firefox (Nokia N900) | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1 |
Mac 版 Camino | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1 |
Windows 版 SeaMonkey | Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
Mac 版 SeaMonkey | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
Linux 版 SeaMonkey | Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
アプリケーション、ベンダー、拡張向けの実装上の注意
Firefox 4 および Gecko 2.0 以前では、拡張機能が設定項目 general.useragent.extra.identifier
を通してユーザエージェント文字列を追加することができました (ユーザエージェント文字列の旧版リファレンス をご覧ください。しかし、これは バグ 581008 により不可能になりました。
以前は特定のプラグイン・アドオン・拡張機能が、自身がインストールされていることを知らせるためにユーザエージェント文字列を追加していました。現在、やむを得ず必要である場合に推奨される方法 (すべての要求が遅くなることに留意してください) は、カスタム HTTP ヘッダを設定すること です。
関連情報
- Firefox OS User Agent String (bug 777710 に言及したブログ投稿)
- Final User Agent string for Firefox 4 (ブログ投稿)
- クロスブラウザで UA 文字列のスニッフィングをサポートする ための推奨事項
- window.navigator.userAgent
Comments to mozilla.dev.platform