11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

User Agent Client Hintsに関する調査

Last updated at Posted at 2020-02-28

1. 概要

2020年1月14日にGoogleが「Chrome」でUser Agent文字列の利用を段階的に縮小していく計画を発表しました。
User Agentが固定化されるため、従来行ってきたUser Agentを用いた、ブラウザ種別やバージョンの判定ができなくなります。

代わりに、今後は「User-Agent Client Hints」という新たな仕組みに置き換えられることが検討されています。
*調査中のため、不正確な情報が記載されている恐れがあります。

2. User Agent文字列固定化のスケジュール

以下のスケジュールで段階的にUser Agent文字列固定化が進む予定でしたが、最新の状況では、COVID-19の影響及びUA-CH機能に評価期間を設ける目的で、UA凍結計画は2021年以降に延期されています。

Chromeバージョン(リリース時期) 対応内容
Google Chrome 81(2020年3月中旬) navigator.userAgent によるUAの取得が非推奨となる(navigator.userAgentを実行するとコンソールに警告が出るようになる。)
Google Chrome 83(2020年6月上旬) ブラウザバージョンやOSバージョンなど、UserAgent文字列の中で後方互換性を損わずに固定できる部分を凍結したり、統一される。
Google Chrome 85(2020年9月中旬) UserAgent文字列を統一。デスクトップブラウザ用のUserAgentかモバイル用UserAgent文字列のいずれかしか取得できなくなる。

3. 対応策

User Agent文字列でサイトの表示を変更していたりする場合、今後は「User Agent Client Hints」を利用する必要があります。
*なお、過去のブラウザのUser Agentが変更されないので、

「User Agent Client Hints」は以下の2つの利用方法があります。

1.ブラウザ上で取得する。
2.サーバーのhttpリクエストヘッダで取得する。

3.1. ブラウザでの「User-Agent Client Hints」の利用方法

navigator.getUserAgent関数により、ブラザやOSの情報を取得することが可能となります。
*2020/2/17時点のChrome 80では、chrome://flagsで「Experimental Web Platform features」のオプションを有効にする必要があります。

navigator.getUserAgent関数はPromiseの関数なのでawaitで利用します。

Mac版Chrome 80で取得すると以下の結果となります。「architecture」や「model」の項目に値が入っていませんが、今後、これら項目にも値が設定されるのかもしれません。

const user_agent = await navigator.getUserAgent()
{
architecture: ""
brand: "Google Chrome"
model: ""
platform: "Mac OS X"
version: "80.0.3987.106"
}
  • Brand
    • The user agent’s brand.
  • Platform
    • The user agent’s platform brand and version.
  • Architecture
    • The user agent’s platform architecture.
  • Model
    • The user agent’s model.
  • mobile
    • The user agent’s mobileness.

3.2. サーバでの「User-Agent Client Hints」の利用方法

今後、執筆予定。
Chrome84(beta)では取得可能なUA-CH項目が下記通りです。

項目名 説明
sec-ch-ua ブラウザのブランド及びメジャーバージョン ... "Google Chrome";v="84"
sec-ch-ua-arch CPUアーキテクチャ ARM64
sec-ch-ua-platform OS名 Mac OS X
sec-ch-ua-model デバイスモデル Pixel 2 XL
sec-ch-ua-mobile モバイルか否か ?0
sec-ch-ua-full-version UAビルドバージョン 84.0.4147.30
sec-ch-ua-platform-version OSバージョン 10_15_4

4. 関連記事

5. 参考文献

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?