功能需求
统计用户通过何种浏览器访问系统、统计访问用户的操作系统。
依赖jar包
<!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils -->
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
<version>1.21</version>
</dependency>
实现代码
import eu.bitwalker.useragentutils.Browser;
import eu.bitwalker.useragentutils.OperatingSystem;
import eu.bitwalker.useragentutils.UserAgent;
import org.apache.http.HttpException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
* 〈一句话功能简述〉<br>
* 〈根据请求获取访问操作系统、浏览器信息〉
*
* @author Administrator
* @create 2019-02-19
* @since 1.0.0
*/
public class BrowserStatisticsUtil {
public static Logger logger = LoggerFactory.getLogger(BrowserStatisticsUtil.class);
public Map getBrowser(HttpServletRequest request) throws HttpException {
Map<String, String> map = new HashMap<String, String>();
String agent = request.getHeader("User-Agent");
UserAgent userAgentUtils = UserAgentUtils.getUserAgent(request);
userAgentUtils.getBrowser().getId();
userAgentUtils.getBrowserVersion();
userAgentUtils.getOperatingSystem();
userAgentUtils.getBrowser().getBrowserType();
//解析agent字符串
UserAgent userAgent = UserAgent.parseUserAgentString(agent);
//获取浏览器对象
Browser browser = userAgent.getBrowser();
//获取操作系统对象
OperatingSystem operatingSystem = userAgent.getOperatingSystem();
System.out.println("浏览器名:" + browser.getName());
System.out.println("浏览器id:" + browser.getId());
System.out.println("操作系统名:" + operatingSystem.getName());
map.put("browser", browser.getName());
map.put("operatingSystem", operatingSystem.getName());
return map;
}
/**
* 匹配浏览器类型
*
* @param agent
* @return
*/
public Integer[] getBrowserAndSystem(String agent) {
/*
1:谷歌浏览器
2:火狐浏览器
3:QQ浏览器
4:360浏览器
5:IE浏览器
6:其他浏览器
1: Android
2: Windows
3: IOS
4: MAC OS
5: 其他
*/
Integer browser_obj = null;
Integer system_ibj = null;
Integer[] temp = new Integer[2];
//浏览器匹配
logger.info("agent参数为:"+agent);
if (agent.indexOf("qqbrowser") > -1) {
logger.info("QQ浏览器匹配成功&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
temp[0] = 3;
}
else if (agent.indexOf("chrome") > -1) {
logger.info("谷歌匹配成功&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
temp[0] = 1;
}
else if (agent.indexOf("trident") > -1) {
logger.info("IE匹配成功&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
temp[0] = 5;
}
else if (agent.indexOf("firefox") > -1) {
logger.info("火狐匹配成功&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
temp[0] = 2;
}
else {
logger.info("其他浏览器&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
temp[0] = 4;
}
//操作系统匹配
if (agent.indexOf("android") > -1) {
temp[1] = 1;
logger.info("匹配Android系统成功---------------------------");
}
else if (agent.indexOf("windows") > -1) {
temp[1] = 2;
logger.info("匹配Windows系统成功---------------------------");
}
else if (agent.indexOf("mac os") > -1) {
if (agent.indexOf("iphone os") > -1) {
temp[1] = 4;
logger.info("匹配ISO系统成功---------------------------");
}
else {
temp[1] = 3;
logger.info("匹配MAC OS系统成功---------------------------");
}
}
else {
temp[1] = 5;
logger.info("所有匹配失败,未知系统");
}
return temp;
}
如何调用
public static void main(String[] args) {
//如果是通过http网络请求的话,应该这样写:
//String agent = request.getHeader("user-agent");
String agent = "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.32 Safari/537.36";
//解析agent字符串
UserAgent userAgent = UserAgent.parseUserAgentString(agent);
//获取浏览器对象
Browser browser = userAgent.getBrowser();
//获取操作系统对象
OperatingSystem operatingSystem = userAgent.getOperatingSystem();
System.out.println("浏览器id:" + browser.getId());
System.out.println("操作系统:" + operatingSystem.getName());
System.out.println("浏览器名:" + browser.getName());
}