ToolActToolAct

UAパーサー

User-Agent文字列をオンラインで解析し、ブラウザ・OS・デバイス情報を識別

User-Agent
文字数: 0

解析結果

User-Agent文字列をここに貼り付けてください...

User-Agentとは?

User-AgentはHTTPリクエストヘッダーの一つで、リクエスト元のブラウザ、オペレーティングシステム、デバイス情報を識別する文字列です。WebサーバーはUA文字列を解析して訪問者のデバイスタイプを判断し、適切なフォーマットのコンテンツを提供します。UA文字列には通常、ブラウザ名とバージョン、レンダリングエンジン、OSなどの情報が含まれます。

使い方

使い方

  1. 解析したいUser-Agent文字列を入力欄に貼り付けてください
  2. または「自分のUAを解析」をクリックして、現在のブラウザのUAを自動検出してください
  3. 解析結果が下に表示され、ブラウザ・システム・デバイスの詳細情報も表示されます
  4. 「UAをコピー」をクリックして元のUA文字列をコピー

解析の制限

  • User-Agent文字列はモダンブラウザで偽装・凍結・削減される場合があるため、解析結果はヒントとして扱ってください。
  • 機能の判定には、可能な限りブラウザ名チェックよりも機能検出を優先してください。

利用シーン

サポートチケットの不明なUser-Agentを調査サーバーログ、ブラウザのDevTools、分析ダッシュボードからコピーしたUser-Agent文字列を貼り付けると、ブラウザ、OS、デバイス、レンダリングエンジンの内訳が表示されます。顧客がレイアウト、フォント、機能の不具合を報告し、生のUAしか手元にない場合に、互換性調査を始める最も迅速な方法です。解析されたエンジンバージョンを機能検出の結果と照合して、偽装された値や凍結された値を除外してください。
自分のブラウザUAを現在の標準と照合「自分のUAを解析」アクションでは、navigator.userAgentが入力欄に自動入力され、即座に解析されます。解析結果をSec-CH-UA、主要ブラウザが公開する凍結・削減UAリスト、機能検出ロジックと比較して、分析セグメンテーションや機能ゲーティングがクライアントの実際の機能と一致していることを確認します。解析されたUAと機能検出の不一致は、UA削減ポリシーの最初の兆候であることが多いです。
ボットやクローラーを検出ライブラリによる解析に加え、bot、crawler、spider、Googlebot、Bingbot、Baiduspider、YandexBot、DuckDuckBot、facebot、ia_archiverなどの一般的なボットパターンをチェックします。botフィールドにより、自動トラフィックの識別が容易になります。キーワードベースの検出は本物のブラウザUAを模倣するスクラッパーに回避される可能性があるため、botフラグとサーバー側のレート制限を組み合わせて使用してください。
2つのUser-Agent文字列を比較デスクトップChromeのUAとモバイルSafariのUAを貼り付け、エンジン、OS、デバイスタイプのフィールドを並べて比較することで、レスポンシブ分岐が一方のクライアントでは動作してもう一方では動作しない理由を特定できます。同じアプローチで、空のバージョンセグメントを共有するChromiumベースブラウザの凍結・削減UA文字列も検出できます。並べて比較は、2台のデバイスで同じページを再実行してレイアウトのリグレッションを確認するよりも高速なことが多いです。
ChromeのUA削減、Client Hints、モバイルトークンを検出モダンなChrome 100以降では、マイナーバージョンを0.0.0に凍結し、実際のバージョンデータをSec-CH-UA-Full-Version-Listに移行する削減UA文字列を採用しています。解析されたメジャーバージョンをClient Hintsヘッダーと照合して削減を検出してください。モバイル検出はスクリーンサイズではなくトークンキーワード(iPhone、Android、Mobile)に依存し、モダンなClient HintsはUA文字列自体よりも信頼性の高いSec-CH-UA-Mobileブール値を提供します。デバイスクラスの判断を行う前に、UA解析をClient Hintsと機能検出と必ず組み合わせてください。

仕組み

User-AgentヘッダーはRFC 7231 §5.5.3で製品トークン(product/version)と括弧付きコメントの列として定義されていますが、実際にはすべてのモダンブラウザが`Mozilla/5.0`というリテラルトークンで始まる文字列を送信しています。このプレフィックスは1993年にさかのぼります。当時サイトがMozillaの有無でNCSA Mosaicを検出したため、NetscapeがMozillaを採用し、Internet Explorer 3が互換性のために追加し、それ以降のすべての派生ブラウザ(Safari、Chrome、Edge、Opera)がこの名残を維持しています。OSの位置、エンジンバージョンの場所、複数のブラウザが互換性のために互いをリストする際の優先順位を定める正式な文法は存在しないため、解析はブラウザ・エンジン・OS・デバイスの4つの軸に対して優先順位付きの正規表現リストで行われます。ua-parser-js、bowser、UAParserのLua/Pythonポートなどのオープンソースライブラリはすべて同じパターンファイルを保守しています。2022年以降、ChromeはUA削減を展開しています。ブラウザバージョンはMAJOR.0.0.0に凍結され、プラットフォーム固有のマイナートークンは削除されるため、Windows上のChrome 120.0.0.0として解析されても、実際にはChrome 120のいずれかのビルドがWindows 10または11上で動作していることを意味し、正確なビルド番号はClient Hintsの背後に隠されています。モダンな代替手段はUser-Agent Client Hints(draft-ietf-httpbis-client-hints)であり、リクエストごとにSec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platformを公開し、navigator.userAgentData.getHighEntropyValues()を通じて高エントロピー値(モデル、フルバージョン、アーキテクチャ)を提供します。UAパーサーはログ分析やボットの仕分けには引き続き有用ですが、ランタイム分岐には機能検出とClient Hintsを優先すべきです。

  • RFC 7231 §5.5.3はUser-Agentを製品トークンとコメントとして定義するが、OSやデバイスの文法は存在しない。すべてのパーサーが独自の正規表現リストを保守
  • `Mozilla/5.0`プレフィックスは1993年のMosaic時代からの互換性ハック。Safari、Chrome、Edgeはすべてブラウザ検出サイトを壊さないために維持
  • Chrome UA削減(2022〜2023年展開)はマイナーバージョンを0.0.0に凍結し、プラットフォーム文字列を固定。実際のビルド番号はSec-CH-UA-Full-Version-Listに格納
  • User-Agent Client HintsはリクエストごとにSec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platformを公開。高エントロピーフィールドにはnavigator.userAgentData.getHighEntropyValues(['model','platformVersion','architecture'])が必要
  • キーワードによるボット検出(bot、crawler、spider、Googlebot、Bingbot、Baiduspider、YandexBot)は丁寧なクローラーを捕捉できるが、本物のChrome UAをコピーする悪意あるスクラッパーには無効。レート制限と行動シグナルの組み合わせが有効
  • モバイル対タブレットはスクリーンサイズではなくトークン(Mobile、Tablet、iPhone、iPad)で判定。MobileトークンのないAndroid UAはほとんどのパーサーでタブレットとして扱われる
  • Vary: User-AgentをキーにするキャッシュやCDNは単一リソースを何千ものキャッシュエントリに断片化する可能性がある。Vary: Sec-CH-UA-Mobileを優先するか、低いヒット率を受け入れること

使用例

Chrome ブラウザ

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36

iPhone Safari

Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Version/17.0 Mobile/15E148 Safari/604.1

Google ボット

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

よくある質問

User-Agent解析では何を抽出しますか?

ブラウザ名とバージョン(例:「Chrome 124」)、OSとバージョン、デバイスタイプ(デスクトップ/モバイル/タブレット)、CPUアーキテクチャ、レンダリングエンジン(Blink/Gecko/WebKit)、UAが既知のクローラーパターンに一致する場合のボット/クローラー分類などです。

UA解析はどれくらい正確ですか?

一般的でよく知られたブラウザでは良好です。次のような場合に苦戦します。パーサライブラリが更新される前の最新バージョン、検出を回避するためにChrome/Safariを偽装するブラウザ、実在のUAをなりすますボット、UAがエンジン名ではなくホストアプリ名を表示する組み込みWebView。

なぜUser-Agent文字列の有用性が低下しているのですか?

ブラウザベンダー(Chromeが先導)はフィンガープリンティングを制限するためにUA文字列を「凍結」し、代わりにUA Client Hints(Sec-CH-UA-*ヘッダー)を推進しています。数年以内にUA文字列は安定した低エントロピー値を返すようになり、実際のデバイスデータはクライアントヒントに移行します。コードはそれに合わせて移行すべきです。

機能ゲーティングにUA検出を使うべきですか?

ほぼ常に使うべきではありません。UAは偽装可能で、機能サポートは同じブラウザ内でもバージョンによって異なります。`if ('serviceWorker' in navigator)`のようなフィーチャー検出を使ってください。UA検出は分析、サポートチケット、バグ報告の分類には適していますが、どのAPIを呼ぶか決めるのには適しません。

自分のUAを解析できますか?

はい。本ページではトップにブラウザの現在のUAが表示され、各構成要素に分解されます。サーバーに対してブラウザがどのバージョンを報告しているかを正確に知りたい場合に便利です。

ボット検出はどうですか?

パーサは正直に名乗る行儀の良いボット(Googlebot、Bingbot、Slackbot)にフラグを付けます。悪意のあるボットは通常実在のブラウザになりすますため、UAのみのボット検出は弱いです。実際の保護にはレート制限、CAPTCHA、行動シグナルと組み合わせてください。

UAはどこかにアップロードされますか?

いいえ。解析はブラウザ内でJSライブラリ(通常はua-parser-js)を使って実行されます。貼り付けられたUA文字列はサーバーに送信されません。