ユーザーエージェント(UserAgent)は権力によって悪用されている

#ユーザーエージェント(UserAgent)とは
>UserAgentとは主にWebサイトにアクセスするためのプログラムのことをいう。
Webサイトにアクセスする際、HTTPヘッダーに送信するソフトウェアやOS等の情報をUserAgentとして送信する。
Webサーバー側はUserAgentを見て適切なコンテンツ（モバイル向けなど）を返すことが出来るようになる。

[UserAgentからOS/ブラウザなどの調べかたのまとめ](https://qiita.com/nightyknite/items/b2590a69f2e0135756dc) より引用

下. ユーザーエージェントを取得している様子 (Windows10, Google Chrome)

|![UserAgent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305299/2c9efc1b-b98f-3a9e-2e6a-85ec09858309.png)
|:-:|

```js:取得したユーザーエージェント

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

```

適切な使い方として、サーバーがユーザーエージェントによりアクセス元のOSやブラウザを判別し、それに合わせたページデータを送り返すということができるわけです。

今回はこの、ユーザーエージェントに関わる話です。

##追記(2020/02/06)
ユーザーエージェントを使用した処理は、今後非推奨になるようです。
参考 : [Intent to Deprecate and Freeze: The User-Agent string](https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/-2JIRNMWJ7s/yHe4tQNLCgAJ)

#ユーザーエージェントの悪用
ユーザーエージェントの仕組み自体、適切に活用すれば、非常に便利なものです。しかし、ユーザーエージェントがネガティブな目的で広く使用されている現状があります。ここでは、2019年末に行われた、とあるウェブブラウザのアップデートを取り上げ、この問題を紐解きます。

今回取り上げるブラウザは、日本人の利用者も多く、へービーユーザーに人気のあるウェブブラウザ、**Vivaldi**です。

|![Vivaldiのアイコン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305299/3365cea8-062c-d108-cf6e-11016e442c79.png)
|:-:|

#概要と経緯
VivaldiはChromiumを用いて開発されており、(ブラウザの)中身はGoogle ChromeやOperaと同じものです。しかし、GoogleやMicrosoft、Yahooなど、一部サイトにおいて、レイアウトが崩れたり、動画が再生されなかったりと、いくつかの不具合が見受けられていました。
例えば、以下はVivaldi2.2(2018年末のバージョン)で、Yahooのページを訪れた際の表示です。本来再生されるべき動画が、エラーにより表示されていません。

|![動画が再生されていない様子](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305299/bd9bd3e1-5fea-fcd1-9ae9-29b73d9a3601.png)
|:-:|

Vivaldiユーザーである僕自身も、この現象は**Vivaldiのバグだと思っていました。**しかし、この現象は、**サイト側の問題でした。**さらに言うと、これらはサイト側の**意図した挙動**だったのです。

では、Vivaldiの公式ブログに公開された記事を要約しつつ、この問題を掘り下げます。
(以下、2019年12月10日公開 [User Agent Changes](https://vivaldi.com/ja/blog/user-agent-changes/) より一部引用)

##[User Agent Changes](https://vivaldi.com/ja/blog/user-agent-changes/)
>(要約)
ユーザーエージェントは一見、あらゆる点において素晴らしいように聞こえます。しかし、ユーザーエージェントは時間が経つにつれ、一部のWeb開発者によって悪用され、時には、権力を持ったより大きなテクノロジー企業によって悪用されるのです。

>(Vivaldi開発者が)受け取ったバグ報告のうちかなりのものは、ユーザーエージェントのみに基づいて、Vivaldiが(サイト側に)頻繁にブロックされたことによるものです。

>以下は、現在確認されている問題のほんの1例です。
  Google : リダイレクト経由で訪れたGoogle.comでVivaldiがユーザーエージェントを提示すると、検索テキストボックスの位置がずれます。
  Google : GoogleドキュメントでVivaldiがユーザーエージェントを提示すると、警告が表示されます。
  Facebook : FacebookのWhatsAppでVivaldiがユーザーエージェントを提示すると、サイトに入ることができず、競合他社のいずれか(すなわちGoogle Chrome等の別のブラウザ)に切り替えることをお勧めされます。
  Microsoft : Microsoft Teamsでは、Vivaldiがユーザーエージェントを提示すると、Webサイトを使用できなくなります。
  Netflix : NetflixでVivaldiがユーザーエージェントを表示すると、Silverlightをインストールしてビデオを再生するよう提案されます。

多くの大手サイトにおいて、(ブラウザとして)致命的な問題が発生していることが分かります。
さらに、これらの問題は**Vivaldiへの一方的な攻撃であった**ことも明かされています。

>我々はしばしば、「Vivaldi」をブロックするWebサイトに遭遇します。 これがブラウザの分野で直接競合する他社によるものであった場合、特に問題になります。 この問題が発生すると、ユーザーは通常、Vivaldiに問題があると思い込み、場合によっては我々が競合他社に狙われているということを理解するのに苦労します。 しかし、彼らが私たちを狙っていることは、ユーザーエージェントにおける「Vivaldi」のスペル1文字を意図的に間違えることで、例えば、「Vivaldo」または「Vxvaldi」のようにすることで、明確に確認できます。

つまり、この問題は、ユーザーエージェントを用いて、競合するブラウザに対してのみ、意図的にバグを引き起こし、ユーザー離れを引き起こして自分たちの利益につなげようとするのが目的だったわけです。

これは果たして、健全なインターネットの姿でしょうか。
Microsoft EdgeがChromiumベースとなり、ウェブブラウザの多様性が失われることが危惧されていますが、インターネット界で力を持つ大企業がこのような差別的な(名前だけで入店拒否されるお店があるとすれば、それは立派な差別です。)行動を率先して行い、ウェブブラウザの多様化を阻害しているのです。

今後このような差別的攻撃が一層過激化することのないよう、願いたいものです。