精华内容
参与话题
问答
  • 文章目录根据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中的所有信息

    展开全文
  • PHP获取user-agent中的终端与手机型号

    千次阅读 2019-06-19 11:59:11
    <?...$agentStr = "Mozilla/5.0 (Linux; Android 8.0.0; STF-AL10 Build/HUAWEISTF-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044432 Mobile Saf...
    <?php
    $agentStr = "Mozilla/5.0 (Linux; Android 8.0.0; STF-AL10 Build/HUAWEISTF-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044432 Mobile Safari/537.36 MMWEBID/7596 MicroMessenger/7.0.3.1400(0x27000335) Process/tools NetType/WIFI Language/zh_CN";
    
    $strPattern = "/Mozilla\/5.0\s*\([^\(\)]*?(Windows[^\(\)]*?|Android[^\(\)]*?|iPhone);\s*([^\(\)]*?)\)/";
    $arrMatches = [];
    preg_match_all($strPattern, $agentStr, $arrMatches);
    var_dump($arrMatches);
    ?>
    
    展开全文
  • 获得浏览器中的 header 信息 &lt;%String userAgent = ((HttpServletRequest)pageContext.getRequest()).getHeader("User-Agent");%&gt;   &lt;% String phone_uaflag="";  ...

     

    获得浏览器中的 header 信息

    <%String userAgent = ((HttpServletRequest)pageContext.getRequest()).getHeader("User-Agent");%>

     

    <%  String phone_uaflag="";

     

    if (userAgent.toLowerCase().indexOf("android")>-1){

    phone_uaflag="Android";

     

    }else if(userAgent.toLowerCase().indexOf("msie")>-1){

    phone_uaflag="WindowsPhone";

     

    }else if (userAgent.toLowerCase().indexOf("iphone")>-1){

    phone_uaflag="iPhone";

    }%>

     

     

    亦可使用 Navigator对象包含有关浏览器的信息  navigator.userAgent

     注释:没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象

    展开全文
  • User-agent获取手机类型

    千次阅读 2015-05-16 15:18:07
    网上找的方法不能精确显示型号,对iphone无法取出改良后,代码如下,还需进一步验证修改: package org.mice.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; ... * 类名称:MiceUtils....
    • 网上找的方法不能精确显示型号,对iphone无法取出
    • 改良后,代码如下,还需进一步验证修改:
    package org.mice.utils;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 
     * 类名称:MiceUtils.java 
     * 类描述:经常使用的类方法
     * 
     * @author chenph
     * @CreateDate:2015年5月16日
     * @version 1.0
     */
    public class MiceUtils {
    	// 从user-agent中取出手机类型
    	//static Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/");  
    	static Pattern pattern = Pattern.compile(";\\s?[^;\\s]*?(\\s?\\S*?)\\s?(Build)?/");  
    	
    	/**
    	 * 获取手机类型
    	 * @param agent
    	 * @return
    	 */
    	public static String getMobileType(String agent){
    		if(agent.indexOf("iPhone") != -1){
    			return "iPhone";
    		}
    	    Matcher matcher = pattern.matcher(agent);  
    	    String model = null;  
    	    if (matcher.find()) {  
    	        model = matcher.group(1).trim();  
    	        return model;
    	    }  
    	    return "";
    	}
    	
    	public static void main(String args[]){
    		//String agent = "Mozilla/5.0 (Linux; U; Android 5.0.2; zh-CN; XT1079 Build/LXB22.99-7.1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.4.0.558 U3/0.8.0 Mobile Safari/534.30";
    		String agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/12D508 UCBrowser/10.4.5.568 Mobile";
    		System.out.println(MiceUtils.getMobileType(agent));
    	}
    }
    


    展开全文
  • webapp根据User-Agent获取手机信息

    千次阅读 2016-08-02 11:24:38
    使用ionic做webapp应用appStore时,为了判断当前用户是android用户还是ios用户,从useragent获取用户信息,当前做法不够完善 package com.baosight.webapp.util; public class UserAgentUtil { public st
  • 在网页中通过userAgent获取手机获取手机操作系统类型
  • 发现了一个网站,输入user-agent可以提取出手机的终端信息,包括手机终端名称,厂商,上市日期,还有一些手机的详细信息,在这里记录一下 网站地址: http://www.wholedata.top:81 这里是我自测的user-agent Mozilla...
  • fake_useragent.json

    2020-03-05 17:05:16
    fake_useragent 本地文件,版本为 0.1.11。FakeUserAgentError('Maximum amount of retries reached') 彻底解决办法中,fake_useragent.json 文件需要从 herokuapp 下载。为无法打开 herokuapp 网站的朋友提供下载。
  • 在使用 Python 做爬虫的时候,我们需要伪装头部信息骗过网站的防爬策略,Python 中的第三方模块 fake_useragent 就很好的解决了这个问题,它将给我们返回一个随机封装了好的头部信息,我们直接使用即可 fake_...
  • from fake_useragent import UserAgent ua = UserAgent() # 实例化,实例化时需要联网但是网站不太稳定 print(ua.ie) # 随机打印一个 ie 浏览器的头 print(ua.random) # 随机打印 User-Agent 2. 模块下载 ...
  • 在新电脑(windows)上安装了fake-useragent,但是不能正常工作,出现如题的报错 fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached 然后参考相关帖子并未发现能解决我的问题,有一篇...
  • 一、fake_useragent的安装 二、Python3中fake_useragent的使用 输出ie,firefox,chrome,随机浏览器版本,对应的useragent; 爬虫程序中的具体使用:随机请求头ua.random 三、应用于scrapy爬虫项目 在...
  • 使用fake_useragent库伪装请求头

    千次阅读 2018-08-08 18:54:20
    在编写爬虫进行网页数据的时候,大多数情况下,需要在请求是增加请求头,下面介绍一个python下非常好用的伪装请求头的库:fake-useragent,具体使用说明如下: 安装fake-useragent库 pip install fake-...
  • from fake_useragent import UserAgent # 版本 '0.1.11' ua = UserAgent() # 实例化对象时报错 原因:fake-useragent维护的浏览器列表: http://fake-useragent.herokuapp.com/browsers/0.1.11 访问不了。 解决: ...
  • fake_useragent UserAgent

    2019-10-28 18:06:46
    fromfake_useragentimportUserAgent ...ua=UserAgent() ua.random 1.requests url = 'https://api.github.com/some/endpoint' headers = {'user-agent':ua.random} r = requests.get(url, headers=hea...
  • 1、安装 fake_useragent 建议在虚拟环境中操作 pip install fake_useragent 2、示例代码 from fake_useragent import UserAgent # 得到ua对象 ua = UserAgent() #ie浏览器的user agent print(ua.ie) #opera...
  • 为了爬虫需要,经常要构造头部代理,而python的fake_useragent模块提供了这个功能,不需要每次都自己写一堆代理的代码了。 首先,fake_useragent在python3.5的版本上安装是有问题的,我是升级到3.7的版本之后再回去...
  • 一、问题综述 Anaconda虚拟环境虽然提供了很多便利,但是有些包不...1. 安装fake_useragent >> sudo pip3 install fake-useragent 2. 安装scrapy # 安装依赖包 1) sudo apt-get install libffi-dev 2) s...
  • scrapy 伪装代理和fake_userAgent的使用 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用ip来伪装请求直接将自己的浏览器信息给伪装也是可以的。 第一种方法: 1.在setting.py文件中加入以下...
  • from fake_useragent import UserAgent # 版本 '0.1.11' ua = UserAgent() 出现以下报错 Error occurred during loading data. Trying to use cache server http://d2g6u4gh6d9rq0.cloudfront.net/b...
  • 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用ip来伪装请求直接将自己的浏览器信息给伪装也是可以的。 第一中方法: 1.在setting.py文件中加入以下内容,这是一些浏览器的头信息 USER_...
  • Python fake_useragent模块报错 pip install -U fake-useragent 升级一下 https://fake-useragent.herokuapp.com/browsers/0.1.11 from fake_useragent import UserAgent ua = UserAgent() #ie浏览器的user ...
  • fake_useragent 实例化对象时报错

    千次阅读 热门讨论 2018-12-11 11:16:53
    import fake_useragent # 实例化对象时报错 ua = fake_useragent.UserAgent() socket.timeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call ...
  • 我在学习写爬虫的时候,需要用到fake_useragent,刚开始的时候,我按照网络上的教程,通过cmd输入pip install fake_useragent来实现安装fake_useragent,如下所示 但是安装完成后发现:from fake_useragent import ...
  • from fake_useragent import UserAgent import requests ua=UserAgent() #请求的网址 url="http://www.baidu.com" #请求头 headers={"User-Agent":ua.random} #请求网址 response=requests.get...
  • 2020年最新 win环境下 from fake_useragent import UserAgent报错 相信大家都遇到这样的问题:尤其是cmd下的卸载重新安装也是无法进行安装的 解决办法:在pycharm中的Terminal执行pip install fake_useragent
  • 介绍 简介: UserAgent是识别浏览器的一串...fake-useragent对频繁更换UserAgent提供了很好的支持,可谓防反扒利器。 安装: pip install fake-useragent 简单使用 生成随机请求头 >>> from fa...
  • raise FakeUserAgentError('Maximum amount of retries ...fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached 在使用 fake_useragent 的时候出现如下错误 raise FakeUserAgentErr...
  • 如果你的错误显示这个信息:则只需一步既可以搞定: 解决方法:(因为小虾的python版本是python3.7) pip3.7 install fake-useragent ...
  • 参考网站 pypi网站:https://pypi.org/project/fake-useragent/ User Agent String.... 简单示例 # -*- coding: utf-8 -*- ...# @File : fake_useragent_demo.py # @Date...

空空如也

1 2 3 4 5 ... 20
收藏数 10,792
精华内容 4,316
关键字:

useragent获取手机信息