作者:实验室2012级刘力超

在开发站点流量统计的过程中,需要获取用户的浏览器、操作系统等信息,手工解析这些信息会比较麻烦,user-agent-utils则可以帮助我们高效地解析用户的这些信息。

1、简介

user-agent-utils 是一个用来解析 User-Agent 字符串的 Java 类库。

其能够识别的内容包括:

  • 超过150种不同的浏览器;
  • 7种不同的浏览器类型;
  • 超过60种不同的操作系统;
  • 6种不同的设备类型;
  • 9种不同的渲染引擎;
  • 9种不同的Web应用,如HttpClient、Bot

项目主页:http://www.bitwalker.eu/software/user-agent-utils

GitHub主页:https://github.com/HaraldWalker/user-agent-utils

JavaDoc:http://bitwalker.eu/user-agent-utils/javadoc/index.html

2、引入user-agent-utils

在Web项目中我们可以通过Maven引入user-agent-utils的依赖:

<dependency>
    <groupId>eu.bitwalker</groupId>
    <artifactId>UserAgentUtils</artifactId>
    <version>1.19</version>
</dependency>

或者下载附件中的jar包引入项目中。

3、用例

在web应用中我们通过request获取用户的Agent:

String agent=request.getHeader("User-Agent");

如下,我们获取了一个agent的字符串:

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"

由此,通过User-agent-utils解析:

String agent=request.getHeader("User-Agent");
//解析agent字符串
UserAgent userAgent = UserAgent.parseUserAgentString(agent);
//获取浏览器对象
Browser browser = userAgent.getBrowser();
//获取操作系统对象
OperatingSystem operatingSystem = userAgent.getOperatingSystem();

System.out.println("浏览器名:"+browser.getName());
System.out.println("浏览器类型:"+browser.getBrowserType());
System.out.println("浏览器家族:"+browser.getGroup());
System.out.println("浏览器生产厂商:"+browser.getManufacturer());
System.out.println("浏览器使用的渲染引擎:"+browser.getRenderingEngine());
System.out.println("浏览器版本:"+userAgent.getBrowserVersion());
		
System.out.println("操作系统名:"+operatingSystem.getName());
System.out.println("访问设备类型:"+operatingSystem.getDeviceType());
System.out.println("操作系统家族:"+operatingSystem.getGroup());
System.out.println("操作系统生产厂商:"+operatingSystem.getManufacturer());

运行程序输出内容:

浏览器名:Chrome 43
浏览器类型:WEB_BROWSER
浏览器家族:CHROME
浏览器生产厂商:GOOGLE
浏览器使用的渲染引擎:WEBKIT
浏览器版本:43.0.2357.81
操作系统名:Mac OS X
访问设备类型:COMPUTER
操作系统家族:MAC_OS_X
操作系统生产厂商:APPLE

由此完成了用户agent的解析。

4、总结

User-agent-utils应用的是枚举的方法解析字符串,有兴趣的朋友可以阅读源码加以了解学习。