springboot獲取請求ip、系統、瀏覽器等信息


1、添加依賴

<!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils -->
        <dependency>
            <groupId>eu.bitwalker</groupId>
            <artifactId>UserAgentUtils</artifactId>
            <version>1.21</version>
        </dependency>

2、使用方法

UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("user-agent"));
        String clientType = userAgent.getOperatingSystem().getDeviceType().toString();
        LOGGER.info("clientType = " + clientType);   //客戶端類型  手機、電腦、平板
        String os = userAgent.getOperatingSystem().getName();
        LOGGER.info("os = " + os);    //操作系統類型
        String ip = IpUtil.getIpAddr(request);
        LOGGER.info("ip = " + ip);    //請求ip
        String browser = userAgent.getBrowser().toString();
        LOGGER.info("browser = " + browser);    瀏覽器類型

  //其中ip的獲取方式
    public static String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
//LOGGER.error("X-Real-IP:"+ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("http_client_ip");
      // LOGGER.error("http_client_ip:"+ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
      // LOGGER.error("getRemoteAddr:"+ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
      // LOGGER.error("Proxy-Client-IP:"+ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
      // LOGGER.error("WL-Proxy-Client-IP:"+ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
      // LOGGER.error("HTTP_X_FORWARDED_FOR:"+ip);
}
  // 如果是多級代理,那么取第一個ip為客戶ip
if (ip != null && ip.indexOf(",") != -1) {
ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
      // LOGGER.error("ip:"+ip);
}
return ip;
}

 獲取不到請求ip的一種可能及解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM