メモ

世界中を巻き込んだブラウザ戦争と「ユーザーエージェント文字列」をめぐる複雑怪奇な変遷とは?

by Browserling

ユーザーエージェントとは、ユーザーの代理としてプロトコルに基づいて通信を行い、結果を通知する機能を持ったソフトウェアのことで、一般的にはウェブブラウザのことを指します。ウェブブラウザは1990年代初頭から激しい競争が開始し、ブラウザを識別するユーザーエージェント文字列の名称も大きな変遷を遂げてきました。

WebAIM: History of the browser user-agent string
https://webaim.org/blog/user-agent-string-history/

まずは1993年に欧州原子核研究機構(CERN)によってWorld Wide Webが解放された直後に、米国立スーパーコンピュータ応用研究所によってNCSA Mosaicというウェブブラウザがリリースされました。NCSA Mosaicはテキストと画像を同時に表示できる最初のウェブブラウザであり、多くのユーザーがNCSA Mosaicの登場を歓迎したとのこと。


1994年になると、NCSA Mosaicの開発者が独立して開発した「Mozilla」という名称の新しいウェブブラウザが登場しました。「Mozilla」という名称は「Mosaic Killer」の略称だったそうですが、Mosaicがこの名称に対して異議を申し立てた結果、Mozillaを「Netscape」という名前に改称してリリース。「Netscape」はNCSA Mosaicが対応していなかったフレーム機能に対応していました。

フレーム機能をウェブページに組み込んだウェブページ管理者は、「フレーム機能を持ったNetscapeブラウザからは訪問してもらいたいが、フレーム機能に未対応な他のブラウザからは訪問してもらいたくない」という思いから、ウェブサイトを訪問したブラウザの「ユーザーエージェント文字列」を識別し、ウェブページ管理者が許可したユーザーエージェントのブラウザのみウェブページを訪問できるというシステムを開発。このシステムをユーザーエージェント・スニッフィングと呼びますが、これにより「Netscapeでは表示されるのにMosaicでは表示されない」ウェブページが登場するという現象が発生しました。

by tonynetone

Netscapeの躍進に触発されたMicrosoftは、Windows 95のリリースと共に「Internet Explorer」というウェブブラウザを発表。Internet Explorerは「Netscapeと互換性を持つ」と宣伝されましたが、実際にはInternet ExplorerはNCSA Mosaicをもとにして作られていたため、フレーム機能には未対応でした。しかし、Microsoftは「一刻も早くInternet Explorerを広めて『Netscape killer』にしたい」という強い思いを持っていたため、ウェブページの管理者によるユーザーエージェント・スニッフィングをかいくぐってウェブページを訪問できるように、ユーザーエージェントをNetscapeに偽装するという手を採用します。Internet ExplorerのユーザーはWindowsに対応したブラウザの登場を歓迎しましたが、ウェブページの管理者は非常に困惑したとのこと。

MicrosoftはInternet ExplorerをWindowsと一緒に販売する方法で、急速にブラウザのシェアを拡大。1995年ごろに勃発した第一次ブラウザ戦争において、NetscapeはInternet Explorerに勝つことはできず姿を消しましたが、Netscapeは「Mozilla」として復活を果たします。Mozillaが開発したGeckoというユーザーエージェントは非常に優秀なものであり、Geckoを使用したMozilla Firefoxもユーザーから高評価を得ました。

2006年頃からMozilla Firefoxのシェアが次第に伸び始め、2010年には全世界のユーザーの20%以上がMozilla Firefoxを使うようになりました。そして再びユーザーエージェント・スニッフィングが行われるようになり、Geckoをユーザーエージェントにしたブラウザを優遇したウェブページが登場するようになりました。Linuxユーザーに支持されてきたKonquerorというウェブブラウザは、多くのユーザーが「Geckoと同じレベルで優れている」と信じていましたが、残念ながらGeckoではないためユーザーエージェント・スニッフィングではじかれてしまいます。そこでKonquerorはGeckoのユーザーエージェント文字列を偽装し始め、「Mozilla Firefoxと互換性がある『KHTML』というユーザーエージェントだ」ということにしたのです。

by ccarlstead

また、ノルウェーで開発されたウェブブラウザのOperaは、初めから「ユーザーエージェント文字列の変更」を可能にしていました。Operaは拡張機能によって好きなようにユーザーエージェント文字列を変え、他のウェブブラウザを装って自由にウェブページにアクセスできるようにしていたのです。

Appleが開発したウェブブラウザのSafariはユーザーエージェントにKonquerorのKHTMLを使用していましたが、多くの機能を追加した結果WebKitという独自のユーザーエージェントになりました。しかし、ウェブページにはKHTML用のページが表示されるようにしていたため、WebKitは「Geckoを偽装したKHTMLに偽装したユーザーエージェント」ということになります。

やがてInternet ExplorerもGeckoの勢いを無視できなくなり、Geckoを優遇するウェブページを見られるように変更を施しました。さらにGoogleが開発したGoogle Chromeは、SafariのWebKitに対応するためWebKitのユーザーエージェントに偽装しています。結果、「Google Chromeが偽装するSafariのWebKitはKHTMLに偽装したものであり、そのKHTMLはGeckoに偽装したもの」という状態に陥り、結果としてユーザーエージェント文字列は意味をなさなくなってしまったのです。

この記事のタイトルとURLをコピーする

・関連記事
LinuxからOnedriveを使うと遅くなるが「Windows」をユーザーエージェントに加えると高速化する - GIGAZINE

Androidのとどまるところを知らない進化の過程を一挙に振り返るとこうなる - GIGAZINE

Macからデータを盗んだりコードを勝手に実行したりとあらゆるコントロールを奪ってしまう極悪マルウェアが登場 - GIGAZINE

世界中の防犯カメラを駆使して行われる大規模DDoS攻撃の存在が明らかに - GIGAZINE

IPアドレス・クッキー・JavaScript・UAなどを使わずユーザーを個別に追跡する方法 - GIGAZINE

in メモ,   ネットサービス, Posted by log1h_ik

You can read the machine translated English article here.