ユーザーエージェントとは?

ユーザーエージェントとは?

From: リナックスアカデミー 松田航
新宿本校にて、、、

「エージェント(代理)」

というと、
プロスポーツにおける
代理人を想像してしまいますが、

Webの世界でも
エージェントが使われています。

今回は
Web技術における

「ユーザーエージェント」

…についてご紹介します。

ユーザーエージェントって何ですか?

Webサーバーは
ブラウザからの要求に対して

処理した結果を
Webページとして表示します。

このやりとりの際、
あなたが使っている
ブラウザの種類やバージョンを

Webサーバーが
把握しているということを
ご存知でしょうか?

実は各ブラウザには…

「ユーザーエージェント」

と呼ばれる固有の設定があり、
HTTPでWebに接続する際の情報に
ユーザーエージェントが含まれているのです。

このユーザーエージェントでは
あなたが…

・どのブラウザを使っているか?
・ブラウザのバージョンはいくつか?
・PCのOSは何か?

…といった情報が含まれておいあす。

Webサーバーでは
送られた情報をもとにして、
ブラウザに最適な方法でページを表示します。

たとえば…

スマホから
Webページにアクセスすると

自動的に
スマホ用サイトに移動することがありますが、

これはユーザーエージェントを判定して、
スマホからのアクセスの場合には
スマホ用サイトに遷移するようにしているためです。

ユーザーエージェントの例

各ブラウザ別に
ユーザーエージェントの例を見てみましょう。

■Internet Explorer

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

■Google Chrome

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36

■Firefox

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Firefox 14.0 Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Mozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0

■Android Mobile Safari

Mozilla/5.0 (Linux; U; Android 3.2; ja-jp; A01SH Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1
zilla/5.0 (Linux; U; Android 4.0.3; ja-jp; URBANO PROGRESSO Build/010.0.3000) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; Android 4.2.2; ja-jp; SC-04E Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

これらのは
ほんの一例ですが、

ブラウザの種類や
バージョンにより違いがあります。

また、
使用している端末のOSや
32bitマシンか64ビットマシンかによっても
ユーザーエージェントは変わります。

このように
ユーザーエージェントは

使用している環境によって
細かく分けられており、

この情報をもとに
Webサーバーのアクセス解析が行われます。

例えばWebサイトが…

・どのブラウザでよく閲覧されるか?
・どのOSからアクセスされているのか?
・PC、スマホのどちらからのアクセスが多いか?

…などといった
統計を取る事ができるのです。

ユーザーエージェントの偽装って?

ユーザーエージェントは
使っているWebブラウザから
Webサーバーに向けて、

「こういう端末でアクセスしていますよ」

といった、
いわば自己紹介のようなものです。

この自己紹介を
エージェント(代理人)が
行ってくれているといったイメージですね。

しかし、
このユーザーエージェントですが、

偽の情報を
設定することもできてしまいます。

偽のユーザーエージェントで
Webサーバーにアクセスすることを…

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

と言い、
偽装されてしまうと
Webサーバーは正しいアクセス解析ができなかったり、

本来公開したくない環境に対して
Webページを見せたりしてしまいます。

例えば
スマホ専用のサイトを
PCから閲覧するような場合ですね。

サイト管理者は
スマホだけをターゲットにして
Webサーバーを公開しているにもかかわらず、

「スマホからアクセスしています」

…とユーザーエージェントを偽装した
PCから閲覧されてしまうと迷惑ですよね。

運営側にとっては
偽装されるとデメリットが大きいので、
偽装対策の技術も進んでいます。

ユーザーエージェントを偽装すると
サービス提供側から罰則を受けるケースもありますので、
決して行ってはいけません。

バージョンアップ情報に注意しよう

ユーザーエージェントは
ブラウザのバージョンにより変わりますが、

場合によっては
大きく変わるケースもあります。

例えば、
あるWebサイトで
特定のブラウザからのアクセスを禁止している場合、

ユーザーエージェントから
ブラウザを判定しますが…

新しいバージョンの
ユーザーエージェントに対応しきれず
ブラウザを判定できない場合もあります。

そのため、
Webアプリの開発エンジニアは、

ブラウザのバージョンアップ情報などを
把握しておくことが必要です。

ソフトウェアエンジニアであれ
インフラエンジニアであれ、

使用している
アプリケーションには
バージョンアップはつきものです。

バージョンアップしたら
動作しなくなったということがないように、

バージョンアップ情報などは
しっかりと把握するようにしましょう。

リナックスアカデミー
松田

PS

Webアプリケーションを開発するプログラミングの講座