さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

GoogleChromeのUser-Agent凍結ではなくUser-Agent Reduction

Google ChromeによるUser-Agent凍結という話を覚えてらっしゃる方はいらっしゃると思います。

実は、いまではUser-Agent凍結ではなくUser-Agent Reduction。つまりもとの凍結とは違い、削減として計画されています。

参考 : www.chromium.org

自分の備忘録もあわせて今後どう計画されているかを解説していきます。
なお、執筆当時の私の解釈なので本当にあってるかは元の記事などを読んでみてください。私は英語が得意なわけではないので解釈が正しいとは限りません。

そもそもなんでUser-Agentを凍結するという話がでた?

以下の記事が参考になると思います。

groups.google.com

こちらの記事から、主にプライバシーの問題であると読み解けます。
現在のUser-Agentは、フィンガープリンティングという広告などで利用されるいくつかの情報を組み合わせて個人を特定する手法に利用されているといいます。そういったことを問題視しているのでしょう。
昨今のCookieに対する制限もそうですが、個人を特定する要素をできるだけ減らす方向にGoogleが舵を切っている印象です。

じゃあ、User-Agentを削除すればいいじゃないか?と考える方もいらっしゃると思います。
最初はその予定だったとは思いますが、他のブラウザとの兼ね合いもあったのだろうなぁと僕は想像しています。
User-Agentを表示のための判断基準につかっているサイトがChromeだけで動かないんだったらだいたいの人はおそらく別のブラウザを使うでしょうし、いきなり削除というのはやはり急すぎたのだろうなぁと思います。

GoogleChromeのUser-Agent削減計画

GoogleChromeでは、User-Agent削減において、以下のような計画を立てています。
参考 : https://www.chromium.org/updates/ua-reduction

削減の準備

  • フェーズ1 : Chrome92の開発ツールで各種User-Agentを取得する機能に対して警告をする。
  • フェーズ2 : Chrome95からChrome100まで、少なくとも6ヶ月のオリジントライアル(実際にブラウザを使ったトライアル)を実施する。執筆当時はここ。

削減のロールアウト

  • フェーズ3 : Chrome100 : 逆オリジントライアル。つまりオリジントライアルの内容を徐々に反映していく判断をします。少なくとも6ヶ月の期間をかけます。
  • フェーズ4 ~ フェーズ6 : 後述します。ここで実際にUser-Agentの削減がロールアウトされます。
  • フェーズ7 Chrome113 : 完全終了です。

上記の通り、長めに準備期間をとり、その後実際に削減するといった方法をとっていきます。
実際にいまオリジントライアルに入っているのですが、割とそのことを知っている方は少ないように見受けられます。
このままではドタバタが発生しそうな気も。。。

現在のUser-Agent

では、ここで現在のUser-Agentにはどのような要素が入っているのが確認してみましょう。
参考 : https://www.chromium.org/updates/ua-reduction

デスクトップ

Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.3

モバイル

Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Mobile Safari/537.36

色分けしたそれぞれの情報は以下の情報を含んでいます。

  • 青 : 製品名
  • 緑 : OS情報
  • 赤 : レンダリングエンジンなどの情報
  • 黄色 : ブラウザの製品名など

どうやら青はもうちゃんと運用されている文字列ではないようで、魔法の言葉のようにとりあえずつけるものといった運用になっている模様です。
Googleがプライバシーの問題と言っているのは、ここの各情報が細かすぎるといったもののようです。OSのマイナーバージョンなんてUser-Agentとして知らせる必要はあるのか?みたいな話ですね。

どのように削減されるのか

さて、本題です。
前述のフェーズ4 ~ 7でどのように削減されるかを示します。
この削減の内容は、Googleがどこまで細かいと個人を特定し得ると考えてるのかを知ることのできる珍しい機会とも考えられます。
参考 : https://www.chromium.org/updates/ua-reduction

フェーズ4

Chrome101での変更とされています。

前述の黄色部分。つまりブラウザ情報が

Chrome/93.0.1234.56 Mobile Safari/537.36

から

Chrome/93.0.0.0 Mobile Safari/537.36

となります。デスクトップもモバイルも共通ですね。つまり、マイナーバージョンが消えます。

フェーズ5

Chrome107での変更とされています。

前述の緑部分、つまりOS情報がかわります。前述の例だとデスクトップになります。

(Windows NT 6.3; Win64; x64)

から

(Windows NT 10.0; Win64; x64)

となります。いままでOS + cpu情報になっていたものが、統一プラットフォームの情報に置き換わります。
例えば、Macだとすでに統一プラットフォームの情報らしく、詳しく知りたい方は元記事を読むとわかりそうです。

フェーズ6

Chrome110での変更とされています。ここでは、AndroidのOS情報がバージョンに関わらず固定となります。

(Linux; Android 9; SM-A205U)

から

(Linux; Android 10; K)

となります。どんなAndroidの情報もこれに固定化されます。

終結

デスクトップ

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36

モバイル

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36

最後に

あれ?思ったより影響が少ないぞ?と思った方もいらっしゃると思います。
実際フィンガープリンティングなどを用いて個人を特定するなどない限り今回の影響はかなり限定的ですね。
モバイルかデスクトップかの判断にUser-Agentを用いてる程度なら影響は軽微ですむのではないでしょうか。

とはいえ、他のブラウザなども足並みを揃えてきた結果削減ということもおおいに考えられるので、webエンジニアの皆様は他のブラウザの状況も含めてUser-Agentの情報は追っていったほうが吉でしょう。