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

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案例分享!


最后

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

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 在Java中,可以使用HttpServletRequest类获取浏览器详细信息。可以使用以下方法: getHeader("User-Agent"): 获取浏览器user-agent字符串。 getHeader("Accept"): 获取浏览器支持的内容类型。 getHeader("Accept-Language"): 获取浏览器支持的语言。 getHeader("Accept-Encoding"): 获取浏览器支持的编码方式。 getHeader("Connection"): 获取浏览器使用的连接类型。 getHeader("Host"): 获取浏览器请求的主机名。 getHeader("Referer"): 获取浏览器请求的来源页面。 你可以在servlet中使用这些方法来获取浏览器的详细信息。 ### 回答2: 在Java中,可以通过HttpServletRequest对象来获取浏览器的详细信息。 要获取浏览器详细信息,首先需要在Java Web应用程序中引入javax.servlet包。 接下来,可以在Servlet的doGet()或doPost()方法中使用HttpServletRequest对象来获取浏览器的详细信息。可以通过HttpServletRequest的getHeader()方法以及特定的HTTP头部参数来获取浏览器相关的信息。 例如,可以通过如下代码获取浏览器User-Agent信息: ``` String userAgent = request.getHeader("User-Agent"); ``` User-Agent信息可以提供浏览器的名称、版本、操作系统等详细信息。 另外,也可以通过检查HTTP请求头中的Accept-Language参数来获取浏览器的语言设置。可以通过如下代码获取语言设置: ``` String language = request.getHeader("Accept-Language"); ``` 语言设置可以告诉你用户的首选语言,以便提供相应的本地化内容。 除了以上两个常见的头部参数外,还可以根据具体需求获取其他头部参数或请求连接的相关信息,比如获取请求的URL地址、获取请求的方法、获取请求的IP地址等,都可以通过HttpServletRequest的相应方法来实现。 综上所述,通过HttpServletRequest对象可以方便地获取浏览器的详细信息,在Java中编写Web应用程序时非常有用。 ### 回答3: 要获取浏览器的详细信息,可以使用Java编程语言结合一些开源库。首先,我们需要获取客户端的HTTP请求头,然后从中提取所需的信息。 在Java中,可以使用Servlet的HttpServletRequest对象来获取HTTP请求头。通过调用`request.getHeader("User-Agent")`方法,我们可以获取浏览器User-Agent信息,其中包含了浏览器的相关详细信息。 然后,我们可以使用一些开源库来解析User-Agent信息并提取所需的详细信息。比如,可以使用开源库"UserAgentUtils",它提供了一个简单的API用于解析User-Agent字符串。 首先,我们需要将User-Agent字符串传递给UserAgentUtils的`parseUserAgentString`方法,该方法将返回一个UserAgent对象。在UserAgent对象中,我们可以获取浏览器的名称、版本、操作系统等详细信息。 以下是一个简单的示例代码: ```java import nl.basjes.parse.useragent.UserAgent; import nl.basjes.parse.useragent.UserAgentAnalyzer; import javax.servlet.http.HttpServletRequest; public class BrowserInfo { public static String getBrowserInfo(HttpServletRequest request) { String userAgent = request.getHeader("User-Agent"); UserAgentAnalyzer userAgentAnalyzer = UserAgentAnalyzer .newBuilder() .withFields(UserAgent.OPERATING_SYSTEM_NAME, UserAgent.AGENT_NAME_VERSION_MAJOR) .build(); UserAgent parsedUserAgent = userAgentAnalyzer.parse(userAgent); String os = parsedUserAgent.getValue(UserAgent.OPERATING_SYSTEM_NAME); String browser = parsedUserAgent.getValue(UserAgent.AGENT_NAME_VERSION_MAJOR); return "操作系统: " + os + " ,浏览器: " + browser; } } ``` 使用上述代码,我们可以通过调用`getBrowserInfo(request)`来获取浏览器的详细信息,并将其作为字符串返回。 请注意,这只是一个简单的示例,不同的浏览器可能在User-Agent字符串中有不同的格式,所以在实际使用中可能需要进行更多的处理和适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值