怎么查服务器的ip地址


怎么查服务器的ip地址  

最近蘑菇上线了展示IP属地的功能,用户在发表动态、评论以及聊天时都会显示自己的IP属地信息。这一功能在蘑菇群聊中同样适用。接下来,我将介绍如何在Java中获取IP属地,主要分为以下几个步骤:

一、通过HttpServletRequest对象获取用户的IP地址。

二、利用获取的IP地址,去获取对应的省份、城市信息。

我们需要创建一个IP获取的工具类,因为每次用户的Request请求都会携带IP地址在请求头中。

以下是Java中获取IP地址的工具类:

java

public class IpUtil {

public static String getIpAddr(ServerHttpRequest request) {

// 获取请求头中的IP信息

HttpHeaders headers = request.getHeaders();

String ipAddress = headers.getFirst("X-Forwarded-For");

// 如果没有获取到或者使用代理的情况下,尝试获取其他形式的IP

if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {

ipAddress = headers.getFirst("Proxy-Client-IP");

}

if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {

ipAddress = headers.getFirst("WL-Proxy-Client-IP");

}

// 如果以上方式都无法获取,则获取远程地址的IP

if (ipAddress == null || ipAddress.isEmpty()) {

IpAddress ip = request.getRemoteAddress();

ipAddress = ip.getHost();

}

// 处理通过多个代理的情况,取第一个IP为客户端真实IP

if (ipAddress != null && ipAddress.contains(",")) {

ipAddress = ipAddress.split(",")[0];

}

return ipAddress;

}

这里涉及的一些HTTP头部信息解释:

- X-Forwarded-For:一个HTTP扩展头部,为了让Web服务器获取访问用户的真实IP地址。在通过代理的情况下,每个IP地址通过逗号分隔,最左边的是最原始客户端的IP地址。

- X-Real-IP:一般只记录真实发出请求的客户端IP。

- Proxy-Client-IP:这个头部信息一般在经过Apache http服务器时添加,用于记录客户端的IP。

- WL-Proxy-Client-IP:也是通过Apache http服务器,在weblogic插件添加的头信息。

获取到用户的IP地址后,就可以进一步获取对应的ip信息了。蘑菇最初使用的是淘宝IP库。

  怎么查服务器的ip地址