web-dev-qa-db-ja.com

PHPを使用して「Google Chrome」をユーザーエージェントとして検出する方法

PHPを使用して、サーバー側でユーザーエージェントが「Chrome」であるかどうかを知りたいです。リクエストヘッダーからユーザーエージェント文字列を解析するための信頼できる正規表現はありますか?

20
Xubin

この時点で、あまりにも多くのブラウザが、その人気に乗るため、および「Chrome」の単純な一致を有効にするためのブラウザ検出の悪用と闘うために、Chromeになりすましています。機能の検出は今後も推奨されますが、Chrome(およびWebKit/Blink全般)は、機能の検出メカニズムに嘘をついていることでも悪名高いので、それでも、もうどちらか。

私は、既知のUA文字列をサードパーティのサイトを介して他のブラウザーの文字列と比較し、そこからパターンを作成することによって、物事を常に把握することをお勧めできます。これを行う方法は、文字列自体に完全に依存します。ブラウザとUA文字列の性質上、それらを照合するための「信頼できる」正規表現はあり得ないことに注意してください。

PHPでは、関連するサーバー変数は$_SERVER['HTTP_USER_AGENT']

29
BoltClock

Chromeも含める場合は、 "CriOS"と照合する必要があることにも言及しておく価値があります。

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false
 || strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) {
    // User agent is Google Chrome
}
16
Adam

@Adamsの回答に基づいて、Googleをより正確に検出Chrome seragentstring.com および dger .com

if(preg_match('/(Chrome|CriOS)\//i',$_SERVER['HTTP_USER_AGENT'])
 && !preg_match('/(Aviator|ChromePlus|coc_|Dragon|Edge|Flock|Iron|Kinza|Maxthon|MxNitro|Nichrome|OPR|Perk|Rockmelt|Seznam|Sleipnir|Spark|UBrowser|Vivaldi|WebExplorer|YaBrowser)/i',$_SERVER['HTTP_USER_AGENT'])){
    // Browser might be Google Chrome
}
7
Leia