User-Agent文字列の正体を読む

すべてのブラウザが送っていますが、今は意図的に無味になっています。トークンを解析して自称のブラウザ・エンジン・OS・デバイス種別を読みます。

このガイドで使う道具

やりたいこと

UA文字列はサーバーログ・バグ報告・分析に出てきます。「Mozilla/5.0 (iPhone; CPU iPhone OS 17_0…) AppleWebKit/605…」。目で読むと誤読しやすいため、パーサーが自称のブラウザ・バージョン・エンジン・OS・デバイス種別を取り出します。

貼って解析

自分のブラウザのUAは入力済みで、何を送っているかの確認に便利です。他の文字列を貼れば解析できます。iOSのChromeはAppleの制約でSafari系と申告します。パーサーは文字列の主張を示し、それが分かる全てです。

具体例

「…Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 … Chrome/124.0.0.0 Safari/537.36」はChrome 124・実際はBlinkエンジン・macOS・デスクトップと解析されます。末尾の「Safari」は現代のブラウザ全てが言う互換性の嘘です。

対応範囲

UA削減(Chromeはマイルストーンで凍結)とClient Hintsで、文字列は実態より少ない情報しか持ちません。偽装UAは主張どおりに解析します。真の判定にはUA解析より機能検出を使ってください。