根据userAgent获取浏览器/操作系统/设备类型等信息

news/2025/2/19 8:48:08/

文章目录

  • 根据userAgent获取浏览器/操作系统/设备类型等信息
    • 一、背景
    • 二、效果展示
      • Android:userAgent解析出来的信息
      • ios:userAgent解析出来的信息
      • windows:userAgent解析出来的信息
    • 三、准备工具
      • 3.1 导入UserAgentUtils 到pom.xml
    • 四、解析出userAgent的所有信息
    • 五、源码下载

根据userAgent获取浏览器/操作系统/设备类型等信息

一、背景

因为需求需要不断的和userAgent打交道,需要解析出各种信息,如:浏览器名字,浏览器组,浏览器类型,浏览器版本,浏览器的渲染引擎,android和ios设备的类型,操作系统相关信息等等,这里我将自己写的获取userAgent的相关信息的类分享出来。以备后用
之前也写过一个简洁版的,获取user-agent里的信息并解析出device type(设备类型)和os version(操作系统的版本号)
以下方法自己均测试通过

二、效果展示

这里先展示数据,后面上代码,在最后我给出代码的下载链接

Android:userAgent解析出来的信息

在这里插入图片描述

ios:userAgent解析出来的信息

注意:ios无法获取浏览器的版本号,具体原因还不太清楚,希望知道的在评论区留言告知,感激不尽。
在这里插入图片描述

windows:userAgent解析出来的信息

在这里插入图片描述

三、准备工具

我这里解析userAgent信息是采用的UserAgentUtils 类。

3.1 导入UserAgentUtils 到pom.xml

  1. 在maven中央仓库搜索UserAgentUtils ,复制pom文件
  2. 或者copy我下面的引用
<!-- UserAgentUtils --><!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils --><dependency><groupId>eu.bitwalker</groupId><artifactId>UserAgentUtils</artifactId><version>1.20</version></dependency>

四、解析出userAgent的所有信息

注意: 以下代码均为本人亲测可行。如果有什么写的不对的地方,敬请指出。

package com.ninesword.nsclick.utils;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import eu.bitwalker.useragentutils.Browser;
import eu.bitwalker.useragentutils.OperatingSystem;
import eu.bitwalker.useragentutils.UserAgent;/** * @author  作者 :  小雪* @date 创建时间:2018年9月19日 下午2:45:10 * @version 1.0 * @parameter  * @since  * @return  
*/
public class UserAgentUtils {private static Logger logger = LoggerFactory.getLogger(UserAgentUtils.class);/*** 根据http获取userAgent信息* @param request* @return*/public static String getUserAgent(HttpServletRequest request) {String userAgent=request.getHeader("User-Agent");return userAgent;}/*** 根据request获取userAgent,然后解析出osVersion* @param request* @return*/public static String getOsVersion(HttpServletRequest request) {String userAgent = getUserAgent(request);return getOsVersion(userAgent);}/*** 根据userAgent解析出osVersion* @param userAgent* @return*/public static String getOsVersion(String userAgent) {String osVersion = "";if(StringUtils.isBlank(userAgent)) return osVersion;String[] strArr = userAgent.substring(userAgent.indexOf("(")+1,userAgent.indexOf(")")).split(";");if(null == strArr || strArr.length == 0) return osVersion;osVersion = strArr[1];logger.info("osVersion is:{}", osVersion);return osVersion;}/*** 获取操作系统对象* @param request* @return*/private static OperatingSystem getOperatingSystem(String userAgent) {UserAgent agent = UserAgent.parseUserAgentString(userAgent);OperatingSystem operatingSystem = agent.getOperatingSystem();return operatingSystem;}/*** 获取os:Windows/ios/Android* @param request* @return*/public static String getOs(HttpServletRequest request) {String userAgent = getUserAgent(request);return getOs(userAgent);}/*** 获取os:Windows/ios/Android* @param request* @return*/public static String getOs(String userAgent) {OperatingSystem operatingSystem =  getOperatingSystem(userAgent);String os = operatingSystem.getGroup().getName();logger.info("os is:{}", os);return os;}/*** 获取deviceType* @param request* @return*/public static String getDevicetype(HttpServletRequest request) {String userAgent = getUserAgent(request);return getDevicetype(userAgent);}/*** 获取deviceType* @param request* @return*/public static String getDevicetype(String userAgent) {OperatingSystem operatingSystem =  getOperatingSystem(userAgent);String deviceType = operatingSystem.getDeviceType().toString();logger.info("deviceType is:{}", deviceType);return deviceType;}/*** 获取操作系统的名字* @param request* @return*/public static String getOsName(HttpServletRequest request) {String userAgent = getUserAgent(request);return getOsName(userAgent);}/*** 获取操作系统的名字* @param request* @return*/public static String getOsName(String userAgent) {OperatingSystem operatingSystem =  getOperatingSystem(userAgent);String osName = operatingSystem.getName();logger.info("osName is:{}", osName);return osName;}/*** 获取device的生产厂家* @param request*/public static String getDeviceManufacturer(HttpServletRequest request) {String userAgent = getUserAgent(request);return getDeviceManufacturer(userAgent);}/*** 获取device的生产厂家* @param request*/public static String getDeviceManufacturer(String userAgent) {OperatingSystem operatingSystem =  getOperatingSystem(userAgent);String deviceManufacturer = operatingSystem.getManufacturer().toString();logger.info("deviceManufacturer is:{}", deviceManufacturer);return deviceManufacturer;}/*** 获取浏览器对象* @param request* @return*/public static Browser getBrowser(String agent) {UserAgent userAgent = UserAgent.parseUserAgentString(agent);Browser browser = userAgent.getBrowser();return browser;}/*** 获取browser name* @param request* @return*/public static String getBorderName(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBorderName(userAgent);}/*** 获取browser name* @param request* @return*/public static String getBorderName(String userAgent) {Browser browser =  getBrowser(userAgent);String borderName = browser.getName();logger.info("borderName is:{}", borderName);return borderName;}/*** 获取浏览器的类型* @param request* @return*/public static String getBorderType(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBorderType(userAgent);}/*** 获取浏览器的类型* @param request* @return*/public static String getBorderType(String userAgent) {Browser browser =  getBrowser(userAgent);String borderType = browser.getBrowserType().getName();logger.info("borderType is:{}", borderType);return borderType;}/*** 获取浏览器组: CHROME、IE* @param request* @return*/public static String getBorderGroup(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBorderGroup(userAgent);}/*** 获取浏览器组: CHROME、IE* @param request* @return*/public static String getBorderGroup(String userAgent) {Browser browser =  getBrowser(userAgent);String browerGroup = browser.getGroup().getName();logger.info("browerGroup is:{}", browerGroup);return browerGroup;}/*** 获取浏览器的生产厂商* @param request* @return*/public static String getBrowserManufacturer(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBrowserManufacturer(userAgent);}/*** 获取浏览器的生产厂商* @param request* @return*/public static String getBrowserManufacturer(String userAgent) {Browser browser =  getBrowser(userAgent);String browserManufacturer = browser.getManufacturer().getName();logger.info("browserManufacturer is:{}", browserManufacturer);return browserManufacturer;}/*** 获取浏览器使用的渲染引擎* @param request* @return*/public static String getBorderRenderingEngine(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBorderRenderingEngine(userAgent);}/*** 获取浏览器使用的渲染引擎* @param request* @return*/public static String getBorderRenderingEngine(String userAgent) {Browser browser =  getBrowser(userAgent);String renderingEngine = browser.getRenderingEngine().name();logger.info("renderingEngine is:{}", renderingEngine);return renderingEngine;}/*** 获取浏览器版本* @param request* @return*/public static String getBrowserVersion(HttpServletRequest request) {String userAgent = getUserAgent(request);return getBrowserVersion(userAgent);}/*** 获取浏览器版本* @param request* @return*/public static String getBrowserVersion(String userAgent) {Browser browser =  getBrowser(userAgent);String borderVersion = browser.getVersion( userAgent).toString();return borderVersion;}public static void main(String[] args) {
//		String androidUserAgent = "Mozilla/5.0 (Linux; Android 8.0; LON-AL00 Build/HUAWEILON-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044204 Mobile Safari/537.36 V1_AND_SQ_7.7.8_908_YYB_D QQ/7.7.8.3705 NetType/WIFI WebP/0.3.0 Pixel/1440";
//		String iosUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 QQ/7.7.8.421 V1_IPH_SQ_7.7.8_1_APP_A Pixel/750 Core/UIWebView Device/Apple(iPhone 6s) NetType/WIFI QBWebViewType/1";String winUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";System.out.println("浏览器组:"+getBorderGroup(winUserAgent));System.out.println("浏览器名字:"+getBorderName(winUserAgent));System.out.println("浏览器类型"+getBorderType(winUserAgent));System.out.println("浏览器生产商:"+getBrowserManufacturer(winUserAgent));System.out.println("浏览器版本:"+getBrowserVersion(winUserAgent));System.out.println("设备生产厂商:"+getDeviceManufacturer(winUserAgent));System.out.println("设备类型:"+getDevicetype(winUserAgent));System.out.println("设备操作系统:"+getOs(winUserAgent));System.out.println("操作系统的名字:"+getOsName(winUserAgent));System.out.println("操作系统的版本号:"+getOsVersion(winUserAgent));System.out.println("操作系统浏览器的渲染引擎:"+getBorderRenderingEngine(winUserAgent));}}

五、源码下载

虽然上面基本上已经给出了源码,我还是再给一遍。方便直接运行
java解析userAgent中的所有信息


http://www.ppmy.cn/news/859058.html

相关文章

h5中移动设备类型的判断

在下载app的时候&#xff0c;往往IOS端和安卓端的下载地址链接是不一样的&#xff0c;这个时候就需要判断当前设备是IOS还是安卓: downLoad() { var u navigator.userAgent; var isAndroid u. indexOf( "Android") > - 1 || u. indexOf( "Adr") > …

Zigbee设备类型选择

1&#xff09;设备类型选择&#xff1a; 在IAR编译器由f8wCoord.cfg&#xff08;f8wRouter.cfg、f8wdevice.cfg&#xff09; 2&#xff09;组网方式&#xff1a; 在nwk_global.h中的NWK_MODE定义。 有三种网络&#xff1a; #define NWK_MODE_STAR 0 #define NWK_M…

Android 获取蓝牙设备类型

之前我们分析了如何获取已连接的蓝牙设备地址 http://blog.csdn.net/jasonwang18/article/details/61214431 本篇我们分析如何获取对应蓝牙设备的类型&#xff0c;这个类型和profile不是同一个东西&#xff0c;而是具体蓝牙的设备类型&#xff0c;比如手机、电脑、手柄、蓝牙…

USB设备类型汇总

USB设备类型汇总 Mr_Michael 0.1792020.07.29 16:44:47字数 1,859阅读 7,494 参考&#xff1a;usb wiki、USB 一、USB概述 1.USB 版本 2.USB 接口 [站外图片上传中...(image-2f523-1596012258374)] 3.USB Class Codes ​ USB定义了设备类的类别码信息&#xff0c;它的功能…

java判断访问设备类型

目的&#xff1a;用java判断当前请求设备的类型&#xff08;pc、手机、平板&#xff09; 业务类型:例如在电商系统中&#xff0c;用户买商品下单时&#xff0c;平台需要判断该订单是从那个类型的设备中来的&#xff0c;以便后变得统计工作。 实现方法&#xff1a; import jav…

Android 扫描蓝牙设备并获取设备类型

目前流行的蓝牙4.0标准包括传统的蓝牙(BT)和低功耗蓝牙模块(BLE)。 这里扫描的是传统蓝牙模块&#xff0c;先给出扫描结果&#xff1a; 一&#xff0c;扫描 Android扫描蓝牙设备是通过BluetoothAdapter启动蓝牙搜索&#xff0c;然后通过广播接收扫描的结果&#xff0c;其主…

如何判断蓝牙设备类型

我们在开发Android的蓝牙应用时&#xff0c;可能需要知道扫描到的蓝牙设备是什么类型&#xff0c;然后过滤掉不符合要求的设备&#xff0c;只保留符合要求的设备&#xff0c;例如我们在车载系统上开发蓝牙电话应用时&#xff0c;我们希望只显示手机蓝牙设备&#xff0c;那么如何…

如何使用JavaScript来判断用户设备类型

如何使用JavaScript来判断用户设备类型 通过JS来实现判断当前用户所使用的设备类型。 这里我们主要会使用到 navigator 对象&#xff0c;它是 JavaScript中的一个独对象&#xff0c;用于提供当前用户所使用的浏览器&#xff0c;操作系统等信息。相关信息数据会以 navigator对…