TabbitBlog

ブラウザエージェントとは何ですか?ユーザーエージェント文字列の確認方法

ブラウザエージェントは、ブラウザがあらゆるウェブサイトに見せる身分証明書のようなものです。ユーザーエージェント文字列の意味、どのブラウザでも数秒で確認する方法、そしていつ本当に問題になるのかを解説します。

この記事の内容
  1. 主なポイント
  2. ユーザーエージェントを一目で確認する方法
  3. ユーザーエージェントがサイトに伝えること
  4. 文字列が奇妙に見える理由
  5. User-Agentリダクション:文字列の情報が減った理由
  6. ユーザーエージェントが裏目に出るとき
  7. Tabbitでユーザーエージェントを確認し、読み解く
  8. どの方法を選ぶべき?

Linux上のChromeユーザーが、古いブラウザとは無関係な壁にぶつかりました。彼らはr/Twitchにこう書き込んでいます:「"I'm getting the message that my browser is unsupported for Twitch, even though I'm using the latest version of chrome"」(最新版のChromeを使っているのに、Twitchがブラウザ非対応のメッセージを出す)。ユーザーエージェント内のプラットフォームのトークンだけで、サイトが彼らを追い返したのです。

サイトが読み取ったその文字列(ユーザーエージェント、あるいはブラウザエージェントと呼ばれるもの)は、ブラウザが訪問するすべてのウェブサイトに手渡す身分証明書です。面倒なのは見つけることではありません。10秒で済みます。面倒なのは、その文字列がノイズのように見えるのに、ウェブサイトがこっそりとそれをもとに判断を下していることです。

この記事では、その文字列が実際に何を意味するのか、どのブラウザでも最速で確認する方法、そしてほぼ一切変更する必要がない理由を解説します。途中では、Tabbit Browserで文字列を調べ、AIに1つずつ説明させる様子も見ていきます。

主なポイント

  • ユーザーエージェントは、使用中のブラウザ、バージョン、OS、デバイスの種類を訪問先のサイトに伝えるテキスト文字列です。

  • 最速の確認法:whatmyuseragent.comやDNSCheckerのユーザーエージェントページのような検出サイトを開く。内蔵の方法:開発者ツールのコンソールに navigator.userAgent と入力。

  • Chromeの文字列に「Safari」や「KHTML, like Gecko」とあるのは、Safariだからではなく、歴史的な互換性のためです。

  • モダンなブラウザは文字列の一部を固定します(User-Agentリダクション)。これはフィンガープリンティングを抑えるためで、詳細が必要なサイトはClient Hintsを使います。

  • サイトはユーザーエージェントをもとにリクエストを遮断・劣化させることがあり、実際に行っています。だから拡張機能で変更すると、助けになるどころかページを壊すことが多いのです。

ユーザーエージェントを一目で確認する方法

方法手順向いている人制限
検出サイトwhatmyuseragent.comDNSCheckerのユーザーエージェントツールのようなページを開く。サイトがリクエストヘッダーを読み取って文字列を表示するワンクリックで答えがほしい人インターネット接続が必要。サイトはあなたの訪問を見える
開発者コンソールWindows/Linuxでは F12、macOSでは Cmd+Option+I で開発者ツールを開き、コンソールで navigator.userAgent と入力してEnterオフラインでの使用。正確な文字列のコピー使ったことのない人もいるキーボードショートカットが必要
ネットワークパネル開発者ツールを開き、Networkタブに切り替えてページを再読み込みし、任意のリクエストをクリックしてリクエストヘッダーを確認ブラウザが実際に送る内容を確認したい開発者単純な確認には大げさ

動画で手順を見たい場合は、YouTubeに"How to find User Agent Information in your Browser"という手頃な短い動画があります。

ユーザーエージェントがサイトに伝えること

デスクトップ版Chromeでコンソール方式を開くと、次のような文字列が表示されます。MDNが記載している現在のChromeデスクトップ版の形式です。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36

左から右へ読めば、ノイズでなくなります。

  • Mozilla/5.0:互換性のためのトークン。歴史的な理由で、Firefoxを含め今日のほぼすべてのブラウザがこの文字列から始まります。

  • (Macintosh; Intel Mac OS X 10_15_7):プラットフォーム。AppleのデスクトップOSです。

  • AppleWebKit/537.36:ブラウザの基盤となるWebKitエンジンのバージョン。

  • (KHTML, like Gecko):互換性のためのトークン。詳しくは後述します。

  • Chrome/143.0.0.0:ブラウザとそのバージョン。サイトが実際に一番重視する部分です。

  • Safari/537.36:そう、ChromeはSafariのトークンで終わります。歴史的なもので、バグではありません。

Firefoxの形式は自分自身についてより正直です:Mozilla/5.0 (platform; rv:gecko-version) Gecko/gecko-trail Firefox/firefox-versionMDNのFirefoxの項目による)。Safariはエンジンビルドの前に Version/xx.x トークンを追加します。そしてiPhone上では、Chrome、Firefox、Edgeを含むすべてのサードパーティ製ブラウザがWebKit形式の文字列を送り続けます。iOSはブラウザにWebKitの使用を義務づけているためです。

文字列が奇妙に見える理由

奇妙なトークンはブラウザ戦争の傷跡です。初期のウェブサイトはユーザーエージェントを確認し、認識できないものには、機能を絞ったページ、あるいは一切読み込まないことすら返しました。新しいエンジンは、古い名前を借用することで対抗しました。ChromeはWebKit向けに書かれたサイトに自分を「仲間」として扱わせるため、KHTML, like GeckoSafari のトークンを追加しました。Firefox、Opera、Edgeも同じ理由で、それぞれ独自の歴史的しがらみを引きずっています。

RedditのFirefoxサポート貢献者が現代の実態をこう総括しています。ユーザーエージェントは "a relic of the past, at least in theory... some questionably made sites still do" depend on it とのことです。理論上は過去の遺物。ただ、作りのいい加減なサイトの一部は今もこれに依存しています。作りの良いサイトであれば、代わりにフィーチャー検出を使うべきです。それでも文字列が今も重要なのは、すべてのサイトが作り良くあるとは限らないからです。ブラウザが自分とサイトの間に入るという考え方自体がぼんやりしている場合は、まずブラウザの平易な解説ガイドで背景を確認してください。

User-Agentリダクション:文字列の情報が減った理由

上の文字列は、プライバシーの問題でもあります。ブラウザのバージョンや正確なOSビルド:トラッカーがこれらを組み合わせてフィンガープリントを作れるデータポイントが、もう一つ増えるのです。そこでChromiumベースのブラウザは現在、その一部を固定しています。MDNのリダクションの解説がAndroidの変更を説明しています:プラットフォームのバージョンは Android 10 に固定され、デバイスモデルは凍結された K と表示され、Chromeのマイナーバージョンは常に 0.0.0 です。結果として Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36 のような文字列になります。

デスクトップでも同じことが確認できます。最新のMac上の最新Chromeでも、Intel Mac OS X 10_15_7 と報告されます。OSのバージョンは文字列内で更新が止まったのです。本当に詳細な情報を必要とするサイトは、User-Agent Client Hints を通じて要求できます。サーバーが Accept-CH ヘッダーを送り、ブラウザは Sec-CH-UA-* ヘッダーで、構造化されリクエストごとの情報を返します。

実用上のポイントは2つ。1つ目に、凍結されたバージョン番号を理由にサイトが「ブラウザが古い」と言ってきた場合、そのサイトは文字列の読み方を間違えています。2つ目に、文字列が小さくなった今、それを変更して得られるプライバシーは以前よりさらに少ないということです。

ユーザーエージェントが裏目に出るとき

サーバーがこの文字列を信頼するため、コミュニティのスレッドには同じような問題が繰り返し現れます。

最も多いのは誤判定です。上記のTwitchのケースがまさにそれで、最新のChrome、間違ったプラットフォームのトークン、遮断メッセージという組み合わせです。同じような判定ロジックが、一部の銀行や政府のポータルが特定のブラウザを要求する理由です。そのパターンは患者ポータルの記事で取り上げました。

意図的なゲーティングも起きています。サイトが文字列の理由でアクセスを遮断できるかと聞けば、答えはイエスです。サーバーはどんな理由でもどんなリクエストでも拒否できます。同じr/firefoxのスレッドがそれを確認しています。

スプーフィングの副作用は、自分で招いたバージョンです。ユーザーエージェントを巡回させたり偽造したりする拡張機能は、問題を1つ解決して数個作ります。Windscribeユーザーの1人がRedditで報告したところによると、ユーザーエージェントの巡回によってYouTubeが何も読み込まなくなり、Google Docsが「非対応」ブラウザとしてブロックされたそうです。文字列を空にするにしても、それは修正ではなく実験です。開発者のŠime VidasがまさにそれをXで試し、何が壊れるかを確かめました。

これは、ユーザーエージェントが危険な知識だという意味ではありません。パスワードではなく、訪問するすべてのサイトがすでに持っています。この文字列を理解する価値は、フォームが何を尋ねているかを知っておく価値と同じです:サイトが悪い判断をしていると気づけるようにするためです。

Tabbitでユーザーエージェントを確認し、読み解く

確認そのものはどのブラウザでも10秒で済みます。その後の疑問(「じゃあ、この文字列は自分にとって何を意味するの?」)のほうが、AIネイティブのブラウザにとって本領発揮の場です。

Tabbit BrowserTabbit Browserとはで詳しく紹介しているAIブラウザ)では、新しいタブページのOmniboxがAI入力欄も兼ねているため、一連の流れを一か所で済ませられます。

  1. whatmyuseragent.com のような検出サイトをOmniboxに入力して開きます。完全な文字列がページ上部に表示されます。

  2. サイドパネルで @ を使ってページを参照し、文字列の解説をTabbitに頼みます。どのトークンがブラウザのバージョンで、どれが凍結されたプラットフォームで、Safariのトークンがなぜあるのか。AIは表示中のページを読むので、コピーする必要はありません。

  3. あるサイトで「非対応ブラウザ」の壁にぶつかったら、エージェントモードに切り替えます。名前の由来となったエージェント的な仕組みは、エージェント型ブラウザの解説で取り上げています。Tabbitにページを開かせ、エラーを読ませ、サイトが何を拒否していると主張するかを報告させます。

Omnibox入力欄と、その下に開かれたAIモデル選択メニューがあるTabbit Browserの新しいタブページ
TabbitのOmniboxはURLとAIプロンプトを同じフィールドで受け付け、モデル選択メニューはワンクリックで開けます。
元のページが見えたまま、開いているウェブページを要約するTabbit Browserのサイドパネル
サイドパネルは開いているページを読むため、ユーザーエージェント文字列の意味をどこにもコピーせず尋ねられます。

率直なトレードオフを説明します。AIによる解説は読解の補助であって、文字列の最終的な正解は仕様とMDNのリファレンスであり、チャットの回答ではありません。Tabbitはユーザーエージェントを変更せず、変更する予定もありません。その文字列はプラットフォームレベルの判断事項であり、凍結とClient Hintsが業界の合意した方向だからです。Tabbitが役立つのは、その周囲のループです:文字列を確認し、理解し、それを誤読したページを診断する。本当の問題がアップデート後のサイトの不具合であれば、ブラウザのトラブルシューティングガイドから始めてください。フィンガープリンティングのプライバシー面については、プライバシー保護がサイトを壊す理由を参照してください。そして、実際に不満なのが遅くてごちゃごちゃしたブラウザであるなら、それは別の解決法です。ブラウザの肥大化についての解説をどうぞ。

どの方法を選ぶべき?

シナリオすべきこと理由
サポートフォームがブラウザ情報を求めている検出サイトからユーザーエージェントをコピーしてフォームに貼り付けるサポートチームが、まさにその環境を再現するために使います
サイトが「非対応ブラウザ」と表示するまず文字列を確認し、次にブラウザを更新。それでも続くなら、サイトの判定が間違っている可能性が高いLinux上のChromeの例が示すように、最新のブラウザでも誤読されえます
レイアウトや機能のバグをデバッグ中コンソールかネットワークパネルの方法を使い、Client Hints対応のツールでテストする開発者には、生の文字列とサーバーが交渉した内容の両方が必要です
プライバシーを高めたいユーザーエージェントはそのままに。代わりにトラッカー遮断を使うスプーフィングはサイトを壊し、リダクションですでに晒されるデータは減っています
どのみち新しいブラウザを選んでいるユーザーエージェント文字列ではなく、速度、プライバシー、ワークフローの相性で選ぶどのモダンブラウザも似た文字列を送ります。重要な違いは別のところにあります——ブラウザの選び方と、生産性のためのブラウザに関する記事を参照

結論:ユーザーエージェントは、サイトがブラウザを識別するために使う、小さく公開された文字列です。必要なときに確認し、誤った判定を見抜ける程度に理解し、それ以外は放っておきましょう。確認と解説のステップを、いつも使っているブラウザの中で済ませたいなら、Tabbit Browserは両方を一か所でこなします。macOSとWindowsで無料で、ブックマーク、履歴、拡張機能をChrome、Edge、Safariから一括で引き継げます。その手順は乗り換え前のバックアップチェックリストで解説しています。

よくある質問

ブラウザエージェントを平易な言葉で説明すると何ですか?

ブラウザが訪問したすべてのウェブサイトに送る短いテキスト文字列で、使用中のブラウザ、バージョン、OS、デバイスの種類をサイトに伝えるものです。サーバーはこれをもとに、どの版のページを返すかを決定します。自分の文字列は、検出サイトを開くか、ブラウザの開発者コンソールに navigator.userAgent と入力すればすぐ確認できます。

Chrome、Edge、Firefox、Safariでユーザーエージェントを確認するには?

最も速い方法は検出サイトを開くことです。サイトがリクエストのUser-Agentヘッダーを読み取って文字列を表示してくれます。内蔵の方法としては、F12 または Cmd+Option+I で開発者ツールを開き、コンソールに navigator.userAgent と入力してEnterを押します。主要なデスクトップ・モバイルブラウザはどちらの方法にも対応しています。

Chromeのユーザーエージェントに「Safari」や「KHTML, like Gecko」と入っているのはなぜですか?

これらはブラウザ戦争の時代の名残です。初期のサイトは特定のエンジンしか確認せず、それ以外を拒否していたため、新しいブラウザは互換性を保つため古いエンジンの名前を文字列に追加しました。ChromeはBlinkベースですが、文字列には今もKHTML, like GeckoやSafariのトークンを残しています。ほぼすべてのブラウザが Mozilla/5.0 から始まるのも同じ理由です。

ウェブサイトはユーザーエージェントを理由にアクセスを遮断できますか?

はい。サーバーはUser-Agentヘッダーを理由に、どんなリクエストでも拒否したり劣化させたりできます。ブラウザが最新版でも、特定のブラウザやプラットフォーム向けに機能を制限したり「非対応ブラウザ」のメッセージを出したりするサイトが今もあります。コミュニティには、Linux上の最新版Chromeが、サイトの判定ロジックがプラットフォームのトークンを見ているために「非対応」と表示されたという報告もあります。

ユーザーエージェントを変更したり隠したりすべきですか?

ほとんどの人には不要です。モダンなブラウザはフィンガープリンティング対策のために文字列の多くをすでに固定しており、ユーザーエージェントを巡回させたり空にしたりする拡張機能は、改善より壊すことが多いです。Google DocsやYouTubeが使えなくなる例もあります。ユーザーエージェントを偽装すべきなのは互換性をテストする開発者だけで、それも一時的に行うものです。

User-AgentリダクションとClient Hintsとは何ですか?

User-Agentリダクションは、Chromiumベースのブラウザにおけるプライバシーに関する変更で、ユーザーエージェント文字列の一部を固定するものです。例えばAndroidのバージョンを10、デバイスモデルをK、マイナーバージョン番号を0に固定します。正当に詳細情報が必要なサイトは、User-Agent Client Hintsを通じて要求できます。サーバーはAccept-CHヘッダーで尋ね、ブラウザはSec-CH-UA系ヘッダーで応答します。

次のステップへ

Tabbit と一緒に仕事をしましょう。

タブをまたいで調査し、繰り返しのブラウザ作業を自動化し、あらゆる文脈を手の届くところに。