Java基础:获取操作系统及浏览器信息


前言

今天博主将为大家分享Java基础:获取操作系统及浏览器信息,不喜勿喷,如有异议欢迎讨论!

有一个强大的地基才能写出健壮的程序!


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());}}

各位小伙伴自行测试结果吧!!!


到这里SpringBoot系列:获取当前登录用户IP,分享完毕了,快去试试吧!下一波将分享《Redis的下载安装》和SpringBoot-Jpa-Redis案例分享!


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

Java基础:获取操作系统及浏览器信息相关推荐

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

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

  2. 获取用户的操作系统及浏览器信息

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

  3. Emlog评论区显示用户操作系统与浏览器信息教程

    近期有不少初入Emlog的站长来咨询Emlog程序的评论区域如何实现获取到评价用户的操作系统和浏览器信息,其实要实现该功能也很简单,而且网上也有不少类是的插件.今天,冬镜就和大家聊聊不用插件来实现获取 ...

  4. emlog评论ajax,emlog评论:获取评论用户操作系统与浏览器信息

    1.打开include/model/comment_model.php文件 找到while ($row = $this->db->fetch_array($ret)) { (约第45行), ...

  5. 浏览器获取设备信息_过滤获取日志和浏览器信息

    承接上一个课件<分析Nginx日志获取IP地址的省份信息> 现在希望是获取浏览器和操作系统相关数据 准备一个工具类UserAgentUtil 编写代码 解析浏览器的useragent字符串 ...

  6. 朝花夕拾:代码生成器的基础——获取数据源的架构信息

    最近在做一个代码生成工具,在制作的过程中,掌握了获取数据源的架构信息,获取数据源的架构信息是代码生成工具的基础. 获取数据源的架构信息,网上有不同的方法,但我觉得都太复杂了,其实在.Net上,要获取数 ...

  7. java获取服务器信息返回前端,java程序获取linux服务器进程信息

    搜索了很多关于获取Linux的信息,但是没有发现获取linux服务器的进程信息详细说明. 在这里求解一下,能否在java代码中实现读取代码执行的本机linux服务器中的进程信息? 该问题又分为三个小问 ...

  8. Javascript UserAgent 获取平台及浏览器信息

    公司最近要做一套类似于百度统计的功能,于是收集整理了其中根据UserAgent获取客户端平台及浏览器信息的资料,不仅仅试用于Javascript,其他语言也可以参考相应正则进行改进.当然,肯定有不足的 ...

  9. Java识别获取pdf中文字信息(此方法任意pdf的信息都可以拿到)

    一.举例需求(拿较难的发票识别举例) 平时工作或者开发过程中如果遇到需要识别pdf发票中信息的情况,如获取发票代码号码,开票日期,校验码等,比如下面的发票,项目中需要读取发票中信息 二.方法原理 使用 ...

最新文章

  1. virtualenv使用说明
  2. java定时扫描_springmvc 定时扫描
  3. Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)
  4. 某机器字长8位,试用如下所给芯片设计一个存储器,容量为10KW,其中RAM为高8KW,ROM为低2KW,最低地址为0(RAM芯片类型为:4K×8。ROM芯片为:2K×4)。
  5. php study 直接显示代码_PHP获取文件大小的方法详解(附视频)
  6. hbase 安装_HBASE 数据库入门级教程
  7. Linux磁盘分区了解多少?Linux入门必看
  8. C#的static constructor抛了异常会怎么处理?
  9. 目标检测系列(五)——Faster R-CNN译文
  10. JSR303常见参数
  11. WSPBuilder 生成Webpart 部署包
  12. C++:34---union:联合/共用体,一种节省空间的类
  13. IT、CT、OT是什么
  14. php 密码加密方法
  15. (转)拿到软银44亿美金巨资后,WeWork要这样布局中国市场
  16. Mysql事务,并发问题,锁机制
  17. DUET DISPLAY分屏软件IOS账号共享
  18. 各种动漫情侣姿势的画法
  19. 基于msm8916移植lcd流程--LK
  20. Java面试题大全(2023最新版)1500+大厂面试题附答案详解

热门文章

  1. 【shopify如何搭建本地开发环境】
  2. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-从C89简化的BNF范式(4)【简书被冻结-搬运】
  3. Win8去掉桌面图标的箭头
  4. Node.js crypto模块
  5. 数据库系统概论期末复习二、关系数据库
  6. python实现windows锁定桌面
  7. AE开发基础实验二(空间查询之按属性查询)
  8. 万字长文 | 全(小区局域)网最强 TCP/IP 拥塞控制总结
  9. 【诗歌】克里斯蒂娜·罗塞蒂诗集(二)
  10. 车联网安全学习之TBOX