欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息

 更新時(shí)間:2021年10月05日 11:45:36   作者:Sunny_Chen  
最近在開(kāi)發(fā)中需要從request中獲取操作系統(tǒng),瀏覽器及瀏覽器版本信息,所以下面這篇文章主要給的大家介紹了關(guān)于Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

在生產(chǎn)環(huán)境下,我們需要關(guān)閉swagger配置,避免暴露接口的這種危險(xiǎn)行為。

User Agent 的含義

User Agent 中文名為用戶代理,簡(jiǎn)稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU 類(lèi)型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等。

一些網(wǎng)站常常通過(guò)判斷 UA 來(lái)給不同的操作系統(tǒng)、不同的瀏覽器發(fā)送不同的頁(yè)面,因此可能造成某些頁(yè)面無(wú)法在某個(gè)瀏覽器中正常顯示,但通過(guò)偽裝 UA 可以繞過(guò)檢測(cè)。

瀏覽器的 UA 字串

標(biāo)準(zhǔn)格式為: 瀏覽器標(biāo)識(shí) (操作系統(tǒng)標(biāo)識(shí); 加密等級(jí)標(biāo)識(shí); 瀏覽器語(yǔ)言) 渲染引擎標(biāo)識(shí) 版本信息

瀏覽器標(biāo)識(shí)

由于很多網(wǎng)站在進(jìn)行 UA 檢測(cè)的時(shí)候忽略了兩位數(shù)版本號(hào),所以可能造成 瀏覽器及之后版本收到糟糕的頁(yè)面,因此自 瀏覽器 10 之后的版本中瀏覽器標(biāo)識(shí)項(xiàng)固定為 瀏覽器,在 UA 字串尾部添加真實(shí)版本信息。

注:源自百度百科

UserAgentUtils.jar

UserAgentUtils.jar 是 UserAgent 的工具類(lèi)。

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);
	
	/**
     * 獲取操作系統(tǒng)及瀏覽器信息
     * @param request
     * @return
     */
    @RequestMapping(value="/browser",method = RequestMethod.GET)
    public void getBrowser(HttpServletRequest request){
    	String ua = request.getHeader("User-Agent");
        log.info("******************************");
        log.info("操作系統(tǒng)及瀏覽器信息:"+ua);
        //轉(zhuǎn)成UserAgent對(duì)象
        UserAgent userAgent = UserAgent.parseUserAgentString(ua);
        //獲取瀏覽器信息
        Browser browser = userAgent.getBrowser();
        log.info("瀏覽器信息:"+browser);
        //獲取系統(tǒng)信息
        OperatingSystem os = userAgent.getOperatingSystem();
        log.info("系統(tǒng)信息:"+os);
        //系統(tǒng)名稱
        String system = os.getName();
        log.info("系統(tǒng)名稱:"+system);
        //瀏覽器名稱
        String browserName = browser.getName();
        log.info("瀏覽器名稱:"+browserName);
        log.info("******************************");

    }
    
}

結(jié)果如下:

**************火狐****************
操作系統(tǒng)及瀏覽器信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
瀏覽器信息:FIREFOX
系統(tǒng)信息:WINDOWS_7
系統(tǒng)名稱:Windows 7
瀏覽器名稱:Firefox
******************************

**************谷歌****************
操作系統(tǒng)及瀏覽器信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
瀏覽器信息:CHROME
系統(tǒng)信息:WINDOWS_7
系統(tǒng)名稱:Windows 7
瀏覽器名稱:Chrome
******************************

************IE******************
操作系統(tǒng)及瀏覽器信息:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
瀏覽器信息:MOZILLA
系統(tǒng)信息:WINDOWS_7
系統(tǒng)名稱:Windows 7
瀏覽器名稱:Mozilla

******************************

通過(guò)(User-Agent)獲取 瀏覽器類(lèi)型,操作系統(tǒng)類(lèi)型,手機(jī)機(jī)型

獲得瀏覽器請(qǐng)求頭中的 User-Agent

String ua = request.getHeader("User-Agent")

獲得瀏覽器類(lèi)型,操作系統(tǒng)類(lèi)型,請(qǐng)看上面的 java代碼 如下標(biāo)題內(nèi)容

獲得手機(jī)類(lèi)型:

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);
	
	/**
     * 獲取操作系統(tǒng)及瀏覽器信息
     * @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("通過(guò)userAgent解析出機(jī)型:" + model);  
        }

    }
    
}

再給出一個(gè):

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

	/**
	 * 獲取操作系統(tǒng)及瀏覽器信息
	 * 
	 * @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("類(lèi)型:" + browser.getBrowserType() + "\n名稱:" + browser.getName() + "\n廠商:"
				+ browser.getManufacturer() + "\n產(chǎn)品系列:" + browser.getGroup() + "\n引擎:" + browser.getRenderingEngine());

		// 瀏覽器版本
		Version version = agent.getBrowserVersion();
		System.out.println("========================");
		System.out.println("主版本:" + version.getMajorVersion() + "\n小版本:" + version.getMinorVersion() + "\n完整版本:"
				+ version.getVersion());
		// 操作系統(tǒng)
		System.out.println("========================");
		OperatingSystem os = agent.getOperatingSystem();
		System.out.println("名稱:" + os.getName() + "\n設(shè)備類(lèi)型:" + os.getDeviceType() + "\n產(chǎn)品系列:" + os.getGroup() + "\n生成廠商:"
				+ os.getManufacturer());
	}

}

各位小伙伴自行測(cè)試結(jié)果吧?。?!

總結(jié)

到此這篇關(guān)于Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息的文章就介紹到這了,更多相關(guān)Java獲取操作系統(tǒng)及瀏覽器信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java代碼獲取UUID的實(shí)現(xiàn)示例

    java代碼獲取UUID的實(shí)現(xiàn)示例

    本文主要介紹了java代碼獲取UUID的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解Java的Hibernat框架中的Map映射與SortedMap映射

    詳解Java的Hibernat框架中的Map映射與SortedMap映射

    這篇文章主要介紹了Java的Hibernat框架中的Map映射與SortedMap映射,Hibernat是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Spring?MVC?前端控制器?(DispatcherServlet)處理流程解析

    Spring?MVC?前端控制器?(DispatcherServlet)處理流程解析

    DispatcherServlet是前置控制器,配置在web.xml文件中的,這篇文章主要介紹了Spring?MVC?前端控制器?(DispatcherServlet)處理流程,需要的朋友可以參考下
    2022-05-05
  • Java 利用遞歸實(shí)現(xiàn)鏈表的歸并排序

    Java 利用遞歸實(shí)現(xiàn)鏈表的歸并排序

    這篇文章主要介紹了Java 如何利用遞歸實(shí)現(xiàn)鏈表的歸并排序,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn)

    SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java使用smslib連接短信貓發(fā)送短信代碼分享

    java使用smslib連接短信貓發(fā)送短信代碼分享

    這篇文章主要介紹了java使用smslib連接短信貓發(fā)關(guān)短信代碼,需要的朋友可以參考下
    2014-02-02
  • Java 關(guān)鍵字static詳解及實(shí)例代碼

    Java 關(guān)鍵字static詳解及實(shí)例代碼

    這篇文章主要介紹了Java 關(guān)鍵字static詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java AOP實(shí)現(xiàn)自定義滑動(dòng)窗口限流器方法詳解

    Java AOP實(shí)現(xiàn)自定義滑動(dòng)窗口限流器方法詳解

    這篇文章主要介紹了Java AOP實(shí)現(xiàn)自定義滑動(dòng)窗口限流器方法,其中滑動(dòng)窗口算法彌補(bǔ)了計(jì)數(shù)器算法的不足,滑動(dòng)窗口算法把間隔時(shí)間劃分成更小的粒度,當(dāng)更小粒度的時(shí)間間隔過(guò)去后,把過(guò)去的間隔請(qǐng)求數(shù)減掉,再補(bǔ)充一個(gè)空的時(shí)間間隔,需要的朋友可以參考下
    2022-07-07
  • 關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則

    關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則

    這篇文章主要介紹了關(guān)于弱引用WeakReference所引用的對(duì)象的回收規(guī)則,如果一個(gè)弱引用實(shí)例的成員變量referent引用了一個(gè)對(duì)象obj,那么就稱這個(gè)弱引用實(shí)例對(duì)obj的引用是弱引用,被一個(gè)弱引用實(shí)例引用的對(duì)象,稱為弱引用對(duì)象,需要的朋友可以參考下
    2023-09-09
  • springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn)代碼

    springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn),JSR303校驗(yàn)方法有統(tǒng)一校驗(yàn)的需求,統(tǒng)一校驗(yàn)實(shí)現(xiàn)以及分組校驗(yàn),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評(píng)論