Firefox 4 のユーザーエージェントストリング

2010年9月13日(月) 22時49分 by level
B ?
Tags: Firefox4

すでに、Firefox Hacks 翻訳日記マイコミジャーナルで紹介済みですが、Firefox 4 のユーザーエージェントストリング(UA ストリング)の話です。Mozilla Hacks の抄訳となります。

32ビット Windows 版 Firefox 3.6.9 の UA ストリングは以下のようになっています。

Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9

Firefox 4 の UA ストリングは以下のようになります。

Firefox 4 のユーザーエージェントストリング
  1. ロケール("en-US;" や "ja;")が無くなります。ブラウザのロケールはユーザが使用する言語とは必ずしも一致しないという理由からです。この情報は HTTP Accept ヘッダーから取得するのが推奨されます。
  2. "U;" が無くなります。これはブラウザが強力な暗号を使用していることを示すために使用されていましたが、今では弱い暗号強度("I;" や "N;")のブラウザは存在しません。
  3. "Windows;" プレフィクスが Windows 固有文字列から無くなります。なお、Platform token 内のセミコロンの数はプラットフォームによって異なることに注意が必要です。
  4. Nokia モバイル Maemo(と Meego)プラットフォームで動作しているブラウザは "(Maemo; Linux armv7l; …)"、Android は "(Android; Linux armv7l; …)" となります。Linux プラットフォームによってはここに様々な文字列が追加されます。
  5. x86_64 プラットフォーム上で動作している Linux i686 ビルドでは、プラットフォーム固有部分は "(X11; Linux i686 (x86_64); rv:…)" から "(X11; Linux i686 on x86_64; rv:…)" へと変更になります(ネストしたカッコはダサいですから)。
  6. (驚いたことに、)"Gecko/yyyymmdd" トークンの Gecko のビルド日付は Firefox リリース版では 20100101 に固定となります。これは以下を意味します:
    • Gecko ベースのブラウザを識別するには "Gecko/" を探します。これで UA ストリングの中で "like Gecko" を騙るブラウザと区別できます。
    • Gecko のバージョンを識別する前に、まず機能判別で解決できないかを検討してください。ほんとうにバージョンが必要ならば "rv:x.y.z" 文字列を用いましょう。

    もし "Gecko/yyyymmdd" に依存した処理を行っているのなら直ちに止めるべきです。Gecko の次期メジャーリリースでは、これは "Gecko/x.y.z" のように Gecko のバージョンを含んだものに置き換えられる予定です。

    Firefox のナイトリービルドではしばらく固定されないビルド日付が使用されますが、将来のナイトリービルドからは削除されます。(そうなると、ビルドバージョンを特定するのが難しくなりますが、何か他の識別子が導入されるのでしょうか? 例えば "Gecko/x.y.z.abcd" とか)

  7. Firefox 以外の Gecko ベースブラウザでは、識別方法が変更になります。例えば、Fennec では以下のようになります。
    • Firefox token: Gecko ベースブラウザが使用する互換トークンですが必須ではありません。なので "Firefox" ではなく "Gecko" を探すべきです。
    • Application: そのアプリケーション名とバージョンです("Fennec/2.0.1" や "Camino/2.1.1")。なお、Firefox のテストビルド(Minefield のナイトリーやプレリリースビルド)は Minefield ではなく Firefox を名乗るようになっています。
Fennec のユーザーエージェントストリング

MDC のエントリには他のプラットフォームの例が載っています。

最終更新: 2010年9月14日(火) 22時23分

コメント (2)

1 9/14 10:15 dynamis
(c1) [2010/09/14 10:15:43] by dynamis

「Gecko のバージョンを識別するには、まず機能から推測できないかを検討する。」
ですと、機能からバージョン番号を識別するように見えますが、使いたい機能がサポートされているか確認して使う話ですので
-> 「Gecko のバージョンを識別しようとする前に、まずは機能判別で解決しないかよく考えてください。」
といった感じで如何でしょうか?

modest の Mozilla Hacks Blog 翻訳リンク集にリンク追加しました:
https://dev.mozilla.jp/hacksmozillaorg/

2 9/14 21:43 level
(c2) [2010/09/14 21:43:43] by level

ご指摘ありがとうございます。
訳を見直しました。

トラックバック

トラックバックは検索対象外です。

この記事にリンクしているページ < >

  1. データがありません。