Основы Java: получение информации об операционной системе и браузере

Java задняя часть Технологии Nuggets призывают к публикации
Основы Java: получение информации об операционной системе и браузере

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность

Эта статья приняла участие"Проект "Звезда раскопок"", чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.

📖Сводка


心态好了,就没那么累了。心情好了,所见皆是明媚风景。

“一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。

В производственной среде нам нужно закрыть конфигурацию swagger, чтобы избежать этого опасного поведения, связанного с раскрытием интерфейсов.


User Agentимея в виду

User AgentКитайское имя User Agent или сокращенно UA Это специальный строковый заголовок, который позволяет серверу идентифицировать операционную систему и версию, тип процессора, браузер и версию, механизм рендеринга браузера, язык браузера, плагины браузера и т. д. , используется клиентом.

Некоторые веб-сайты часто отправляют разные страницы в разные операционные системы и разные браузеры, оценивая UA, поэтому некоторые страницы могут не отображаться нормально в определенном браузере, но обнаружение можно обойти, замаскировав UA.


Строка UA браузера

Стандартный формат: Идентификатор браузера (Идентификатор ОС; Идентификатор уровня шифрования; Язык браузера) Идентификатор версии модуля рендеринга.

Идентификатор браузера

Поскольку многие веб-сайты игнорируют двузначный номер версии при обнаружении UA, это может привести к тому, что браузеры и более поздние версии будут получать неверные страницы. Поэтому в версиях после браузера 10 элемент идентификации браузера фиксируется в браузере. Добавьте реальную информацию о версии. до конца строки UA.

Примечание: из энциклопедии Baidu.


UserAgentUtils.jar

UserAgentUtils.jarдаUserAgentкласс инструмента.

мавен выглядит следующим образом:

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

}

Ребята, проверьте результаты на себе! ! !

Наконец, я хотел бы поблагодарить всех за терпеливое просмотр. Оригинальность не так проста. Оставить лайк и собрать коллекцию - это ваша самая большая поддержка для меня!


🎉Резюме:

  • Дополнительные справочные сообщения в блоге см. здесь:"Блог Чен Юнцзя"

  • Друзья, которым нравятся блогеры, могут подписаться, поставить лайк и продолжать обновлять, хе-хе!