大数据全系列 教程
1869个小节阅读:466.8k
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
解析浏览器的相关信息user agent,使用到的jar包:uasparser-0.6.1.jar。
测试解析浏览器信息:cn.itbaizhan.etl.util.TestUserAgentUtil
xxxxxxxxxx
public class TestUserAgentUtil {
public static void main(String[] args) throws UnsupportedEncodingException {
String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36";
UserAgentInfo info = UserAgentUtil.analyticUserAgent(userAgent);
System.out.println(info);
userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; GWX:QUALIFIED; rv:11.0) like Gecko";
info = UserAgentUtil.analyticUserAgent(userAgent);
System.out.println(info);
userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0";
info = UserAgentUtil.analyticUserAgent(userAgent);
System.out.println(info);
//
userAgent = URLDecoder.decode("Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64%3B%20rv%3A78.0)%20Gecko%2F20100101%20Firefox%2F78.0","UTF-8");
info = UserAgentUtil.analyticUserAgent(userAgent);
System.out.println(info);
}
}
使用的类cn.itbaizhan.etl.util.UserAgentUtil:
xxxxxxxxxx
UserAgentInfo analyticUserAgent(String userAgent)
实体类UserAgentInfo类:
xxxxxxxxxx
public static class UserAgentInfo {
private String browserName; // 浏览器名称
private String browserVersion; // 浏览器版本号
private String osName; // 操作系统名称
private String osVersion; // 操作系统版本号
//省略getters和setters
......
}
分析UserAgentUtil
xxxxxxxxxx
public class UserAgentUtil {
static UASparser uasParser = null;
// static 代码块, 初始化uasParser对象
static {
try {
uasParser = new UASparser(OnlineUpdater.getVendoredInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 解析浏览器的user agent字符串,返回UserAgentInfo对象。<br/>
* 如果user agent为空,返回null。如果解析失败,也直接返回null。
*
* @param userAgent
* 要解析的user agent字符串
* @return 返回具体的值
*/
public static UserAgentInfo analyticUserAgent(String userAgent) {
UserAgentInfo result = null;
if (!(userAgent == null || userAgent.trim().isEmpty())) {
// 此时userAgent不为null,而且不是由全部空格组成的
try {
cz.mallat.uasparser.UserAgentInfo info = null;
info = uasParser.parse(userAgent);
result = new UserAgentInfo();
result.setBrowserName(info.getUaFamily());
result.setBrowserVersion(info.getBrowserVersionInfo());
result.setOsName(info.getOsFamily());
result.setOsVersion(info.getOsName());
} catch (IOException e) {
// 出现异常,将返回值设置为null
result = null;
}
}
return result;
}
//内部类
public static class UserAgentInfo {
......
}
}