FIRST CH TOOLS / 25 USER-AGENT PARSER
User-Agent 解析&デバイス判定
アクセスログの User-Agent 文字列を貼り付けると、ブラウザ名とバージョン・レンダリングエンジン・OS・デバイス種別を表に分解します。トークン1つずつに意味の解説を付け、UAからは分からないこと(凍結された値・偽装・アプリ内ブラウザ)もその場で指摘します。貼り付けた文字列はこの端末から出ません。
上にUA文字列を貼り付けると、ここに解析結果が出ます。
| 項目 | 値 | 読み取り元 |
|---|
| トークン | 意味 |
|---|
上にUA文字列を貼り付けると、ここに結果のJSONが出ます。
UA文字列の凍結された部分(Chromeのマイナーバージョン・Androidの機種名・Windows 10/11の区別)は、User-Agent Client Hints から本当の値を取れます。以下はいまお使いのブラウザが自分自身について公開している値で、どこにも送信していません。
—
How to Use
- UAを貼るアクセスログやブラウザの開発者ツールからコピーしたUser-Agent文字列を貼り付けます。User-Agent: というヘッダー名が付いたままでも、前後の引用符が付いていても読み取ります。自分のブラウザを調べるなら「このブラウザのUA」を押してください。
- 表を読むブラウザ・OS・エンジン・デバイス種別が上のパネルに出て、詳しい内訳が表に並びます。「UA文字列の内訳」では、Mozilla/5.0 や like Gecko のような意味を失った語が、なぜ今も残っているのかを1トークンずつ確認できます。
- 落とし穴を確かめる「補足」欄に、そのUAから読み取れないことが並びます。Windows 10と11が区別できない、機種名が K に凍結されている、といった判定の限界を先に把握してから実装してください。
About This Tool
User-Agent はブラウザが自分で名乗る自己申告の文字列です。中身は1990年代の互換性競争の堆積物で、ほぼすべてのブラウザが今も Mozilla/5.0 から始まります。Chrome は Safari/537.36 を名乗り、Edge は Chrome/ と Safari/ の両方を名乗ります。したがって「Safari」や「Chrome」の部分一致で判定すると、ほぼ確実に取り違えます。判定は必ず、より限定的なトークン(Edg/ → OPR/ → Chrome/ → Safari/)から順に試す必要があります。このページの判定も同じ順序で行っています。
いま起きている最大の変化は「UA削減(User-Agent Reduction)」です。Chrome 110(2023年)以降、UA文字列の一部は固定値に凍結されました。ブラウザのマイナーバージョンは 0.0.0 になり、Androidのバージョンと機種名は Android 10; K という架空の値に置き換えられています。macOS は Safari も Chrome も 10_15_7 で凍結しているため、最新のMacでも「macOS 10.15.7」と表示されます。これらはバグではなく、指紋採取(フィンガープリンティング)を防ぐための意図的な仕様です。本当の値が必要なら User-Agent Client Hints を使ってください。
UAでは原理的に区別できない組み合わせがいくつかあります。Windows NT 10.0 は Windows 10 と Windows 11 の両方を指します(区別には Sec-CH-UA-Platform-Version が必要で、14.0.0 以上なら Windows 11)。iPad は既定で「デスクトップ用Webサイトを表示」になっているため、Mac版Safariと完全に同じUAを送ります(区別には navigator.maxTouchPoints > 1 を併用します)。iOS ではすべてのブラウザがWebKitを使う決まりなので、iOS版Chromeも中身はSafariと同じエンジンです。
アプリ内ブラウザ(in-app browser)の見分けは実務でとくに効きます。LINE・Instagram・Facebook・X から開かれたページは、Safari や Chrome ではなくアプリに埋め込まれたWebViewで動いています。ファイルのダウンロード・外部決済へのリダイレクト・一部のストレージAPIが使えないことがあり、「自分の端末では動くのに、SNS経由で来たユーザーだけ動かない」という問い合わせの多くはこれが原因です。このツールは Line/・Instagram・FBAN・Android WebView の wv などを検出して指摘します。
UAはアクセス制御の根拠にしてはいけません。誰でも1行の設定で任意の文字列を名乗れます。「Googlebot だから通す」という判定は、Googlebot を名乗るだけで突破されます。本物の検索エンジンかどうかは、アクセス元IPの逆引きと再正引き(forward-confirmed reverse DNS)で照合してください。UAは統計・不具合の切り分け・古いブラウザへの案内表示までに留めるのが安全です。
機能の有無で分岐したい場合は、UA判定ではなく機能検出(feature detection)を使ってください。if (window.IntersectionObserver) のように「その機能があるか」を直接確かめるほうが、UAの表記ゆれにも将来のブラウザにも強くなります。UA判定が本当に必要なのは、特定バージョンのバグを回避するときなど、機能検出では表現できない場合に限られます。
URLパラメータで直接呼び出せます: /user-agent/?ua=Mozilla%2F5.0…(値はURLエンコードしてください)/ /user-agent/?ua=me で、そのブラウザ自身のUAを読み込みます。
From AI Agents
この解析ロジックは、MCP(Model Context Protocol)サーバー @first-ch/tools-mcp の user_agent_parse ツールとしても提供しており、ブラウザを使わずAIエージェントから直接呼び出せます。アクセスログの調査では、こちらのほうが速く扱えます。導入方法の詳細は AIエージェントからの使い方 を参照してください。
導入
claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp
呼び出し例
# 1件のUAを解析する user_agent_parse(ua="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...") # アクセスログの行をそのまま渡す(User-Agent: が付いていてもよい) user_agent_parse(ua="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) ...") # 複数のUAをまとめて解析し、内訳を集計する user_agent_parse(uas=["Mozilla/5.0 ...", "Mozilla/5.0 ..."])
Other Tools
- 01画像→WebP一括変換WebP Converter
- 02白背景の透過White BG Remover
- 03コントラスト比チェッカーContrast Checker
- 04文字数カウントCharacter Counter
- 05llms.txt ジェネレーターllms.txt Generator
- 06JSON-LD構造化データ生成JSON-LD Generator
- 07Markdown→PDF変換MD → PDF
- 08OGPメタタグ生成ウィザードOGP Wizard
- 09faviconジェネレーターFavicon Generator
- 10TikTok投稿ツールTikTok Publisher
- 11文字コード・改行コード変換Encoding Converter
- 12画像→AVIF変換+picture生成AVIF Converter
- 13テストデータ生成Test Data Generator
- 14Marp Markdown→スライドMarp Slides
- 15テキスト・コード差分チェッカーDiff Checker
- 16Cron式ビジュアル解説&発火日時Cron Explainer
- 17Base64 & Data URI変換Base64 & Data URI
- 18URLパラメータ分解・UTMタグ編集URL Parameters
- 19HTMLエンティティ・特殊文字エスケープHTML Escape
- 20JSON ⇄ YAML 相互変換&整形JSON ⇄ YAML
- 21PX ⇄ REM / EM 単位変換&スケール表PX ⇄ REM / EM
- 22Colorコード変換&アルファ透過Color Converter
- 23MD5 / SHA-256 ハッシュ生成Hash Generator
- 24JWTデコーダー&有効期限チェックJWT Decoder
- 26UUID (v4) & ULID 一括生成UUID & ULID Generator
- 27アスペクト比計算&レスポンシブサイズAspect Ratio Calculator