LMLPHP后院

通过 UA 来识别浏览器和操作系统技术

maybe yes 发表于 2017-05-23 23:03

通过 UA 来判断浏览器版本信息和操作系统类型及版本信息,其实意义不大,也是不太准的。一般这种只适用于浏览器请求识别,如果是 APP 客户端一般也不会设置这样的字段,至少会换种方式或名字。如果要更加准确的判断这些信息,应该在客户端完成识别。

即使意义不大,还得尝试去做。

写这种代码,比较费时间,因为不仅仅是技术,而是需要大量的搜集工作。找了一些开源的软件包,大的吓人,有些竟然依赖网络请求,这样就很慢且不稳定。发现一个网上的接口,一看就是专业的。useragentstring.com,不过这个接口太慢了。

分享一下,找起来不容易啊,尤其的微软Windows

preg_match('/(firefox|chrome|msie|safari|360|uc|maxthon|qq)[\s\/]+([\d\.]+)/i', $user_agent, $matches);
if (isset($matches[1])) {
    $browser = $matches[1];
}
if (isset($matches[2])) {
    $browser_version = $matches[2];
}
$data['browser'] = $browser; 
$data['browserVer'] = $browser_version; 

$operate_system = '';
if (strpos($user_agent, 'Windows NT 6.1')) {
    $operate_system = 'Windows7';
}
if (strpos($user_agent, 'Windows NT 5.1')) {
    $operate_system = 'Windows XP';
}
if (strpos($user_agent, 'Windows NT 6.4')) {
    $operate_system = 'Windows 10';
}
if (strpos($user_agent, 'Windows NT 6.3')) {
    $operate_system = 'Windows 8.1';
}
if (strpos($user_agent, 'Windows NT 6.2')) {
    $operate_system = 'Windows 8';
}
if (strpos($user_agent, 'Windows NT 6.0')) {
    $operate_system = 'Windows vista';
}
if (strpos($user_agent, 'Mac OS X')) {
    $operate_system = 'Mac OS X';
}
if (strpos($user_agent, 'iPhone')) {
    $operate_system = 'iPhone';
}
if (strpos($user_agent, 'iPad')) {
    $operate_system = 'iPad';
}
if (strpos($user_agent, 'Android')) {
    $operate_system = 'Android';
}
if (strpos($user_agent, 'Linux')) {
    $operate_system = 'Linux';
}
2019-10-20 12:15:52 1571544952 0.078001