首页后端开发JAVAJava获取操作系统名称 和 浏览器信息

Java获取操作系统名称 和 浏览器信息

时间2023-04-21 05:36:01发布访客分类JAVA浏览596
导读: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操作系统登录工具类浏览器

若转载请注明出处: Java获取操作系统名称 和 浏览器信息
本文地址: https://pptw.com/jishu/4317.html
面试官问:了解Mysql主从复制原理么?我呵呵一笑 Java的字节(byte)数组与Python3中的字节类型负值问题

游客 回复需填写必要信息