ユーザーエージェント

出典: Wikipedio


ユーザーエージェント (User agent、略称UA(ユー エー))とは、利用者があるプロトコルに基づいてデータを利用する際に用いるソフトウェアまたはハードウェアを指す。「利用者エージェント」とも言う。

HTTPを用いてWorld Wide Webにアクセスするための「ウェブブラウザ」が代表的なユーザーエージェントの一つであるが、「ユーザーエージェント」という名称はそれに限られるわけではない。例えば、人間が電子メールを送受信する際に用いるユーザーエージェントは、メールユーザーエージェントである<ref>電子メールクライアントや電子メールクライアントと呼ばれることもある。詳細は電子メールクライアントの項目を参照のこと。</ref>。

1つのプロトコルに対応しているユーザーエージェントの中でも、その性質により更に細分化されて名称を使い分けることがある。HTTPユーザーエージェントとして一般的に用いられているものとして前述したウェブブラウザがあるが、その他にも検索エンジンクローラなどが存在する。

本項では、HTTPユーザーエージェントに重点を置いて解説する。

目次

HTTPユーザーエージェント

HTTPを用いてWorld Wide Webにあるリソースの取得等を行うユーザーエージェントをHTTPユーザーエージェントと呼ぶ。HTTPユーザーエージェントには、取得したリソースをHTMLレンダリングエンジンで描画するウェブブラウザやリソースを取得しデータベース化するクローラーなどが存在する。

HTTPリクエストでのUser-Agentヘッダ

HTTPではリクエスト中に、各ユーザーエージェントの識別名をユーザーエージェント文字列として申告する。この文字列には「User-Agent: 」という接頭辞が付いて、HTTPリクエストの一部分を形成する。また一般にアプリケーション名、バージョン、ホストオペレーティングシステムや言語といった情報を含んでいる。ウェブクローラーのようなボットの場合、ウェブ担当者がそのボットのオペレーターと連絡を取ることができるように、ボットはしばしばURLや電子メールアドレスも含む。

その情報はサーバ側において様々な用途で利用されている。一例として、アクセス解析で訪問者が使用しているWebブラウザが何かを判別する根拠とされていることが挙げられる。またユーザーエージェント文字列は、「ロボット排除基準」 (robots.txt)を使ってある特定のページあるいはウェブサイトの一部からクローラーを排除するための基準の1つになっている。こうして、ウェブ担当者が、彼らのウェブサイトのある特定の部分が特定のクローラーの集めるデータに含められるべきでない、あるいは特定のクローラーがあまりに多くの帯域を消費していると感じた場合、そのクローラーがそれらのページを訪問しないように要請することができる。

ただし、ユーザーエージェント文字列はあくまでHTTPクライアント側からの自己申告なので、偽装可能である。一部Webブラウザでは、使用者が簡単にユーザーエージェント文字列を変更できる機能を持つ。

ユーザーエージェントの偽装

歴史上のさまざまな時点において、ウェブの利用は1つのブラウザによって独占されてきたために、多くのウェブサイトが、W3CIETFのような組織が示す標準に従うのではなく、むしろ特定のブラウザだけで動作するように設計されてきた。このようなサイトはしばしば「ブラウザ・スニッフィング」コードを含み、受け取ったユーザーエージェント文字列によって送る情報を変えていた。これはそれほど人気が高くないブラウザは、サイトの内容を正確に扱うことができる場合であっても、複雑な内容を送ってもらえない、極端な場合には全ての内容が拒否されることもあることを意味する。そこで種々のブラウザが、このような検出コードにそれら自身が別の何かであると認知させるためにこの文字列を「覆い隠す」か、あるいは「偽装」する。しばしば、ブラウザの本当の正体はその後の文字列に含められる。

この最も早い例は、Microsoft Internet Explorer(以下、Internet Explorerと記す)で

Mozilla/<version> (compatible; MSIE <version>...

で始まるユーザーエージェント文字列を使っていたことである<ref>ここでいうMozillaはNetscape Navigatorのコードネームである。その後、オープンソースソフトウェアとして公開されたMozillaとは別のものであることには注意。</ref>。これは、その開発当時Internet Explorerの主たる競合者だったNetscape Navigator用に設計された内容を受け取るためだった。その後、ブラウザ戦争においてMicrosoft Internet Explorerが優位を占めて来たために、このユーザーエージェント文字列のフォーマットは、部分的に他のユーザーエージェントによってコピーされていった。

Internet Explorerが市場のトップシェアを占めたとき、 Mozilla FirefoxSafariOpera のようなライバルは、Internet Explorerの最新版を装うなど、ユーザーエージェントなどの情報をユーザー側の操作で変更できるシステムを採用した。例えば Firefox や Safari のような一部のブラウザはそれらが偽装しようとしているユーザーエージェント文字列を正確に複写する(Mozilla Firefoxの場合デフォルトでは詳細な設定値を直接変更しなければならないが、User Agent Switcherという拡張機能によりメニューからユーザーエージェントの設定を操作することが出来るようになる)。この方法を用いることでInternet Explorerではないブラウザの利用を拒むサイトも一部閲覧できるようになる場合がある<ref>ただし機能をInternet Explorerに特化させている場合があるため必ずしも正常に利用できるとは限らず、閲覧は出来ても主な機能はInternet Explorerでしか利用できないと言ったケースも存在する</ref>。

また、Operaの場合偽装時にはユーザーエージェント文字列を複写するが、その文字列の最後に本物のブラウザ名を加える。後者のアプローチでは、当然ながら文字列は3つの名前とバージョンを含んでいることになる。最初に、ユーザーエージェントは「Mozilla」(すなわちNetscape Navigator)、それから、「MSIE」(Internet Explorer)、そして最後に「Opera」のような本当の正体を主張する。ただしこの方法では末尾のOperaという文字列を検索されInternet Explorerではないと判別されるケースがあるため、完全にInternet Explorerとして偽装する機能がバージョン8まで隠し機能として装備されており、バージョン9以降ではGUIからの操作機能が加わった。

これらの動きに対抗し、MozillaGecko系ユーザーエージェントの識別に「Gecko」の文字列を使用することを決定し、この文字列をユーザーエージェント名に使用しないように通達を出した。しかし、この通達はSafariによって破られた。Mozilla FirefoxSeaMonkeyではユーザーエージェント名の最後にソフトウェア名を入れることでユーザーエージェント名を識別するようにしている。

上述のとおりSafariをはじめとするWebKit系ブラウザはMozillaを偽装している。この行為はMozilla陣営はもちろんのことKonquerorをはじめとするKHTML陣営からも批判が相次いだが、最終的にはKonquerorもSafariの動きに同調した。

このようなユーザーエージェント偽装が一般に広く普及しているため、ブラウザが偽装するユーザーエージェントであるInternet Explorerの使用シェアが過大に見積もられ、そして他のブラウザの使用シェアが過小評価されているのではないかという見方もある。

Webブラウザ以外でも、大部分のダウンロードマネージャーオフラインブラウザのように HTTP を利用しているプログラムは、同様にサーバに送られるユーザーエージェント文字列をユーザーの好みに変える機能を持っている。これは恐らく、ある特定のサーバとの互換性を維持するための工夫である。こうしたプログラムはたいてい不注意に使われサーバに重い負荷を与えるために、一部のサーバは直ちにそれらのプログラムをサポートすることを拒否したためである。


2005年の時点で、ウェブの歴史上の他のいかなる時よりも多くのウェブサイトがウェブ標準に従うようになっている。 しかしながら、Internet Explorer以外のブラウザやナビゲータを締め出す旧式のJavaScriptが未だに使われている(特に小さい、非企業のウェブサイトにおいて)。これはしばしば、カーゴカルトプログラミング(コードが実際にウェブサイトに何の効果を与えるかを理解せずに、以前のコードをコピー・ペーストすること)が原因である<ref>訳注:カーゴカルトとは、第二次世界大戦中アメリカ兵が南洋の島に航空基地を作り輸送機から多くの荷物を受け取るのを見た原住民が、それを神からの贈り物を受け取っているのだと思い込み、アメリカ兵の訓練や装備、滑走路を形だけ真似て神の恵みを求めて祈ったという逸話を指す。→リチャード・P・ファインマン(en:Cargo cult programming)</ref>。

自己表現としてのユーザーエージェント偽装

一種の自己表現として用いられているケースも散見される。

ユーザーエージェント・スニッフィング

ユーザーエージェント・スニッフィングとは、特定のユーザーエージェントで閲覧すると異なった内容を示すウェブサイトを指す。インターネットでは、特定のブラウザでページを閲覧すると異なる結果が表示されるという結果になるだろう(例えば Microsoft Internet Explorer)。この悪名高い例は、マイクロソフトのOutlook 2003ウェブアクセスである。Internet Explorerで閲覧すると、他のいかなるブラウザと比較してもずっと多くの機能性が示されるのである。ユーザーエージェント・スニッフィングを使うとブラウザに特化したデザインを奨励することになるので、たいていユーザーエージェント・スニッフィングは好ましくない行為であると見なされる。多くのウェブ担当者が、可能な限り多くのブラウザで正しいレンダリングできるように、可能な限り標準化されたHTMLマークアップを使うことが推奨される。しかし日本国内ではマイクロソフトのプロダクトへの依存度が高いため<ref>http://internet.watch.impress.co.jp/cda/news/2005/05/13/7593.html</ref>IEに特化されたサイトがまだまだ多いというのが現状である。

携帯電話向けのウェブサイト(特にNTTドコモのiモードKDDIEZwebSoftBankYahoo!ケータイのような)では、携帯電話のブラウザがしばしば互いに大きく異なるために、しばしば頻繁にユーザーエージェント・スニッフィングに大いに頼っている(前述のようにユーザーエージェントの偽装が容易に可能であるという理由から、ユーザーエージェントに依存せず接続されたIPアドレスをもとに携帯電話か否かを判断していることも多い)。ここ数年で携帯端末からの閲覧において多くの開発がなされた一方で、これらの新しい技術を持たない多くのより古い電話がまだ頻繁に使われている。従って、携帯端末向けのウェブポータルは、しばしばそれらを閲覧するために使った携帯電話によって完全に異なったマークアップ・コードを生成する。これらの相違は、小さい(例えば小さいスクリーンに合うように特定の画像のサイズを変える)こともあるし、あるいは非常に大規模のこともあり得る(例えばXHTML の代わりにWMLでページを表現する)。

ウェブアプリケーションの中でユーザーエージェント・スニッフィングを行うには数多くの方法がある。これには、パブリックドメインスクリプトや、BrowserHawk のような商業製品を使うことが含まれる。

ユーザーエージェント文字列の例

ブラウザ

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
  • Internet Explorer 8 (Windows XP)ならば、
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729
互換モードの場合は、
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
  • Firefox 2 (Windows XP)ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
  • Firefox 3 (Windows XP)ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
  • Firefox3.6 (Windows XP)ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)
  • Opera 9.21 (Windows XP)ならば、
Opera/9.21 (Windows NT 5.1; U; ja)
Internet Explorerとして認識させるようにした場合は
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.21
  • Opera 10.00 (Windows Vista)ならば、
Opera/9.80 (Windows NT 6.0; U; ja) Presto/2.2.15 Version/10.00
Internet Explorerとして認識させるようにした場合は
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; ja) Opera 10.00
  • Opera 10.53 (Windows XP)ならば、
Opera/9.80 (Windows NT 5.1; U; ja) Presto/2.5.24 Version/10.53
Internet Explorerとして認識させるようにした場合は
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ja) Opera 10.53
Firefoxとして認識させるようにした場合は
Mozilla/5.0 (Windows NT 5.1; U; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53
  • Safari 3.1 (Windows XP)ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21
  • Safari 4.0 (Windows XP)ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.0.1) Gecko/20020823 Netscape/7.0
  • Netscape 8ならば、
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.5) Gecko/20051012 Netscape/8.0.4
Tridentエンジン(IEコンポーネント)を使用した場合は、
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Netscape/8.0.4
Opera/9.10 (Nintendo Wii; U; ; 1621; ja)

ここに示したのはあくまで一例であり、同一のブラウザであっても使用しているOSの種類やバージョンなどにより違うものとなる。また、IEコンポーネントブラウザはInternet Explorerのユーザーエージェント文字列の末尾にそのブラウザ名を追加する場合がある。

携帯電話

モバイルブラウザ

DoCoMo/2.0 F903iX(c100;TB;W28H15)
KDDI-HI35 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0
SoftBank/1.0/910SH/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
Mozilla/3.0(WILLCOM;KYOCERA/WX331K/2;1.0.2.13.000000/0.1/C100) Opera 7.2 EX
emobile/1.0.0 (H11T; like Gecko; Wireless) NetFront/3.4

フルブラウザ

Mozilla/4.08 (F903iX;FOMA;C500;TB)
Mozilla/4.0 (compatible; MSIE 6.0; KDDI-HI35) Opera 7.60 [ja]
Mozilla/4.08 (910SH;SoftBank[;Serial]) NetFront/3.3
  • ウィルコムならば、
Mozilla/4.0 (compatible; MSIE 6.0; KYOCERA/WX331K/2;1.0.2.13.000000/0.1) Opera 7.2 EX [ja]
  • イー・モバイルならば、
Mozilla/5.0 (H11T; like Gecko; OpenBrowser) NetFront/3.4

変換サイト系ブラウザ

Mozilla/5.0 (compatible; KZ BRAIN Mobile; http://servermobile.net) @xxx.xxx.xxx.xxx
@以降はアクセス元のIPアドレスが表示される。また、ユーザーエージェントを切り替える機能を実装している。

スマートフォン

Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)
NetFrontからアクセスした場合は、
Mozilla/5.0 (PDA; NF35WMPRO/3.2; like Gecko) NetFront/3.5 T-01A_6.5
Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEriccsonSO-01B Build/R1EA018) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
BlackBerry9000/4.6.0.224 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/220
Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Motorola M1000;811) Opera 7.50 [ja]./M1000./1.0
  • Symbian(S60)ならば、
Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/20.0.273 Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413 Nokia/X02NK
Mozilla/5.0 (webOS/1.1; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0

インターネットボット

  • Accoona — Accoona-AI-Agent/1.1.2 (aicrawler at accoonabot dot com)
  • Alexa — ia_archiver
  • Ask.com/Teoma — Mozilla/2.0 (compatible; Ask Jeeves/Teoma)
  • Baidu Spider — Baiduspider ( http://www.baidu.com/search/spider.htm)
  • cURL on Mac OS X for PowerPC (public) — curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7b zlib/1.2.2
  • GameSpy HTTP (GameSpy) — GameSpyHTTP/1.0
  • Gigabot (Gigablast) — Gigabot/2.0
  • Googlebot (Google) — Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Grub (usage: public) (owner: LookSmart) — Mozilla/4.0 (compatible; grub-client-1.4.3; Crawl your own stuff with http://grub.org) Mozilla/4.0 (compatible; grub-client-2.3)
  • Inktomi Slurp (superseded by Yahoo! Slurp) — Mozilla/3.0 (Slurp/si; slurp@inktomi.com; http://www.inktomi.com/slurp.html)
  • msnbot (Microsoft's MSN Search) — msnbot/1.0 (+http://search.msn.com/msnbot.htm)
  • OmniExplorer_Bot (Feeds Vast.com) — OmniExplorer_Bot/6.70 (+http://www.omni-explorer.com) WorldIndexer
  • Scooter (AltaVista) — Scooter-3.2.EX
  • W3C Validator — W3C_Validator/1.432.2.10
  • W3C CSS Validator — Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0
  • wget (public) — Wget/1.9
  • Yahoo! Slurp (Yahoo! Search) — Mozilla/5.0 (compatible; Yahoo!Slurp;http://help.yahoo.com/help/us/ysearch/slurp) —もしくは Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)
  • Yahoo!-MMCrawler (Yahoo! Search) — Yahoo!-MMCrawler/3.x (mms dash mmcrawler dash support at yahoo dash inc dot com)

暗号強度「U」/「I」/「N」

Netscape、Mozilla、Opera、その他一部のブラウザでは、ブラウザの暗号強度を示すためにU, I, Nの3個の文字を使用する。米国政府は40ビットを越える暗号をアメリカから国外へ輸出することを認めないので、暗号強度が異なるさまざまなバージョンがリリースされた。「U」は「USA」を表わし、128ビットの暗号化を備えたバージョンであることを示す。「I」は「international(国際的)」のiであり、40ビットの暗号化を備えており、世界中のどこでも使用できることを示す。「N」は「none(無し)」を表わし、暗号化を行わない。もとは、「U」バージョンはアメリカ国内からのみダウンロードが許可されていたが、その後米国政府が方針を緩めたので、今では高い暗号化をするバージョンがほとんどの国々で許されている。現在では国際版がもはや要求されないので、NetscapeとMozillaは「U」バージョンのみを配布している。

関連項目

脚注

Template:脚注ヘルプ <references />

外部リンク

en:User agent es:Agente de usuario fr:User-Agent it:User agent nl:Useragent pl:User agent ru:User Agent

個人用ツール