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