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

网友投稿 271 2022-12-03

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如下:

eu.bitwalker

UserAgentUtils

1.20

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

* @authohttp://r 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(ewwwezhzZ) + "\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());

}

}

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

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java线程池的简单使用方法实例教程
下一篇:Java实现房屋出租系统详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~