WebサイトとWebブラウザの攻防。ほぼ全てのWebブラウザが行う「成りすまし」
しかし実際のユーザーエージェントは、歴史的な経緯でぐだぐだになっていた。特に問題となっていたのは
Webブラウザだ。
各種Webブラウザは、歴史的にシェア争いを続けてきた。「Netscape Navigator」「Internet Explorer」「Google Chrome」と覇権は次々と変わっていった。それ以外にも無数のWebブラウザが誕生し、シェアの争奪戦を繰り広げた。その過程で、後発のWebブラウザは、クリアしなければならない問題があった。
サーバー側では、ユーザーエージェントを見て、送り返すデータを変えることがある。新しいWebブラウザが登場した際、自身の名前をそのままユーザーエージェントとしてサーバーに送っても、「そんなWebブラウザは知らない」と言われて、先行のWebブラウザと同じデータがもらえない。
ではどうするか。後発のWebブラウザは、ユーザーエージェントで、先行のメジャーなWebブラウザの名前を名乗り、そこに自分の名前を加えていった。そうしたことが繰り返されることで、ユーザーエージェントはどんどん長大な文字列になっていった。
例を示そう。まずは「
Google Chrome」だ。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
「Mozilla」を名乗り、「AppleWebKit」を名乗り、「Safari」も名乗っている。もちろん「Google Chrome」は、「Mozilla」でも「AppleWebKit」でも「Safari」でもない。
ちなみに、KHTML は、
KDEプロジェクトにより開発されているHTMLレンダリングエンジンで、
Konquerorのために開発されたものだ。
Gecko は、元々 Netscape 系で、のちに Firefox 系で使われたHTMLレンダリングエンジンになる。
これらはどれも「Google Chrome」とは何の関係もない。
本来ならば「Chrome/79.0.3945.130」だけでよいはずである。
次に新版の「
Microsoft Edge」も見てみよう。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 Edg/79.0.309.71
「Mozilla」を名乗り、「AppleWebKit」を名乗り、「Chrome」を名乗り、「Safari」も名乗っている。新版の「Microsoft Edge」は、「Google Chrome」と同じレンダリングエンジンを使っているから「Chrome」の名乗りは、100%の嘘ではないだろう。しかし、
本来なら「Edg/79.0.309.71」だけでよいはずだ。
ちなみに、この「Edg」という文字列も、旧「Edge」と区別するために付けたもので、正しい名称ではない。旧「Edge」の評判が悪かったために、
自身の名前を偽っているのだ。
Webブラウザのユーザーエージェントは、このように欺瞞溢れる魔窟となっていた。そして、負の遺産としか言いようがない状態になっていた。
Webブラウザのユーザーエージェントは、その存在意義が問われるような内容になっていた。
ただし、「データを要求する相手を区別する」という本来の用途も当然ある。そのために、「
UA-CH(User-Agent Client Hints)」という代替の仕様に移行するようだ。必要ではあるが、現状はまずいということだろう。
この移行の試みが成功するのかは分からない。「Google Chrome」のシェアが大きいとはいえ、急には現状は変わらないだろう。Webブラウザ以外のクライアントも存在する。そのため当分のあいだサーバー側の開発者は、欺瞞に満ちた長大なユーザーエージェントに付き合い続ける必要があるだろう。
<文/柳井政和>