用户代理,从字符串中提取操作系统和浏览器

Posted

技术标签:

【中文标题】用户代理,从字符串中提取操作系统和浏览器【英文标题】:User agent, extract OS and browser from string 【发布时间】:2012-03-30 10:00:35 【问题描述】:

我想从用户代理字符串中提取完整的操作系统名称和浏览器。我该怎么做?

【问题讨论】:

我建议查看github.com/dmolsen/ua-parser-php 之类的东西来实现这一目标 【参考方案1】:

PHP 中还有一个内置函数可以实现这一点以及更多功能:get_browser()

$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version

【讨论】:

【参考方案2】:

@augustknight:注意,IE11 不发送“MSIE”令牌,我建议将匹配项添加到 Trident 令牌。

IE 11 用户代理示例:

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

更改代码:

<?php
public static function getUserAgent()

    static $agent = null;

    if ( empty($agent) ) 
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) 
            $agent = 'firefox';
         elseif ( stripos($agent, 'MSIE') !== false ) 
            $agent = 'ie';
         elseif ( stripos($agent, 'Trident') !== false ) 
            $agent = 'ie';
         elseif ( stripos($agent, 'iPad') !== false ) 
            $agent = 'ipad';
         elseif ( stripos($agent, 'android') !== false ) 
            $agent = 'android';
         elseif ( stripos($agent, 'Chrome') !== false ) 
            $agent = 'chrome';
         elseif ( stripos($agent, 'Safari') !== false ) 
            $agent = 'safari';
         elseif ( stripos($agent, 'AIR') !== false ) 
            $agent = 'air';
         elseif ( stripos($agent, 'Fluid') !== false ) 
            $agent = 'fluid';
        

    

    return $agent;

?>

【讨论】:

【参考方案3】:

我认为获取完整的操作系统名称和完整的浏览器名称很棘手,因为许多浏览器以不同的方式标识自己。您可能需要一些花哨的正则表达式,然后它甚至可能无法 100% 工作。

这是我用来识别浏览器的简单方法。您可以根据自己的需要对其进行调整。

<?php

public static function getUserAgent()

    static $agent = null;

    if ( empty($agent) ) 
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) 
            $agent = 'firefox';
         elseif ( stripos($agent, 'MSIE') !== false ) 
            $agent = 'ie';
         elseif ( stripos($agent, 'iPad') !== false ) 
            $agent = 'ipad';
         elseif ( stripos($agent, 'Android') !== false ) 
            $agent = 'android';
         elseif ( stripos($agent, 'Chrome') !== false ) 
            $agent = 'chrome';
         elseif ( stripos($agent, 'Safari') !== false ) 
            $agent = 'safari';
         elseif ( stripos($agent, 'AIR') !== false ) 
            $agent = 'air';
         elseif ( stripos($agent, 'Fluid') !== false ) 
            $agent = 'fluid';
        

    

    return $agent;

【讨论】:

以上是关于用户代理,从字符串中提取操作系统和浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:使用 user agent 摄入处理器来丰富数据

Python。大数据。需要从单元格中提取 Web 浏览器和操作系统用户的偏好。最佳性能方法?

如何从 php 中的用户代理字符串中检测浏览器欺骗和机器人

JavaScript用户代理字符串检测脚本

javascript浏览器用户代理检测脚本实现

完整的用户代理字符串检测