コンピューティング において、User-Agent ヘッダーは、特定の HTTP リクエストを行うユーザー エージェントを識別することを目的としたHTTPヘッダーです。文字シーケンスはヘッダー自体の名前を構成しますが、特定のユーザー エージェントが自身を識別するために使用するヘッダー値は、一般的にユーザー エージェント ストリングと呼ばれます。Web にアクセスするために使用されるコンピュータのオペレーターのユーザー エージェントは、その動作を規定するルールの中に、リクエスト レスポンス トランザクションの自分の側の交渉方法に関する知識を組み込んでいます。したがって、ユーザー エージェントはクライアント サーバー システムにおけるクライアントの役割を果たします。ネットワーク セッションを促進するソフトウェアを識別および区別する機能は、ネットワークにおいてしばしば有用であると考えられています。このため、User-Agent HTTP ヘッダーは、クライアント ソフトウェアを応答サーバーに識別するために存在します。User-Agent
ソフトウェアエージェントがネットワークプロトコルで動作する場合、多くの場合、動作中のピアに特徴的な識別文字列を送信することで、自身、アプリケーションの種類、オペレーティングシステム、デバイスモデル、ソフトウェアベンダー、またはソフトウェアのリビジョンを識別します。HTTP [ 1 ]、SIP [ 2 ] 、およびNNTP [ 3 ]プロトコルでは、この識別情報はヘッダーフィールドUser-Agentで送信されます。Webクローラーなどのボットは、 Web マスターがボットのオペレーターに連絡できるように、URLや電子メール アドレスも含めることがよくあります。
HTTPでは、「ユーザーエージェント文字列」はコンテンツネゴシエーションによく用いられ、オリジンサーバーが応答に適したコンテンツや動作パラメータを選択します。例えば、Webサーバーはユーザーエージェント文字列を用いて、特定のバージョンのクライアントソフトウェアの既知の機能に基づいてバリアントを選択することがあります。コンテンツのカスタマイズという概念は、RFC 1945において「特定のユーザーエージェントの制限を回避するために応答をカスタマイズする」目的でHTTP標準に組み込まれています。
ユーザーエージェント文字列は、ロボット排除基準(robots.txtファイル)を使用してWebクローラーがWebサイトの特定の部分にアクセスすることを除外するための基準の1つです。
他の多くの HTTP リクエスト ヘッダーと同様に、ユーザー エージェント文字列の情報は、ユーザーごとに文字列が大きく異なる可能性があるため、クライアントがサーバーに送信する情報に貢献します。[ 4 ]
ユーザーエージェント文字列の形式は現在、RFC 9110 「HTTP Semantics」のセクション 10.1.5 で規定されています。[ 5 ] HTTP のユーザーエージェント文字列の形式は、オプションのコメントが付いた製品トークン (キーワード) のリストです。たとえば、ユーザーの製品が WikiBrowser という名前の場合、ユーザーエージェント文字列はWikiBrowser/1.0 Gecko/1.0のようになります。「最も重要な」製品コンポーネントが最初にリストされます。
この文字列の構成要素は以下のとおりです。
最初のブラウザ戦争の間、多くのウェブサーバーは、フレームなどの高度な機能を必要とするウェブページを、Mozillaのいずれかのバージョンとして識別されるクライアントにのみ送信するように構成されていました。[ 6 ]他のブラウザは、 Mosaic、Cello、またはSambaなどの古い製品と見なされ、基本的なHTMLドキュメントが送信されました。
このため、ほとんどのWebブラウザは、ユーザーエージェント文字列値を次のように使用します。
例えば、iPadのSafariでは以下のような方法が使われています。
Mozilla/5.0 (iPad; U; Mac OS X のような CPU OS 3_2_1; en-us) AppleWebKit/531.21.10 (Gecko のような KHTML) Mobile/7B405
この文字列の構成要素は以下のとおりです。
Chromiumコードベースに移行する前は、Operaは「Mozilla」で始まるユーザーエージェント文字列を持たない(代わりに「Opera」で始まる)最も広く使用されているWebブラウザでした。2013年7月15日以降、[ 7 ] Operaのユーザーエージェント文字列は「Mozilla/5.0」で始まり、レガシーサーバールールとの遭遇を避けるため、「Opera」という単語は含まれなくなりました(代わりに「OPR」という文字列を使用してOperaのバージョンを示します)。
自動ウェブクローリングツールは簡略化されたフォームを使用することができ、重要なフィールドは問題が発生した場合の連絡先情報です。慣例として、エージェントの名前には「bot」という単語が含まれます。例:
Googlebot/2.1 (+http://www.google.com/bot.html)自動エージェントは、「 robots.txt 」と呼ばれる特別なファイルに記載されたルールに従うことが求められます。
Netscape NavigatorやInternet Explorerなど、米国で作成されたWebブラウザは、以前はU、I、Nの文字を使用してユーザーエージェント文字列の暗号化強度を指定していました。米国政府が40ビットを超える鍵による暗号化の輸出を許可した1996年まで、ベンダーは暗号化強度の異なるさまざまなバージョンのブラウザを出荷していました。「U」は「USA」(128ビット暗号化バージョン)、「I」は「International」(ブラウザは40ビット暗号化で、世界中で使用可能)、「N」は(事実上)「None」(暗号化なし)を意味します。[ 8 ]輸出制限の解除後、ほとんどのベンダーは256ビット暗号化をサポートしました。
ウェブの歴史を通じて、さまざまなウェブ ブラウザ製品の人気は変動しており、これはウェブサイトのデザインに影響を与え、ウェブサイトは、World Wide Web Consortium (W3C) やInternet Engineering Task Force (IETF) による統一された標準に従うのではなく、特定のブラウザでのみうまく動作するように設計されることがあります。ウェブサイトには、受信したユーザー エージェント文字列に応じて送信されるページ デザインを調整するために、ブラウザ バージョンを検出するコードが含まれていることがよくあります。これは、人気のないブラウザには複雑なコンテンツが送信されない(正しく処理できる場合でも)か、極端な場合にはすべてのコンテンツが拒否される可能性があることを意味します。[ 9 ]そのため、さまざまなブラウザには、特定のサーバー側コンテンツを強制するために、識別情報を隠蔽または偽装する機能があります。たとえば、Android ブラウザは、互換性を助けるために、 Safari (その他) として識別します。[ 10 ] [ 11 ]
ダウンロードマネージャーやオフラインブラウザなどの他のHTTPクライアントプログラムには、ユーザーエージェント文字列を変更する機能がある場合が多い。
ユーザーエージェントのなりすましによって、ウェブブラウザの使用状況に関する収集統計が不正確になる可能性がある。
ユーザーエージェントスニッフィングとは、特定のユーザーエージェントで閲覧された際に、ウェブサイトが異なるコンテンツや調整されたコンテンツを表示する手法です。その例として、Microsoft Exchange Server 2003 の Outlook Web Access 機能が挙げられます。Internet Explorer 6 以降で閲覧すると、他のブラウザで同じページを閲覧した場合よりも多くの機能が表示されます。ユーザーエージェントスニッフィングは、ブラウザ固有の設計を助長し、認識されないユーザーエージェント識別子によって新しいブラウザに不利益をもたらすため、好ましくない手法とされています。代わりに、W3C は 、できるだけ多くのブラウザで正しくレンダリングできるように標準 HTML マークアップを作成し、特定のブラウザバージョンやブランドではなく、特定のブラウザ機能をテストすることを推奨しています。[ 12 ] [ 13 ]
モバイル端末での表示を想定したウェブサイトは、モバイルブラウザが互いに大きく異なる場合が多いため、ユーザーエージェントの検出に頼ることが多い。
2020年、GoogleはChromeブラウザのUser-Agentヘッダーの一部がブラウザの機能を判断するために使用されなくなり、主に受動的なブラウザフィンガープリンティングに使用されているため、これを凍結すると発表した。[ 14 ] Googleは、 Client Hintsと呼ばれる新機能がユーザーエージェント文字列の機能を置き換えると述べた。[ 15 ]
2023年4月にリリースされたChrome 113以降、User-Agentヘッダーは部分的に固定されました。新しいバージョンのChromeのuser-agentは、使用されているブラウザのメジャーバージョンを表す数字を除いて静的なままです。[ 16 ]
2023 年 2 月にリリースされたFirefox 110から[ 17 ] Mozilla は、ブラウザのユーザー エージェント ストリングの一部をバージョン 109 で一時的に固定すると発表しました。これは、いくつかの Web サイトが、ブラウザの開発バージョン (文字列で識別される) [ 18 ]を、非推奨のInternet Explorer 11 ( を報告する) と誤って認識していたためです。[ 19 ]このバージョンのなりすましは Firefox 120 以降で停止されました。これは、110 から 119 と識別されるブラウザのみがこの問題の影響を受けることが確認されたためです。[ 20 ]Mozilla/5.0 (Windows NT 10.0; Win64; rv:110.0) Gecko/20100101 Firefox/110.0Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1