Kenji Suzuki
kenji****@gmail*****
2010年 2月 13日 (土) 11:01:04 JST
Kenji です。 On Sat, 13 Feb 2010 03:42:46 +0900 <webma****@cilab*****> wrote: > cilabです。 > > > CI1.7.2の User_Agent ライブラリの is_robot() についてなのです > が、Googleボットなどがロボットとして判別されず困っています。 > > application/config/user_agents.phpは、日本語パック1.7.2のも > のをデフォルトのまま変えず、そのまま使用しています。 > > ※ よくアクセスしてくるボットを概ね判別できれば問題ないのです > が、ボットの定義は後日書き足すつもりです。 > > > うまく動かない原因を見ていたのですが、User_Agent ライブラリでは、 > コンストラクタの中で呼ばれる_compile_data()メソッドで、 > browser、robot、mobileの順にユーザエージェントを判別して、判別 > 成功した時点で処理中断。browser判別成功の場合だけは、mobileも > 続けて判別というようになっているように見えます。 > > > GoogleボットのUserAgentは、一例で下のようなものですが、 > > Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) > > > デフォルトの設定(application/config/user_agents.php)では、 > > > $browsers = array( > 'Opera' => 'Opera', > … > 'Mozilla' => 'Mozilla', > … > ); > > > というようになっているので、「Mozilla」を含むGoogleボットの > UserAgent文字列は 最初に、is_browser == TRUE と判断されて、 > robotの判別をする前に処理を終えてしまうように思えます。 > > ひとまず、ライブラリを拡張・オーバーライドで、robotを先に検 > 出するようにして問題が回避できているようなのですが、文字列の > パターンマッチが絡んでくると思わぬ見落としがありそうで、確 > 信が持てず…このやり方で大丈夫でしょうか? > > これは、バグでしょうか? それとも、デフォルトの設定の問題? > 単に何か見落としがあるだけかもしれません… 詳しく見ていませんが、確かにそのようなロジックになっていたと 思いますので、ロジックの仕様に問題がありそうですね。 影響範囲が広いので、本家フォーラムかバグトラッカーになにか 出てませんでしょうか? もしなければ、詳細を調査して、本家フォーラムに投げた方が よさそうですね。 // Kenji > 皆様のお知恵をお貸しください。 > > > ──────────── > CILab > webma****@cilab***** > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users