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

tech2024-12-17  4

最近在开发中需要从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 ; }
最新回复(0)