2012/11/15

ユーザーエージェントについて考えてみよう

「UA」という言葉を皆さんは知っていますか?「UA」とは一般的に「ユーザーエージェント」といわれ、ブラウザやクローラーのことを指します。
また、HTTPヘッダに含まれる「User-Agent」欄を指すこともあります。ここでは、後者の「User-Agent」(以下ユーザーエージェント)について、特に利用方法とその信用性についての話をしましょう。UAは個別の情報に近いものがあり、うまく利用すると端末を識別したりすることができます。しかし、最近ではUAを利用しても正しく端末を判定できないことがあるので注意が必要です。








「ユーザーエージェント」を見てみよう

まず、1つ有名な端末の「ユーザーエージェント」を見てみましょう。

Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A405 Safari/8536.25

んー、何やら暗号のような言葉がならんでますね。
でも、よく見ると「iPhone」とか、「OS6.0」という言葉が見えますね。勘が良い人だとわかりますね。この「ユーザーエージェント」は「iPhone5」のものです。


ユーザーエージェントの利用方法

「ユーザーエージェント」に含まれる、皆さんが見つけた端末のキーワード(iPhone, OS6.0など)を利用して、スマートフォン、タブレット、デスクトップの端末の種類を判定します。そして、判定した結果を元にデザインの振分けたりするのに利用します。

非常に便利ですね。これがあれば、デザインを全部の端末ごとに変更ができますね。

ところが、そうはならないのです。



「ユーザーエージェント」は便利だけど信用できない

「ユーザーエージェント」ですが、利用できると便利なのですが、実は偽装したり変更することができるのです。
ブラウザのSafariを利用して簡単にユーザーエージェントを変更することができます。下の図をみましょう。なんと、IE9に変更をすることができます。実は、GoogleのChromeというブラウザでも同じことができます。


ユーザーエージェント変更 Safari
Safari ユーザーエージェント変更

開発者だけだよ、こんなことするの。と思った人もいると思います。今度は、普通に行われている例をお見せしましょう。PlayStaion Vitaというゲーム機をご存知でしょうか?実は、これ検証すると不思議なんです。

Mozilla/5.0 (PlayStation Vita 1.51) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2


どうです?一見するとよさそうでしょ。
でも違うんです。「Silk」という文字列、これAmazon社のKindleのブラウザのキーワードです。A List Apartでも疑問視されているのですが、本当は「NetFront」というブラウザになるはずなのです。不思議ですね。

HTML5テスト
http://html5test.com/results/gaming.html









キーワードがない

「ユーザーエージェント」ですが、中には判別の為のキーワードがない端末があります。

Mozilla/5.0 (DirectFB; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+

上記の「ユーザーエージェント」ですが、さて何の端末でしょう。わからないですね。実はこの端末はLGのスマートTVなんですね。
スマートTVですが、最近では各家電メーカーからでてきましたので、少しずつ流行るかもしれません。その時、「ユーザーエージェント」は利用できないですね。


まとめ

「ユーザーエージェント」という暗号のような文書ですが、色んな情報がつまっています。これがデバイスの個別のものであれば非常に便利です。しかし、「ユーザーエージェント」は残念ながら、個別のIDではなく、また情報も偽装されていたり、肝心な情報が含まれていなかったりとします。もし利用するときは気をつけて利用しましょう。特に「ユーザーエージェント」があればサーバーサイドで何でもできるというのは少し早合点かもしれません。