HttpServletRequest请求中获取操作系统,浏览器及浏览器版本信息

最近在开发中需要从request中获取操作系统,浏览器及浏览器版本信息。我们都知道通过request.getHeader("User-Agent")可以获取到。但是这样获取到的信息是一串内容,里面包含了操作系统和浏览器的信息。

这是我在我的电脑中用不同浏览访问,得到的信息。

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36  //Chrom

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0  //FireFox

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393  //Edge

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko //IE11
我们需要根据自己的需求去写方法获取。

下面这个方法是我根据StackOverflow上相同问题得到的方法改造后的方法,添加了Edge浏览器。用这个方法就可以得到我们想要的操作系统,浏览器及浏览器版本信息了。

/**
     * 获取操作系统,浏览器及浏览器版本信息
     * @param request
     * @return
     */
    public static String getOsAndBrowserInfo(HttpServletRequest request){
        String  browserDetails  =   request.getHeader("User-Agent");
        String  userAgent       =   browserDetails;
        String  user            =   userAgent.toLowerCase();

        String os = "";
        String browser = "";

        //=================OS Info=======================
        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("edge"))
        {
            browser=(userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
        } else 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 = "Netscape-?";

        } else if (user.contains("firefox"))
        {
            browser=(userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
        } else if(user.contains("rv"))
        {
            String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
            browser="IE" + IEVersion.substring(0,IEVersion.length() - 1);
        } else
        {
            browser = "UnKnown, More-Info: "+userAgent;
        }

        return os +" --- "+ browser ;
    }

希望可以帮助到需要的朋友。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在Java,可以使用HttpServletRequest获取浏览器详细信息。可以使用以下方法: getHeader("User-Agent"): 获取浏览器的user-agent字符串。 getHeader("Accept"): 获取浏览器支持的内容类型。 getHeader("Accept-Language"): 获取浏览器支持的语言。 getHeader("Accept-Encoding"): 获取浏览器支持的编码方式。 getHeader("Connection"): 获取浏览器使用的连接类型。 getHeader("Host"): 获取浏览器请求的主机名。 getHeader("Referer"): 获取浏览器请求的来源页面。 你可以在servlet使用这些方法来获取浏览器的详细信息。 ### 回答2: 在Java,可以通过HttpServletRequest对象来获取浏览器的详细信息。 要获取浏览器详细信息,首先需要在Java Web应用程序引入javax.servlet包。 接下来,可以在Servlet的doGet()或doPost()方法使用HttpServletRequest对象来获取浏览器的详细信息。可以通过HttpServletRequest的getHeader()方法以及特定的HTTP头部参数来获取浏览器相关的信息。 例如,可以通过如下代码获取浏览器的User-Agent信息: ``` String userAgent = request.getHeader("User-Agent"); ``` User-Agent信息可以提供浏览器的名称、版本、操作系统等详细信息。 另外,也可以通过检查HTTP请求的Accept-Language参数来获取浏览器的语言设置。可以通过如下代码获取语言设置: ``` String language = request.getHeader("Accept-Language"); ``` 语言设置可以告诉你用户的首选语言,以便提供相应的本地化内容。 除了以上两个常见的头部参数外,还可以根据具体需求获取其他头部参数或请求连接的相关信息,比如获取请求的URL地址、获取请求的方法、获取请求的IP地址等,都可以通过HttpServletRequest的相应方法来实现。 综上所述,通过HttpServletRequest对象可以方便地获取浏览器的详细信息,在Java编写Web应用程序时非常有用。 ### 回答3: 要获取浏览器的详细信息,可以使用Java编程语言结合一些开源库。首先,我们需要获取客户端的HTTP请求头,然后从提取所需的信息。 在Java,可以使用ServletHttpServletRequest对象来获取HTTP请求头。通过调用`request.getHeader("User-Agent")`方法,我们可以获取浏览器的User-Agent信息,其包含了浏览器的相关详细信息。 然后,我们可以使用一些开源库来解析User-Agent信息并提取所需的详细信息。比如,可以使用开源库"UserAgentUtils",它提供了一个简单的API用于解析User-Agent字符串。 首先,我们需要将User-Agent字符串传递给UserAgentUtils的`parseUserAgentString`方法,该方法将返回一个UserAgent对象。在UserAgent对象,我们可以获取浏览器的名称、版本、操作系统等详细信息。 以下是一个简单的示例代码: ```java import nl.basjes.parse.useragent.UserAgent; import nl.basjes.parse.useragent.UserAgentAnalyzer; import javax.servlet.http.HttpServletRequest; public class BrowserInfo { public static String getBrowserInfo(HttpServletRequest request) { String userAgent = request.getHeader("User-Agent"); UserAgentAnalyzer userAgentAnalyzer = UserAgentAnalyzer .newBuilder() .withFields(UserAgent.OPERATING_SYSTEM_NAME, UserAgent.AGENT_NAME_VERSION_MAJOR) .build(); UserAgent parsedUserAgent = userAgentAnalyzer.parse(userAgent); String os = parsedUserAgent.getValue(UserAgent.OPERATING_SYSTEM_NAME); String browser = parsedUserAgent.getValue(UserAgent.AGENT_NAME_VERSION_MAJOR); return "操作系统: " + os + " ,浏览器: " + browser; } } ``` 使用上述代码,我们可以通过调用`getBrowserInfo(request)`来获取浏览器的详细信息,并将其作为字符串返回。 请注意,这只是一个简单的示例,不同的浏览器可能在User-Agent字符串有不同的格式,所以在实际使用可能需要进行更多的处理和适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值