嘘つきたちの行進:ユーザーエージェントに刻まれた「ブラウザ戦争」の歴史 | UNIX Cafe

当サイトでは、コンテンツの一部に広告を掲載しています。
嘘つきたちの行進:ユーザーエージェントに刻まれた「ブラウザ戦争」の歴史 | UNIX Cafe

UNIX Cafe 第107回

目次

ログに眠る「ブラウザ戦争」の化石:なぜ彼らは偽名を使い続けるのか?

Webサーバーのログを眺めていると、必ず出くわす「謎の文書」があります。

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

WindowsでChromeを使っているだけなのに、なぜ「Mozilla」や「AppleWebKit」、挙句の果てには「Safari」まで名乗っているのか? 実はこれ、Webの黎明期から続く「嘘と偽装の歴史」が積み重なった結果なのです。

1. 始まりの嘘:「私はMozilla(Netscape)です」

1990年代、世界を制していたのは Netscape Navigator でした。コードネームは「Mozilla」。 当時、Netscapeは最新機能である「フレーム分割」をいち早く導入しました。Webサイト側はこう考えます。 「Mozilla(Netscape)なら最新ページを、それ以外なら古い簡易ページを表示しよう」

これに困ったのが、後発の Internet Explorer(IE) です。IEは最新機能に対応しているのに、名乗らなければ「古いページ」に飛ばされてしまいます。 そこでIEのエンジニアが取った作戦が「私はMozilla互換(Compatible)のIEです」と名乗ること。これが「偽装」の始まりでした。

2. Linux陣営の挑戦:KHTMLの誕生

その後、Linuxの世界で Konqueror というブラウザが登場します。彼らは独自の「KHTML」という優れたエンジンを持っていました。 しかし、世の中のサイトは「Mozilla」か「IE」しか見てくれません。 そこで彼らはこう名乗りました。 「私はMozilla(のフリをした)、KHTML(を積んだブラウザ)だ。Gecko(Firefoxのエンジン)に似ている(like Gecko)から、ちゃんと表示してくれよ!」 ログにある (KHTML, like Gecko) という奇妙な一節は、彼らの必死の呼びかけなのです。

3. Appleの参入とChromeの「全部乗せ」

AppleがSafariを作る際、このKHTMLをベースに AppleWebKit を開発しました。 さらにGoogleがChromeを作る際、AppleWebKitをベースにしました。

この時、Chromeは考えました。「全てのサイトで完璧に表示されたい」。 その結果、過去のしがらみを全て飲み込んだ、あの「全部乗せ」の文字列が完成したのです。

含まれる名前実際の意味・歴史的背景
Mozilla/5.0「私は現代的なブラウザです」というパスポート代わり
AppleWebKitSafariと同じエンジン、あるいはその互換であることを証明
KHTMLLinux時代の先祖への敬意と、古いサイトへの配慮
like Gecko「Firefox(Gecko)向けのページでも動くよ」というアピール
Safari「Safariができることは全部できるから安心して」という宣言

ユーザーエージェントは「化石の地層」である

現代のユーザーエージェントは、もはや「誰であるか」を示すものではなく、「これまでのブラウザたちが戦ってきた歴史の地層」です。

セキュリティの観点から見れば、この「嘘」を逆手に取って、攻撃者は身元を隠します。しかし、私たちは、この文字列が語る「歴史」を知ることで、アクセスしてきた相手がクローラーなのか、本物の人間なのかを見極める一助にできるのです。

ログの「嘘」を暴く:クローラーと人間を分かつ3つの境界線

ユーザーエージェント(UA)は自己申告制です。誰でも「私はChromeです」と名乗れてしまいます。 しかし、本物の人間と、正体を隠したボットの間には、隠しきれない「挙動のズレ」が生じます。

1. 「正直者」と「潜伏者」の自己紹介

まず、ログをUAでフィルタリングしたとき、大きく2つのグループに分かれます。

正直なクローラー(Good Bot)

Googlebotや、今回ログに出現したBarkrowlerなどがこれです。彼らはUAの中に「自分の名前」と「詳細情報のURL」を堂々と記述します。

Mozilla/5.0 ... (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)

潜伏するボット(Scraper/Bad Bot)

サイトの情報を盗み見たり、脆弱性を探したりするボットは、正体を隠すために「ごく普通のWindows Chrome」などのUAを丸ごとコピー(偽装)してやってきます。

2. IPアドレスという「動かぬ証拠」

UAが「嘘」を吐いていても、接続元であるIPアドレスは嘘をつけません。ここがセキュリティ屋の腕の見せ所です。

逆引き(PTRレコード)の確認

Googlebotを名乗るIPなら、逆引きすれば必ず googlebot.com で終わるドメインが出てきます。もしUAがGooglebotなのに、逆引きして「謎のレンタルサーバー」や「海外のデータセンター」が出てきたら、それは100%偽物です。

AS番号(ネットワークの出所)のチェック

普通の人間なら「楽天モバイル」や「ぷらら」といった日本のプロバイダ(ISP)からアクセスします。 一方、偽装ボットは「AWS(Amazon)」や「DigitalOcean」といったクラウドサーバーから攻撃を仕掛けてきます。「一般ユーザーがサーバーの中からブラウザを操作してサイトを見る」ことはまずありません

3. リクエストの「呼吸」を読む(行動解析)

UAが同じでも、人間とボットでは「サイトの歩き方」が決定的に違います。

項目本物の人間(ブラウザ)偽装ボット(プログラム)
静的ファイルの読み込みHTMLの後に画像、CSS、JSをセットで読み込むHTML(中身のテキスト)だけを高速で抜いていく
リクエストの間隔ページを読んでから次へ行く(数秒〜数分の間隔)0.1秒単位の超高速、または機械的な一定間隔
リンクの辿り方興味のある場所をクリックするサイト内のリンクを全方位に、あるいはタグを順番に巡回する
リファラ(参照元)Google検索やSNS、サイト内リンクから来るリファラが「空」か、不自然にトップページ固定

結びに:ログの向こう側に「体温」を探して

私たちが日々目にするユーザーエージェントの文字列は、一見すると無機質で、矛盾に満ちた「嘘つきの告白」のようです。しかし、そのカオスな地層を一枚ずつ剥いでいくと、そこにはWebの自由を守ろうとした先人たちの知恵と、熾烈なシェア争いの歴史が刻まれています。

セキュリティの現場でログを解析するということは、単に不正アクセスを弾くことではありません。

  • 名前(UA) で相手の自称を聞き
  • 出所(IP) で相手の背景を裏付け
  • 呼吸(行動) で相手が「本物の人間」かどうかを感じ取る

この三段構えの視点を持つことで、ただの文字列だったログが、生き生きとした「訪問者の足跡」に見えてくるはずです。

「WindowsのChromeを使っている」という平凡な記録も、歴史を知れば一つのドラマになります。もし、あなたのサイトのログに奇妙なリダイレクトや、見慣れない「AppleWebKit」の文字を見つけたら、それはデジタルの迷宮からの招待状かもしれません。

次にログを開くとき、あなたにはその文字列の裏側にいる「誰か」の体温が、少しだけ感じられるようになっているかもしれませんね。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次