2010-06-15 8 views

Respuesta

27

En este punto, muchos navegadores pretenden ser Chrome para aprovechar su popularidad, así como combatir el uso indebido de la detección de navegadores para que una simple coincidencia entre "Chrome" sea efectiva. Recomendaría la detección de funciones en el futuro, pero Chrome (y WebKit/Blink en general) es famoso por sus mecanismos de detección de funciones, por lo que incluso eso ya no es tan bueno como parece.

Solo puedo recomendar estar al tanto de las cosas al comparar sus cadenas conocidas de UA con las de otros navegadores a través de sitios de terceros, y crear patrones desde allí. Cómo lo haces depende completamente de las cadenas en sí. Solo tenga en cuenta que, debido a la naturaleza de los navegadores y cadenas de caracteres UA, nunca puede haber una expresión regular "confiable" para emparejarlos.

En PHP, el servidor relevante var es $_SERVER['HTTP_USER_AGENT'].

+1

agradable. Usar ** preg_match ** para detectar Chrome seguramente sería una sobrecarga. –

+0

¿Por qué necesita el '! == falso'? no sería más fácil solo 'if (strpos ($ _ SERVER ['HTTP_USER_AGENT'], 'Chrome'))'? –

+7

@Tuga: si la cadena comienza con ''Chrome'',' strpos() 'devuelve 0. Como' 0 == falso', el código if no se ejecutará, pero usted lo desea. La función devuelve un 'falso' real si la cadena no se encuentra, por lo que debe compararla por tipo con'! == falso'. Esta es también la razón por la que tu respuesta es incorrecta. – BoltClock

16

Vale la pena mencionar que si usted también quiere incluir Chrome para iOS, que tendrá que coincidir en contra de "CRIOS", así:

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

Basándose en @Adams respuesta, detectar con mayor precisión Google Chrome por excluir a algunos con navegadores "cromo" en la cadena de agente de usuario mediante useragentstring.com y udger.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 
} 
Cuestiones relacionadas