package cn.lili.common.utils;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.net.InetAddress;
|
import java.net.UnknownHostException;
|
|
/**
|
* IpUtils
|
*
|
* @author Chopper
|
* @version v1.0
|
* 2020-12-08 15:32
|
*/
|
@Slf4j
|
public class IpUtils {
|
|
/**
|
* 获取本机IP
|
*
|
* @return ip
|
*/
|
public static String getLocalIp() {
|
try {
|
return InetAddress.getLocalHost().getHostAddress();
|
} catch (UnknownHostException e) {
|
log.error("获取本机IP错误",e);
|
return null;
|
}
|
}
|
|
/**
|
* 获取客户端IP地址
|
*
|
* @param request 请求
|
* @return
|
*/
|
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.getRemoteAddr();
|
}
|
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
|
if (ip != null && ip.length() > 15) {
|
if (ip.indexOf(",") > 0) {
|
ip = ip.substring(0, ip.indexOf(","));
|
}
|
}
|
if ("0:0:0:0:0:0:0:1".equals(ip)) {
|
ip = "106.124.130.167";
|
}
|
return ip;
|
}
|
|
|
public static void main(String[] args) {
|
System.out.println(IpUtils.getLocalIp());
|
}
|
}
|