Perl のCGIで 携帯電話 3キャリアの端末を判別する方法を解説します。
2006年10月から Vodafone が Softbank に変わったことにより、従来より分岐が増えました。
携帯 3キャリア判別 サンプルコード
sub get_carrier{
my $ua = $ENV{HTTP_USER_AGENT};
$ua or return '不明';
$ua =~ /^DoCoMo/ and return 'i-mode';
$ua =~ /^KDDI/ and return 'EZ Web';
$ua =~ /^Vodafone/ and return 'Softbank(旧 Vodafone 3G)';
$ua =~ /^J-PHONE/ and return 'Softbank(旧 Vodafone)';
$ua =~ /^SoftBank/ and return 'Softbank';
$ua =~ /^UP\.Browser/ and return 'EZ Web(旧世代)'; #HDML
$ua =~ /Windows|Mozilla|MSIE|Macintosh|PowerPC| (実際には空白を空けずに1行で記載)
Opera|Mac|Netscape|Safari|Lunascape|Sleipnir/ and return 'PC クライアント';
return '不明';
}
my $carrier = &get_carrier;
print 'お使いの端末は '.$carrier.' と判別されました。';
判別の対象
ブラウザを判別する材料は環境変数 $ENV{HTTP_USER_AGENT} に格納されている値です。
この値は、http(https)通信を行う時にクライアントブラウザが通常送信してくるもので、「ユーザエージェント」情報と呼ばれます。
ブラウザが送ってくる値なのでこれは詐称する事も可能で、詐称された場合はCGIプログラム側ではそれを見抜く方法は有りません。
また、キャリアが提供するシミュレータには実際の端末の場合とは異なるユーザエージェント情報を送信するものもあり、この場合、シミュレータでは正常なキャリア判別の検証ができません。