Java基础教程之获取操作系统及浏览器信息

目录
  • User Agent 的含义
  • 浏览器的 UA 字串
  • UserAgentUtils.jar
  • 通过(User-Agent)获取 浏览器类型,操作系统类型,手机机型
  • 再给出一个:
  • 总结

在生产环境下,我们需要关闭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基础教程之获取操作系统及浏览器信息

发表评论

全站资源亲测可用,价格略高几元,不解释

立即查看 了解详情