如何获取客户端信息,如操作系统和浏览器

2022-08-31 16:01:46

我正在使用JSP,Servlet来开发我的Web应用程序。

我想获取客户端信息,例如:操作系统,浏览器,分辨率,...每当客户使用我的网站时。


答案 1

最好的选择是用户代理标头。你可以在JSP或Servlet中得到这样的,

String userAgent = request.getHeader("User-Agent");

标题如下所示,

User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13

它提供了有关浏览器的详细信息。但是,它几乎是免费的格式,因此很难破译每一个。您只需要弄清楚将支持哪些浏览器,并为每个浏览器编写解析器即可。当您尝试识别浏览器的版本时,请始终先检查较新版本。例如,IE6 用户代理可能包含 IE5 以实现向后兼容性。如果您先检查IE5,IE6也将被归类为IE5。

您可以从此网站获取所有用户代理值的完整列表,

http://www.user-agents.org/

使用用户代理,您可以分辨出浏览器的确切版本。你可以在操作系统上得到一个很好的想法,但你可能无法区分同一操作系统的不同版本,例如,Windows NT和2000可能使用相同的用户代理。

没有任何关于分辨率的问题。但是,您可以在AJAX调用上使用Javascript获得此功能。


答案 2

在Java中,没有直接的方法可以获得浏览器和操作系统相关信息。

但是要获得这几个第三方工具。

我建议您不要信任第三方工具,而是解析用户代理

String  browserDetails  =   request.getHeader("User-Agent");

通过这样做,您可以根据需要轻松分离浏览器详细信息和操作系统相关信息。PFB 代码段以供参考(您也可以将其替换为开关盒)。

        String  browserDetails  =   request.getHeader("User-Agent");
        String  userAgent       =   browserDetails;
        String  user            =   userAgent.toLowerCase();
    
        String os = "";
        String browser = "";

        log.info("User Agent for the request is===>"+browserDetails);
        //=================OS=======================
         if (userAgent.toLowerCase().indexOf("windows") >= 0 )
         {
             os = "Windows";
         } else if(userAgent.toLowerCase().indexOf("mac") >= 0)
         {
             os = "Mac";
         } else if(userAgent.toLowerCase().indexOf("x11") >= 0)
         {
             os = "Unix";
         } else if(userAgent.toLowerCase().indexOf("android") >= 0)
         {
             os = "Android";
         } else if(userAgent.toLowerCase().indexOf("iphone") >= 0)
         {
             os = "IPhone";
         }else{
             os = "UnKnown, More-Info: "+userAgent;
         }
         //===============Browser===========================
        if (user.contains("msie"))
        {
            String substring=userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
            browser=substring.split(" ")[0].replace("MSIE", "IE")+"-"+substring.split(" ")[1];
        } else if (user.contains("safari") && user.contains("version"))
        {
            browser=(userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]+"-"+(userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
        } else if ( user.contains("opr") || user.contains("opera"))
        {
            if(user.contains("opera"))
                browser=(userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]+"-"+(userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
            else if(user.contains("opr"))
                browser=((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")).replace("OPR", "Opera");
        } else if (user.contains("chrome"))
        {
            browser=(userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
        } else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1)  || (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) || (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1) )
        {
            //browser=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-");
            browser = "Netscape-?";
                  
        } else if (user.contains("firefox"))
        {
            browser=(userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
        } else if(user.contains("rv"))
        {
            browser="IE-" + user.substring(user.indexOf("rv") + 3, user.indexOf(")"));
        } else
        {
            browser = "UnKnown, More-Info: "+userAgent;
        }
        log.info("Operating System======>"+os);
        log.info("Browser Name==========>"+browser);
        
    

推荐