=encoding euc-jp =head1 名前 HTTP::BrowserDetect - HTTPユーザー・エージェント文字列からWebブラウザ、 そのバージョンやプラットホームを判定します。 =head1 概要 use HTTP::BrowserDetect; my $browser = new HTTP::BrowserDetect($user_agent_string); # オペレーティング・システムの判定 if ($browser->windows) { if ($browser->winnt) ... if ($brorwser->win95) ... } print $browser->mac; # ブラウザのベンダーとバージョンを判定 print $browser->netscape; print $browser->ie; if (browser->major(4)) { if ($browser->minor() > .5) { ... } } if ($browser->version() > 4) { ...; } # 違うユーザー・エージェント文字列を処理 $browser->user_agent($another_user_agent_string); =head1 説明 HTTP::BrowserDetectオブジェクトはHTTPユーザー・エージェント文字列に 数多くのテストを行います。これらのテストの結果はオブジェクトのメソッドを 通して利用することができます。 このモジュールは下記から利用することができる、JavaScriptブラウザ判定 コードをベースにしています: B. =head2 新しいブラウザ判定オブジェクトを生成し、ユーザー・エージェント文字列を設定 =over 4 =item new HTTP::BrowserDetect($user_agent_string) コンストラクタをユーザー・エージェント文字列を指定して呼び出すことが出来ます。 そうでなければ、CGIスクリプトを呼び出したときWebサーバーによって設定される $ENV{'HTTP_USER_AGENT'}によって指定される値を利用します。 オブジェクト指向ではないインターフェースも使うことが出来ます。 各メソッドを、HTTP::BrowserDetect::メソッド名()で呼ぶことが出来ます。 こうすると見えないところで作成されるデフォルトのHTTP::BrowserDetect オブジェクトで作業することになります。 =item user_agent($user_agent_string) ユーザー・エージェント文字列を返します。パラメータ付きで呼びだすと、 ユーザー・エージェントをリセットし、その文字列を再度テストします。 こうすると、毎回、新しいHTTP::BrowserDetectオブジェクトを 作成することなく、(おそらくログファイルからの)一連の ユーザー・エージェント文字列を処理することが出来ます。 =back =head2 ブラウザのバージョンを判定 =over 4 =item major($major) ブラウザ・バージョンの整数部分を返します。 パラメータを渡されると、ブラウザのメジャー・バージョンと同じであれば trueを返します。 =item minor($minor) ブラウザ・バージョンの小数部分を、1より小さいB<浮動小数点数値>で返します。 例えばバージョンが4.05であれば、このメソッドは.05を返します;もしバージョンが4.5であれば、 このメソッドは.5を返します。 B<文字列で返していた前のバージョンからは、ここは動きが変更されています。> パラメータが渡されると、マイナー・バージョンと同じであればtrueを返します。 'Wget/1.4.5'のように、バージョンが複数の小数点を持っている場合、 マイナー・バージョンは2番目の小数点やそこから先の数字や小数点を含みません。 =item version($version) 浮動小数点数でバージョンを返します。パラメータが渡されると、 ユーザー・エージェント文字列によって指定されたバージョンと同じであれば trueを返します。 =item beta($beta) バージョン番号の後ろの数値でない文字で構成される、ベータ・バージョンを 返します。例えばユーザー・エージェント文字列が 'Mozilla/4.0 (compatible; MSIE 5.0b2; Windows NT)'であれば、 'b2'を返します。パラメータが渡されると、 ベータ・バージョンと同じであればtrueを返します。 =back =head2 OSプラットホームとバージョンの判定 以下のメソッドを利用することが出来ます。それぞれはtrueまたはfalseを返します。 いくつかのメソッドはオペレーティング・システムのバージョンのための テストも行います。 windows win16 win3x win31 win95 win98 winnt win32 win2k winme mac mac68k macppc os2 unix sun sun4 sun5 suni86 irix irix5 irix6 hpux hpux9 hpux10 aix aix1 aix2 aix3 aix4 linux sco unixware mpras reliant dec sinix freebsd bsd vms amiga Netscape 4.x以前ではWin98を判定できないかもしれません。Opera 3.0では、 全てのWin32で、ユーザー・エージェント文字列に"Windows 95/NT4"と入っています。 そのためWin95とWinNTを区別することはできません。 =over =item os_string() 以下の文字列のいずれか、あるいはundefを返します。このメソッドはB モジュールとの互換性のためだけに存在しています。 Win95, Win98, WinNT, Mac, Win3x, OS2, Unix, Linux =back =head2 ブラウザ・ベンダーの判定 以下のメソッドを利用することが出来ます。それぞれはtrueまたはfalseを返します。 いくつかのメソッドは、バージョンを別にチェックすることを節約しながら、 ブラウザのバージョンのためのテストも行います。 netscape nav2 nav3 nav4 nav4up nav45 nav45up navgold nav6 nav6up gecko ie ie3 ie4 ie4up ie5 ie55 neoplanet neoplanet2 mosaic aol aol3 aol4 aol5 aol6 webtv opera lynx emacs staroffice lotusnotes icab konqueror java たとえ6とそれが呼ばれていたとしても、Netscape 6はユーザー・エージェント文字列には バージョン番号として5を持っています。nav6 と nav6up はこのクセを正しく扱います。 =over =item browser_string() 以下の文字列のいずれか、あるいはundefを返します。 Netscape, MSIE, WebTV, AOL Browser, Opera, Mosaic, Lynx =back =head2 他のデバイスの判定 以下のメソッドを利用することが出来ます。それぞれはtrueまたはfalseを返します。 wap audrey iopener palm avantgo =head2 ロボットの判定 =over =item robot() もしユーザー・エージェントがロボット、スパイダー、クローラあるいは他の 自動化されたWebクライアントのように見えたら、trueを返します。 以下の追加のメソッドを利用することが出来ます。それぞれはtrueまたはfalseを返します。 これがWeb上に存在するロボットの完全なリストというわけでは決してありません。 wget getright yahoo altavista lycos infoseek lwp webcrawler linkexchange slurp google =back =head1 作者 Lee Semel, lee@semel.net =head1 参考資料 "The Ultimate JavaScript Client Sniffer, Version 3.0", B. perl(1), L, L. =head1 著作権(COPYRIGHT) Copyright 1999-2001 Lee Semel. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.