文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

在生产环境下,我们需要关闭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;


@RestController
public class IpController {
	
	private static final Logger log = LoggerFactory.getLogger(IpController.class);
	
	
    @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;


@RestController
public class IpController {
	
	private static final Logger log = LoggerFactory.getLogger(IpController.class);
	
	
    @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;


@RestController
public class IpController {

	private static final Logger log = LoggerFactory.getLogger(IpController.class);

	
	@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获取操作系统及浏览器信息内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯