精华内容
参与话题
问答
  • 文章目录根据userAgent获取浏览器/操作系统/设备类型等信息一、背景二、效果展示Android:userAgent解析出来的信息ios:userAgent解析出来的信息windows:userAgent解析出来的信息三、准备工具3.1 导入...

    根据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中的所有信息

    展开全文
  • 获取浏览器和访问平台var get_user_information=... //获取主流的设备信息 var browser_infor = navigator.userAgent; var browser_version = 'Failed to identify the browser'; var browser_name='Failed to ...

    获取浏览器和访问平台

    var get_user_information=function(){
        //获取主流的设备信息
        var browser_infor = navigator.userAgent;
        var browser_version = 'Failed to identify the browser';
        var browser_name='Failed to identify the browser'; 
        var platform='Failed to get platform information';
    
        //平台信息
        if(browser_infor.indexOf('Windows')>-1){
            //PC平台
           platform=browser_infor.slice(browser_infor.indexOf('Windows'),browser_infor.indexOf(')'));
        }else if(browser_infor.indexOf('Linux')>-1){
            //android平台
            platform=browser_infor.substr(browser_infor.indexOf('Android'),13);
        }else if(browser_infor.indexOf('iPhone')>-1){
            // platform="iPhone";
            platform=browser_infor.slice(browser_infor.indexOf('iPhone OS'),browser_infor.indexOf('like Mac'));
        }
    
        //浏览器版本信息
        if(platform.indexOf('Windows')>-1){
            if(browser_infor.indexOf('Firefox')>-1){ 
                browser_name='Firefox'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('FireFox')-3,10);
            }else if(browser_infor.indexOf("Edge")>-1){
                browser_name='Edge'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('Edge')+5,10);
            }else if(browser_infor.indexOf('OPR')>-1){ 
                browser_name='Opera'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('OPR')+4,4);
            }else if(browser_infor.indexOf('Chrome')>-1){ 
                browser_name='Chrome'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('Chrome')+7,4);
            }else if(browser_infor.indexOf('Safari')>-1){ 
                browser_name='Safari'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('Safari')+7,15);
            }else if(browser_infor.indexOf('Trident')>-1&&browser_infor.indexOf('rv:11')>-1){ 
                browser_name='IE11'; 
                browser_version=browser_infor.substr(browser_infor.indexOf('rv')+3,4);
            }else{ 
                browser_name='A browser that is not expected'; 
                browser_version="A browser that is not expected";
            } 
        }else if(platform.indexOf('Android')>-1){
            browser_name='Android Browser'; 
            browser_version="Android Browser";
        }else if(platform.indexOf('iPhone')>-1){
            browser_name="iPhone Browser";
            browser_version="iPhone Browser";
        }
    
        return {
            browserName:browser_name,
            browserVersion:browser_version,
            platform:platform,
            loginTime:new Date()
        }
    }

    展开全文
  • 如何直接在 PC 端获取其它端设备UserAgent 信息呢 【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5909615.html 序  希望收集一批移动端(手机、平板、Kindle 以及不同的产商,如苹果、...

    如何直接在 PC 端获取其它端设备的 UserAgent 信息呢

    【博主】反骨仔    【原文地址】http://www.cnblogs.com/liqingwen/p/5909615.html

       希望收集一批移动端(手机、平板、Kindle 以及不同的产商,如苹果、三星、谷歌和诺基亚等)或者桌面端(谷歌、火狐、Oprea 和 IE 等)的 UA 信息。

       这里主要通过 Chrome 自带的开发工具介绍用法,并且以 FireFox 作为补充说明。

     

    目录

     

    一、通过 Chrome 的 Emulation 选项

      以这个网页 http://www.cnblogs.com/liqingwen 为例。

      1.鼠标右键“审查元素(N)”,或者快捷键“F12”:打开“开发人员工具”。

    图1-1 

     

      2.点击“设置”(齿轮标识)

    图1-2

     

      3.选取“Settings”下的“Devices”选项:诺基亚也有哦,这里可以自定义设备信息。

    图1-3

     

      4.关闭“Settings”,找到“Emulation”选项下的“Device”选项:就可以找到想要的 UA 信息了。

    图1-4

     

      5.切换“Network”选项:这里的的 UA 信息可以根据系统平台来显示,上面的 UA 信息是根据设备来显示的。

    图1-5

     

    二、使用 FireFox 插件:User-Agent Switcher

      User-Agent Switcher 下载地址:http://mozilla.com.cn/forum.php?mod=viewthread&tid=366876&highlight=User%2BAgent

    图2-1 火狐插件 User-Agent Switcher

       安装完自己可以按需进行点击测试。

     

     


    【参考】http://www.cnblogs.com/xiaohuochai/p/4822001.html
    【参考】http://ityun.blog.51cto.com/7464767/1570698/

     

    展开全文
  • 1)错误的获取方式:Request.Headers["HeaderUserAgent"],这个获取到的值是null,说明关键词不对,但是上面又是这样显示 2)正确的获取方式:Request.Headers["User-Agent"],关键词不区分大小写 2、所以,...

    1、运行Core,在MVC控制器方法里,可以看到请求类Request.Headers有如下一些属性

    1)错误的获取方式:Request.Headers["HeaderUserAgent"],这个获取到的值是null,说明关键词不对,但是上面又是这样显示

    2)正确的获取方式:Request.Headers["User-Agent"],关键词不区分大小写

    2、所以,不要被误导了

     

    【一句话一感想一心情】版本更新,增加测颜值推荐图文,来体验下句子的魅力

    展开全文
  • H5获取设备信息

    千次阅读 2020-03-18 20:00:04
    H5获取设备信息 背景是有个同事在问这个事情,我吃完饭,也跟着看了一下。有如下一下可行的方法 navigator.userAgent window.devicePixelRatio screen.height screen.width navigator.platform navigator.vendor ...
  • HttpUtil 获取设备信息

    2019-10-05 01:15:57
    import com.alibaba.fastjson.JSON; import eu.bitwalker.useragentutils.OperatingSystem; import eu.bitwalker.useragentutils.UserAgent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; ...
  • js获取设备信息

    2019-10-07 09:48:55
    var su = navigator.userAgent.toLowerCase(), mb = ['ipad', 'iphone os', 'midp', 'rv:1.2.3.4', 'ucweb', 'android', 'windows ce', 'windows...// su为设备信息,大家可以输出看下内容 document.getElementById...
  • function getOSAndBrowser() { var os = navigator.... var userAgent = navigator.userAgent; var info = ""; var tempArray = ""; if (os.indexOf("Win") > -1) { if (userAgent.indexOf("W...
  • 附: 如果前端使用的是Layui框架,使用如下代码,即可获取设备信息: var device = layui.device(); console.log(device);   {  os: "windows" //底层操作系统,windows、linux、mac等  ,ie: false //ie6-11的...
  • js 获取硬件设备信息

    千次阅读 2014-12-12 16:48:26
    1、检测安卓设备  var userAgent = navigator.userAgent;  var index = userAgent.indexOf("Android")  if(index >= 0){  var androidVersion = parseFloat(userAgent.slice(index+8));  if
  • C#服务器端获取用户设备信息

    千次阅读 2018-04-01 19:33:10
    C#服务器使用Request.UserAgent 使用语言:C# 环境:.net Framework 4.6.1 (当前使用) MVC4 (貌似支持所有NetWeb环境,我就不多说了) using System; using System.Web.Mvc; namespace ServerMonitoring....
  • if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面 var ua = navigator.userAgent.toLowerCase();//获取判断用的对象 if (ua.match(/MicroMessenger/i) == "micromessenger") {...
  • 总结了浏览器信息相关以及移动设备信息获取方法 首先提供一个较为简洁的获取方法,一般用于判断设备型号: function getOS() { // 获取当前操作系统 var os; if (navigator.userAgent.indexOf('Android') &...
  • 简述: $(function(){ var userAgent = navigator.userAgent; alert(userAgent) var index = userAgent.indexOf("Android") if(index >= 0){ var androidVersion = parseFloat(userAgent.slice
  • 不同设备浏览器的userAgent值大全

    千次阅读 2013-01-29 00:34:47
    最近在使用jQuery进行网站产品开发,涉及到浏览器兼容性问题比较多,于是决定集中...方式获取浏览器的userAgent信息: 为了直观起见,直接把截图放上来吧: IE6 IE7 IE8 IE9 Firefox
  • 最近在使用jQuery进行网站产品开发,涉及到浏览器兼容性问题比较多,于是决定集中...方式获取浏览器的userAgent信息: 为了直观起见,直接把截图放上来吧: IE6 IE7 IE8 IE9 Firefox
  • js判断当前设备及获取设备

    千次阅读 2019-04-11 10:20:52
    var u = navigator.userAgent; var app = navigator.appVersion;// appVersion 可返回浏览器的平台和版本信息。该属性是一个只读的字符串。 var browserLang = (navigator.browserLanguage || navigator.lang...
  • 前端获取设备机型

    千次阅读 2019-05-15 02:04:44
    获取navigator.userAgent //vue mounted(){ console.log(navigator.userAgent); let phone = navigator.userAgent;//设备机型的相关信息 phone = phone.substring(phone.indexOf('(')+1,phone.indexOf(';'));...
  • js获取设备型号

    千次阅读 2019-04-01 09:58:18
    var u = navigator.userAgent; // 获取设备信息 if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { alert( 'android';) } else if (u.indexOf...
  • /** ... //设备信息 var u = navigator.userAgent; // appVersion 可返回浏览器的平台和版本信息。该属性是一个只读的字符串。 var app = navigator.appVersion; //获取浏览器语言 var brow...
  • 最近在使用jQuery进行网站产品开发,涉及到浏览器兼容性问题比较多,于是决定集中整理一下...方式获取浏览器的userAgent信息: 为了直观起见,直接把截图放上来吧: IE6 IE7 IE8 IE9 Firefox Chrome Opera Safa
  • * 判断当前设备 * @returns */ function currDevice(){ var u = navigator.userAgent; var app = navigator.appVersion;// appVersion 可返回浏览器的平台和版本信息。该属性是一个只读的字符串。 var ...
  • UserAgent解析

    2017-09-06 11:26:00
    C# 后台用 UAParser 库,可以获取客户端系统名称以及版本、设备名称以及版本、浏览器信息和版本; JS 后台用ua-parser.js库,可以获取客户端系统名称以及版本、设备名称以及版本、浏览器信息和版本; 转载于:...
  • Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全 最近在使用jQuery进行网站产品开发,涉及到...方式获取浏览器的userAgent信息: 为了直观起见,直接把截图放上来吧: IE6 IE7 IE8 I
  • js获取手机设备型号,兼容h5 var brand = (window.navigator.userAgent).toLowerCase(); //获取手机型号信息,兼容h5 if (brand.indexOf(‘huawei’) != -1) { console.log(“华为”); } else if (brand.indexOf(...
  • function getOS() { // 获取当前操作系统 var os; if (navigator.userAgent.indexOf('Android') &gt; -1 || navigator.userAgent.indexOf('Linux') &gt; -1) { os = 'Android'; } else if (navigator.u....
  • function getOS() { // 获取当前操作系统 var os; if (navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexOf('Linux') > -1) { os = 'Android'; } else if (navigator.userAg...

空空如也

1 2 3 4
收藏数 68
精华内容 27
热门标签
关键字:

useragent 获取设备信息