OSやブラウザ情報は環境変数$ENV{'HTTP_USER_AGENT'}に格納されます。
これを取り出す事によって閲覧者のOSやブラウザ情報を知る事が出来ます。
以下にOSやブラウザの判定例を示します。
OSが同じでも使用するブラウザが違うとOS情報が例えば「Windows 95」と格納されたり「Win 95」と格納されたりしますので注意が必要です。
多数のアクセスログを解析してみて効率の良い判定方法を検討してみて下さい。
|
|
# ユーザ情報の取得
$agent = $ENV{'HTTP_USER_AGENT'};
|
|
# OS判定
if ($agent =~ /Win.*95/i) {
$os = 'Windows95';
} elsif ($agent =~ /Win.*9x/i) {
$os = 'WindowsMe';
} elsif ($agent =~ /Win.*98/i) {
$os = 'Windows98';
} elsif ($agent =~ /Win.*NT 5\.0/i || $agent =~ /Win.*2000/i) {
$os = 'Windows2000';
} elsif ($agent =~ /Win.*NT 5\.1/i || $agent =~ /Win.*XP/i) {
$os = 'WindowsXP';
} elsif ($agent =~ /Win.*NT 6\.0/i || $agent =~ /Vista/i) {
$os = 'WindowsVista';
} elsif ($agent =~ /Win.*NT/i) {
$os = 'WindowsNT';
} elsif ($agent =~ /Linux/i) {
$os = 'Linux';
} elsif ($agent =~ /DoCoMo/i) {
$os = 'DoCoMo';
} elsif ($agent =~ /J-PHONE/i || $agent =~ /Vodafone/i || $agent =~ /MOT-/i || $agent =~ /SoftBank/i) {
$os = 'SoftBank';
} elsif ($agent =~ /UP\.Browser/i) {
$os = 'au';
} elsif ($agent =~ /Trend Micro/i) {
$os = 'TrendMicro';
} elsif ($agent =~ /Mac/i) {
$os = 'MacintoshOS';
} else { $os = 'Others'; }
|
|
# ブラウザ判定
if ($agent =~ /Opera/i) {
$browser = 'Opera'; # IEの偽装情報を格納する場合がある為IEより前に判定
} elsif ($agent =~ /MSIE 5/i) {
$browser = 'MsIE5';
} elsif ($agent =~ /MSIE 6/i) {
$browser = 'MsIE6';
} elsif ($agent =~ /MSIE 7/i) {
$browser = 'MsIE7';
} elsif ($agent =~ /DoCoMo/i) {
$browser = 'DoCoMo';
} elsif ($agent =~ /J-PHONE/i || $agent =~ /Vodafone/i || $agent =~ /MOT-/i || $agent =~ /SoftBank/i) {
$browser = 'SoftBank';
} elsif ($agent =~ /UP\.Browser/i) {
$browser = 'au'; # SoftBankの1部機種にも搭載の為SoftBankより後に判定
} elsif ($agent =~ /Netscape6/i) {
$browser = 'Netscape6';
} elsif ($agent =~ /Netscape\/7/i) {
$browser = 'Netscape7';
} elsif ($agent =~ /Netscape\/8/i) {
$browser = 'Netscape8';
} elsif ($agent =~ /Safari/i) {
$browser = 'Safari';
} elsif ($agent =~ /Firefox/i) {
$browser = 'Firefox';
} elsif ($agent =~ /Gecko/i) {
$browser = 'Gecko';
} elsif ($agent =~ /Mozilla\/4/i) {
$browser = 'Mozilla4';
} else { $browser = 'Others'; }
|
|
■補足
プロキシサーバなどを使用する事により$ENV{'HTTP_USER_AGENT'}に格納する情報は簡単に偽装出来ますので、$ENV{'HTTP_USER_AGENT'}で得られる情報が正しいものとは限りません。
|
|
□更新履歴
2007.05.27 WindowsVistaとMsIE7の解析追加
2007.04.22 全体的に内容を見直し
2006.12.10 判定方法の更新
2006.11.24 補足を追加
|
|
|