Мне интересно узнать, является ли пользовательский агент «Chrome» на сервере с использованием PHP. Существует ли надежное регулярное выражение для разбора строки пользовательского агента из заголовка запроса?
На данный момент слишком много браузеров притворяются Chrome, чтобы использовать его популярность, а также бороться с злоупотреблениями браузером для простого совпадения для «Chrome», чтобы быть эффективными больше. Я бы порекомендовал функцию обнаружения функций в будущем, но Chrome (и WebKit / Blink в целом) печально известен тем, что лгал, чтобы также обнаруживать механизмы обнаружения, поэтому даже это не так здорово, как и раньше.
Я могу только рекомендовать оставаться на вершине вещей, сравнивая свои известные строки UA с таковыми из других браузеров через сторонние сайты и создавая шаблоны оттуда. Как вы это делаете, это полностью зависит от самих строк. Просто имейте в виду, что из-за характера браузеров и строк UA никогда не может быть «надежным» регулярным выражением для их сопоставления.
В PHP соответствующий сервер var равен $_SERVER['HTTP_USER_AGENT']
.
Стоит упомянуть, что если вы также хотите включить Chrome для iOS, вам также нужно будет сопоставить с «CriOS»:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) { // User agent is Google Chrome }
Основываясь на ответе @Adams, более точно обнаруживая Google Chrome, исключите некоторые браузеры с «Chrome» в строке пользовательского агента, используя useragentstring.com и 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 }