結論:識別子の組み合わせと判定順を確認する
BrowserはChrome、OSはmacOS、DeviceはDesktop、EngineはBlinkと読めます。ただしSafariトークンは互換性目的で含まれるため、この例をSafariとは判定しません。UAは環境の候補を絞る情報であり、端末の身元情報ではありません。
解析に使うUser-Agent例
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
| 項目 | 解析結果 | 読み方 |
|---|---|---|
| Browser | Chrome 143.0.0.0 | Chrome/143.0.0.0を使用 |
| OS | macOS 10.15.7 | MacintoshとMac OS Xを確認 |
| Device | デスクトップ | MobileやTablet識別子がない |
| Engine | Blink | Chrome製品トークンから推定 |
User-Agent文字列を分解して読む
User-Agentは左から製品名を一つ選べばよい形式ではありません。互換性維持のためMozilla、AppleWebKit、Chrome、Safariなど複数の名称が並び、後方にある製品固有トークンが判定に重要な場合があります。
| 識別子 | この例で分かること | 注意点 |
|---|---|---|
| Mozilla/5.0 | 互換性を示す先頭トークン | Firefox確定を意味しない |
| Macintosh / Mac OS X | OS候補と表記上のバージョン | 実際のOS情報が簡略化される場合がある |
| AppleWebKit/537.36 | エンジン互換トークン | この一語だけでSafariとは決めない |
| Chrome/143.0.0.0 | ブラウザ候補とUA上のバージョン | UA Reductionで詳細が固定・縮小される場合がある |
| Safari/537.36 | 互換性目的のトークン | Chrome UAにも含まれる |
Safariという文字がある、Mozillaから始まる、といった一語だけではブラウザを確定しません。固有性の高い識別子から順に確認します。
HTTPヘッダーとnavigator.userAgentの違い
サーバーログではHTTPリクエストのUser-Agentヘッダーを確認します。ブラウザ上のJavaScriptではnavigator.userAgentから現在のブラウザが公開する文字列を取得できます。通常は近い内容ですが、送信経路、ブラウザ設定、プロキシ、アプリの上書きなどを考慮します。
const ua = navigator.userAgent;
console.log(ua);
User-Agent解析ツールで確認できる範囲
| 区分 | 対応内容 |
|---|---|
| 入力 | UA文字列の貼り付け、現在のブラウザUA、代表サンプル |
| 主な結果 | ブラウザとバージョン、OS、端末種別、エンジン、CPUアーキテクチャ、表示コンテキスト |
| 補助判定 | モバイル、Botらしい識別子、Android/iOS WebView、代表的なアプリ内ブラウザ |
| Client Hints | 現在のブラウザUAを読み込んだ場合だけ、対応環境で取得して解析 |
| 確定できないこと | 実端末の所有者、正確な機種、UAを名乗るBotの真正性、すべての独自クライアント |
解析結果には情報源、確度、根拠が併記されます。判定できない値は別のOSや端末名で補完せず「不明」「判定不能」として扱います。Client Hintsは貼り付けた第三者UAには適用しません。
- UA全体を欠けずに貼り付ける
- Browser・OS・Device・Engineと根拠を別々に確認する
- 不明値と推定値をログ調査メモにそのまま残す
判定結果を実装・運用へ使うときの注意点
- Safari、Chrome、Mozillaなど一語の部分一致だけで判定しない
- OSバージョンや端末モデルが必ず取得できるとは考えない
- Web APIの対応確認にはFeature Detectionを優先する
User-AgentはHTTPヘッダーであり、curlや開発者ツール、アプリ側の設定などから変更できます。ログ分析や不具合の再現条件を絞る補助情報として使い、認証・認可・本人確認・管理画面の許可をUAだけで決めないでください。
必要以上のClient Hintsや端末情報を収集しないでください。目的を定め、保存期間とアクセス権限を含めてプライバシーへ配慮します。
この記事で確認した公式情報
ブラウザやクローラーの識別子は変更される場合があります。記事制作時点の公式資料を基準にし、古いバージョン例は最新バージョン番号として扱わず、トークン構造を確認する代表例として掲載しています。
| 資料 | 確認した内容 |
|---|---|
| MDN Navigator.userAgent | UA文字列は変更可能で、ブラウザ判定には信頼性上の限界があること |
| MDN UA sniffing | 機能対応の判断ではUser-Agent判定よりFeature Detectionを優先すること |
| Chrome for Developers | UA ReductionとUser-Agent Client Hintsの目的・取得方法・プライバシー上の注意 |
| Google Search Central / Bing Webmaster Tools | クローラー名を含むUAと、IP・逆引き等による真正性確認を区別すること |
| OpenAI公式クローラー資料 | OAI-SearchBot、GPTBot、ChatGPT-Userの用途と公開UA例 |
具体例:アクセスログのChrome系UAを読む
ログからUser-Agentヘッダー値だけをコピーし、解析ツールへ貼り付けます。結果の値だけでなく、根拠にChrome、Mac OS X、AppleWebKitが使われていることを確認します。
Windows NT 10.0のように複数OS世代で共通化された表記が出た場合は、推測でOS世代を補完せずWindows 10 / 11候補として記録します。
- ログからUA部分だけを取り出す
- ツールへ貼り付けて解析する
- 主要結果と根拠トークンを照合する
- 確定できない項目を推定として記録する
ログのIPアドレス、Cookie、認証情報をUser-Agentと一緒に貼り付けないでください。
よくある質問
- Safariと書かれていればSafariですか?
- いいえ。Chrome系UAにもSafariトークンが含まれます。Chrome、Edg、Versionなど固有性の高い識別子と順序を確認します。
- User-Agentから端末の機種名まで分かりますか?
- 文字列にモデルが含まれる場合は手掛かりになりますが、UA Reductionやブラウザ設定により省略されるため、常に取得できる情報ではありません。
ブラウザで試す
入力内容はブラウザ内で処理されます。元データを残したうえで、結果を確認してから保存・共有してください。
User-Agentを解析する