package cn.com.qmth.mps.util; import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; /** * @Description 获取ip工具类 */ public class IpUtil { /** * 获取过程ip(默认不包含代理ip) * * @param request * @return */ public static String getRemoteIp(HttpServletRequest request) { return getRemoteIp(request, true); } /** * excludeProxyIp * * @param request * @param excludeProxyIp 是否排除代理ip * @return */ public static String getRemoteIp(HttpServletRequest request, boolean excludeProxyIp) { String ip = request.getHeader("X-Forwarded-For"); if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("x-real-ip"); } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } if (excludeProxyIp) { //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if (ip != null && ip.length() > 15) { //"***.***.***.***".length() = 15 if (ip.indexOf(",") > 0) { ip = ip.substring(0, ip.indexOf(",")); } } } if("0:0:0:0:0:0:0:1".equals(ip)) { ip="127.0.0.1"; } return ip; } }