Java基础教程之获取操作系统及浏览器信息
在生产环境下,我们需要关闭swagger配置,避免暴露接口的这种危险行为。
User Agent 的含义
User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。
浏览器的 UA 字串
标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
浏览器标识
由于很多网站在进行 UA 检测的时候忽略了两位数版本号,所以可能造成 浏览器及之后版本收到糟糕的页面,因此自 浏览器 10 之后的版本中浏览器标识项固定为 浏览器,在 UA 字串尾部添加真实版本信息。
注:源自百度百科
UserAgentUtils.jar
UserAgentUtils.jar 是 UserAgent 的工具类。
maven如下:
<!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils --> <dependency> <groupId>eu.bitwalker</groupId> <artifactId>UserAgentUtils</artifactId> <version>1.20</version> </dependency>
java代码如下:
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); Browser browser = userAgent.getBrowser(); OperatingSystem os = userAgent.getOperatingSystem();
方法
package com.cyj.controller; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import eu.bitwalker.useragentutils.Browser; import eu.bitwalker.useragentutils.OperatingSystem; import eu.bitwalker.useragentutils.UserAgent; /** * * @Description: 获取ip控制器 * @ClassName: IpController.java * @author ChenYongJia * @Date 2019年4月20日 晚上20:25 * @Email chen87647213@163.com */ @RestController public class IpController { private static final Logger log = LoggerFactory.getLogger(IpController.class); /** * 获取操作系统及浏览器信息 * @param request * @return */ @RequestMapping(value="/browser",method = RequestMethod.GET) public void getBrowser(HttpServletRequest request){ String ua = request.getHeader("User-Agent"); log.info("******************************"); log.info("操作系统及浏览器信息:"+ua); //转成UserAgent对象 UserAgent userAgent = UserAgent.parseUserAgentString(ua); //获取浏览器信息 Browser browser = userAgent.getBrowser(); log.info("浏览器信息:"+browser); //获取系统信息 OperatingSystem os = userAgent.getOperatingSystem(); log.info("系统信息:"+os); //系统名称 String system = os.getName(); log.info("系统名称:"+system); //浏览器名称 String browserName = browser.getName(); log.info("浏览器名称:"+browserName); log.info("******************************"); } }
结果如下:
**************火狐****************
操作系统及浏览器信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
浏览器信息:FIREFOX
系统信息:WINDOWS_7
系统名称:Windows 7
浏览器名称:Firefox
********************************************谷歌****************
操作系统及浏览器信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
浏览器信息:CHROME
系统信息:WINDOWS_7
系统名称:Windows 7
浏览器名称:Chrome
******************************************IE******************
操作系统及浏览器信息:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
浏览器信息:MOZILLA
系统信息:WINDOWS_7
系统名称:Windows 7
浏览器名称:Mozilla******************************
通过(User-Agent)获取 浏览器类型,操作系统类型,手机机型
获得浏览器请求头中的 User-Agent
String ua = request.getHeader("User-Agent")
获得浏览器类型,操作系统类型,请看上面的 java代码 如下标题内容
获得手机类型:
package com.cyj.controller; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import eu.bitwalker.useragentutils.Browser; import eu.bitwalker.useragentutils.OperatingSystem; import eu.bitwalker.useragentutils.UserAgent; /** * * @Description: 获取ip控制器 * @ClassName: IpController.java * @author ChenYongJia * @Date 2019年4月20日 晚上20:25 * @Email chen87647213@163.com */ @RestController public class IpController { private static final Logger log = LoggerFactory.getLogger(IpController.class); /** * 获取操作系统及浏览器信息 * @param request * @return */ @RequestMapping(value="/browser",method = RequestMethod.GET) public void getBrowser(HttpServletRequest request){ UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); Browser browser = userAgent.getBrowser(); OperatingSystem os = userAgent.getOperatingSystem(); Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/"); Matcher matcher = pattern.matcher((CharSequence) userAgent); String model = null; if (matcher.find()) { model = matcher.group(1).trim(); log.debug("通过userAgent解析出机型:" + model); } } }
再给出一个:
package com.cyj.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import eu.bitwalker.useragentutils.Browser; import eu.bitwalker.useragentutils.OperatingSystem; import eu.bitwalker.useragentutils.UserAgent; import eu.bitwalker.useragentutils.Version; /** * * @Description: 获取ip控制器 * @ClassName: IpController.java * @author ChenYongJia * @Date 2019年4月20日 晚上20:25 * @Email chen87647213@163.com */ @RestController public class IpController { private static final Logger log = LoggerFactory.getLogger(IpController.class); /** * 获取操作系统及浏览器信息 * * @param request * @return */ @RequestMapping(value = "/browser", method = RequestMethod.GET) public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String agentStr = request.getHeader("user-agent"); System.out.println(agentStr); UserAgent agent = UserAgent.parseUserAgentString(agentStr); // 浏览器 Browser browser = agent.getBrowser(); System.out.println("类型:" + browser.getBrowserType() + "\n名称:" + browser.getName() + "\n厂商:" + browser.getManufacturer() + "\n产品系列:" + browser.getGroup() + "\n引擎:" + browser.getRenderingEngine()); // 浏览器版本 Version version = agent.getBrowserVersion(); System.out.println("========================"); System.out.println("主版本:" + version.getMajorVersion() + "\n小版本:" + version.getMinorVersion() + "\n完整版本:" + version.getVersion()); // 操作系统 System.out.println("========================"); OperatingSystem os = agent.getOperatingSystem(); System.out.println("名称:" + os.getName() + "\n设备类型:" + os.getDeviceType() + "\n产品系列:" + os.getGroup() + "\n生成厂商:" + os.getManufacturer()); } }
各位小伙伴自行测试结果吧!!!
总结
到此这篇关于Java基础教程之获取操作系统及浏览器信息的文章就介绍到这了,更多相关Java获取操作系统及浏览器信息内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
- 这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了详解Vue Cli浏览器兼容性实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-09
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29