Java获取操作系统名称 和 浏览器信息
导读:1 需求业务需求需要记录用户登录时的信息:浏览器信息、IP地址、操作系统信息等,从网上查找了很多帖子,实现方式有两种,一种纯编码判断,一种是使用UserAgentUtils工具类。 注:经测试第一种方式获取浏览器名称时获取不到IE的信息,...
1 需求
业务需求需要记录用户登录时的信息:浏览器信息、IP地址、操作系统信息等,从网上查找了很多帖子,实现方式有两种,一种纯编码判断,一种是使用UserAgentUtils工具类。 注:经测试第一种方式获取浏览器名称时获取不到IE的信息,第二种是可以的。
IE11请求的User-Agent为:
Mozilla/5.0 (Windows NT 6.1;
WOW64;
Trident/7.0;
rv:11.0) like Gecko
Chrome请求的User-Agent为:
Mozilla/5.0 (Windows NT 6.1;
Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
2 实现
使用工具类获取信息,添加maven依赖:
!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils -->
dependency>
groupId>
eu.bitwalker/groupId>
artifactId>
UserAgentUtils/artifactId>
version>
1.21/version>
/dependency>
获取浏览器名称及版本
public static String browserName(HttpServletRequest request){
String userAgent = request.getHeader("User-Agent");
UserAgent ua = UserAgent.parseUserAgentString(userAgent);
Browser browser = ua.getBrowser();
return browser.getName() + "-" + browser.getVersion(userAgent);
}
获取操作系统名称
public static String osName(HttpServletRequest request){
String userAgent = request.getHeader("User-Agent");
UserAgent ua = UserAgent.parseUserAgentString(userAgent);
OperatingSystem os = ua.getOperatingSystem();
return os.getName();
}
获取IP地址
public static String getIpAddress(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_CLUSTER_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_FORWARDED");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_VIA");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("REMOTE_ADDR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (ip.contains(",")) {
return ip.split(",")[0];
}
else {
return ip;
}
}
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java获取操作系统名称 和 浏览器信息
本文地址: https://pptw.com/jishu/4317.html