Java 获取用户操作系统类型、ip地址、浏览器类型代码

161 阅读1分钟

后台管理系统利用aop来记录用户的一些数据 这三种算是目前比较常见的 当然还有归属地,等我开发到在写关于归属地的问题哈哈哈

获取用户操作系统

private static String osName(HttpServletRequest request){
    String userAgent = request.getHeader("User-Agent");
    UserAgent ua = UserAgent.parseUserAgentString(userAgent);
    OperatingSystem os = ua.getOperatingSystem();
    return os.getName();
}

获取浏览器名称

private 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);
}

获取ip地址

private 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;
    }
}