繁体   English   中英

如何使用PHP检测“Google Chrome”作为用户代理?

[英]How to detect “Google Chrome” as the user-agent using PHP?

我很想知道用户代理是否是使用PHP在服务器端的“Chrome”。 是否有可靠的正则表达式来解析请求标头中的用户代理字符串?

在这一点上,太多的浏览器假装是Chrome,以便利用它的受欢迎程度以及打击滥用浏览器检测,以便“Chrome”的简单匹配再次有效。 我建议继续进行特征检测,但Chrome(以及WebKit / Blink)一般都会因为说谎功能检测机制而臭名昭着,所以即便如此,它也不会像它已经破解一样大。

我只能通过将已知的UA字符串与其他浏览器的UA字符串通过第三方网站进行比较,并从那里创建模式来建议保持最佳状态。 你如何做到这完全取决于字符串本身。 请记住,由于浏览器和UA字符串的性质,永远不会有一个“可靠”的正则表达式来匹配它们。

在PHP中,相关的服务器var是$_SERVER['HTTP_USER_AGENT']

值得一提的是,如果您还想要包含Chrome for iOS,您还需要与“CriOS”匹配:

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

在@Adams答案的基础上,通过使用useragentstring.comudger.com在用户代理字符串中排除某些带有“Chrome”的浏览器,更准确地检测Google Chrome:

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM