User Agentからデバイスやブラウザを判定する方法|現代のベストプラクティス
JavaScript Web開発 フロントエンド
結論
**「UA判定は補助的に使う」**のが現代の正解。基本はレスポンシブデザイン(Media Query)や機能検知(Modernizr等)を行い、どうしても必要な場合のみUAを確認しましょう。
User Agent文字列の例
ブラウザはリクエスト時に以下のような文字列を送信します。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
ここから「Windows」「Chrome」といった情報を読み取ることができます。
📱 この場でUser Agentを確認する
なぜUA判定が難しくなっているのか?
- 文字列の複雑化 — 互換性のためにすべてのブラウザが
Mozilla/5.0と名乗るなど、判別が非常に困難です。 - 情報の削減 (UA Reduction) — プライバシー保護のため、Chromeを筆頭に詳細なバージョンやOS情報を隠す動きが進んでいます。
- 偽装の容易さ — 開発者ツールを使えば誰でもUAを書き換えられるため、厳密な認証などには使えません。
最新の手法:User-Agent Client Hints
UA文字列に代わる新しい仕組みとして navigator.userAgentData (Client Hints) が登場しています。
if (navigator.userAgentData) {
navigator.userAgentData.getHighEntropyValues(['model'])
.then(ua => console.log(ua.model));
}
これにより、必要な情報だけをセキュアに取得できるようになります。ただし、Safariなど一部のブラウザではまだサポートされていないため、ポリフィルや従来のUA判定との併用が必要です。