ユーザーエージェント

ユーザーエージェント (、）とは、利用者があるプロトコルに基づいてデータを利用する際に用いるソフトウェアまたはハードウェアのこと。
特にHypertext Transfer Protocolを用いてWorld Wide Webにアクセスする、ウェブブラウザなどのソフトウェアのこと。
本項ではHTTPユーザーエージェントについて解説する。
HTTPユーザーエージェント.
HTTPを用いてリソースの取得等を行うユーザーエージェントをHTTPユーザーエージェントと呼ぶ。
HTTPユーザーエージェントには、ウェブブラウザや、リソースを自動的に処理するクローラなどがある。
HTTPリクエストでのUser-Agentヘッダ.
HTTPではUser-Agentヘッダーが定義されている。
クライアントはサーバーにリクエストを送る際に、ユーザーエージェントの情報をUser-Agentヘッダーとして送信する。User-Agentヘッダーには、アプリケーション名、バージョン、ホストオペレーティングシステムや言語といった情報が含まれる。
ウェブクローラーのようなボットの場合は、ウェブ担当者がそのボットのオペレーターと連絡を取ることができるように、URLや電子メールアドレスも含む。
User-Agentヘッダーはサーバ側において様々な用途で利用されている。
アクセス解析をする際に、User-Agentヘッダーによって、ユーザーが使用しているブラウザの種類やバージョンを集計することができる。
またUser-Agentヘッダーを偽装して、「ロボット排除基準」 (robots.txt)を使ってある特定のページあるいはウェブサイトの一部からクローラーを排除するための基準の1つになっている。ウェブ担当者は、特定のクローラーに特定のページを収集させたくない場合や、特定のクローラーがあまりに多くの帯域を消費している場合などに、そのクローラーがそれらのページを訪問しないように要請することができる。
ただし、後述のように、User-Agentヘッダーの値はあくまでクライアント側からの自己申告なので、
実際のユーザーエージェントと異なる値を送信することもできる。
ユーザーエージェント・スニッフィング.
ユーザーエージェント・スニッフィングとは、Webサイトが、ユーザーエージェントによって異なる内容を表示したり、
特定のユーザーエージェントにのみ内容を表示することである。Vivaldiはこのような問題を回避するため、Chromeのユーザーエージェントを使用している。
マイクロソフトのOutlook 2003ウェブアクセスは悪名高い例であった。Internet Explorerで閲覧すると、他ブラウザより多くの機能が表示された。
携帯電話向けのウェブサイトでは、ベンダー間や新旧の機種の間で、携帯電話のブラウザの仕様がしばしば大きく異なるため、ユーザーエージェント・スニッフィングが行われた（後述のようにUser-Agentヘッダーの偽装が容易に可能であるため、IPアドレスをもとに携帯電話か否かを判断していることもあった）。機種間の表示の内容の違いは、小さい（例えば小さいスクリーンに合うように特定の画像のサイズを変える）こともあるし、あるいは非常に大規模のこともあり得る（例えばXHTML の代わりにWMLでページを表現する）。
ユーザーエージェントの偽装.
ユーザーエージェント・スニッフィングを回避するために、User-Agentヘッダーの偽装が行われた。
この最も早い例はInternet Explorerが、 Mozilla/<version> (compatible; MSIE <version>...
で始まるUser-Agentヘッダーの値を使っていたことであろう。「Mozilla」はNetscape Navigatorのコードネームである。これは、その当時のInternet Explorerの主たる競合者だったNetscape Navigator用の内容を受け取るためだった。
その後、ブラウザ戦争においてInternet Explorerのシェアが拡大したために、User-Agentヘッダーの値のフォーマットは、部分的に他のブラウザによってコピーされていった。 
Mozilla Firefox 、 Safari や Opera のようなInternet Explorerの競合製品は、
User-Agentヘッダーなどのをユーザー側の操作で変更できる機能を備えていた。
この機能はInternet Explorer専用に設計されたWebサイトを利用する場合に使用された。
ただし、WebサイトがInternet Explorerの独自機能を使用しているために、User-Agentヘッダーを偽装しても正常に使用できないことも多かった。
Webブラウザ以外に、大部分のダウンロードマネージャーやオフラインブラウザもUser-Agentヘッダーをユーザーの好みに変える機能を持っている。
2020年の時点では、多くのウェブサイトがウェブ標準に従うようになっている。
暗号強度「U」/「I」/「N」.
Netscape、Mozilla、Opera、その他一部のブラウザでは、ブラウザの暗号強度を示すためにU, I, Nの3個の文字を使用する。米国政府は40ビットを越える暗号をアメリカから国外へ輸出することを認めていなかったので、暗号強度が異なるバージョンがリリースされた。
暗号強度はUser-Agentヘッダーで確認できた。「U」は「USA」を表し、128ビットの暗号化を備えたバージョンであることを示す。「I」は「international（国際的）」のiであり、40ビットの暗号化を備えており、世界中のどこでも使用できることを示す。「N」は「none(無し)」を表し、暗号化を行わない。
元は、「U」バージョンはアメリカ国内からのみダウンロードが許可されていたが、その後米国政府が方針を緩めたので、今では高い暗号化をするバージョンがほとんどの国々で許されている。現在では国際版がもはや要求されないので、NetscapeとMozillaは「U」バージョンのみを配布している。