Me interesa saber si el agente de usuario es "Chrome" en el extremo del servidor usando PHP. ¿Existe una expresión regular confiable para analizar la cadena de agente de usuario desde el encabezado de solicitud?¿Cómo detectar "Google Chrome" como agente de usuario que usa PHP?
Respuesta
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']
.
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
}
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
}
- 1. Agente de usuario extraño con Google Chrome
- 2. Chrome conseguir "agente de usuario de estilo"
- 3. Agente de usuario de Chrome para iOS en el iPad
- 4. Cómo obtener el agente de usuario en PHP
- 5. Imitando al agente de usuario de iPhone en Chrome?
- 6. ¿Agente de usuario móvil Android?
- 7. Agente de usuario WebView
- 8. Cómo construir una extensión de Chrome como Google Hangouts
- 9. Nombre descriptivo de Google que usa OpenID?
- 10. El agente de usuario CURL
- 11. Crear archivo Google Chrome Crx con PHP
- 12. Agente de usuario de iPhone
- 13. Uso de Javascript para detectar Google Chrome para cambiar CSS
- 14. Google Chrome como descargador y el instalador
- 15. ¿Cómo detectar la versión de Chrome instalada?
- 16. Detectando traducción Google Chrome
- 17. ¿Forma segura basada en funciones para detectar Google Chrome con Javascript?
- 18. ¿Qué es la hoja de estilo del agente de usuario
- 19. Depuración de secuencias de comandos del usuario en Google Chrome
- 20. ¿Cómo detectar iOS 6 y todas las versiones menores por agente de usuario?
- 21. ¿Recibe el nombre de usuario de Windows del usuario actual que usa php?
- 22. Detección automática de navegador móvil (¿mediante agente de usuario?)
- 23. Detectar gesto del usuario, como deslizar
- 24. ¿Código para analizar la cadena de agente de usuario?
- 25. Cómo recuperar la cadena de agente de usuario exacta de Google Analytics
- 26. Cómo obtener el nombre de usuario de Windows usando javascript en google chrome browser para google chrome extension
- 27. ID de pestaña única añadida a la cadena de agente de usuario en Chrome para iOS?
- 28. Agente de usuario genérico para Android (UA)
- 29. Detectar enlace visitado en Chrome
- 30. Donde usa Google C#
agradable. Usar ** preg_match ** para detectar Chrome seguramente sería una sobrecarga. –
¿Por qué necesita el '! == falso'? no sería más fácil solo 'if (strpos ($ _ SERVER ['HTTP_USER_AGENT'], 'Chrome'))'? –
@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