我在获得客户端ip的时候,获得的ip地址为0:0:0:0:0:0:0:1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在获得客户端ip的时候,获得的ip地址为0:0:0:0:0:0:0:1相关的知识,希望对你有一定的参考价值。

我在使用
public String getIpAddr(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();

return ip;

获得的是0:0:0:0:0:0:0:1
请问该怎么解决
另外
0:0:0:0:0:0:0:1
是什么意思?

这种格式是IPv6的格式,相当于IPv4的127.0.0.1 参考技术A <%=request.getRemoteAddr()%> 参考技术B InetAddress inet = null;
try
inet = InetAddress.getByName (request.getRemoteAddr());
catch(UnknownHostException e) e.printStackTrace();
参考技术C ipv6的地址 参考技术D 像断了一样
像断了一样

如何获得真实 IP? [关闭]

【中文标题】如何获得真实 IP? [关闭]【英文标题】:how can I get Real IP? [closed] 【发布时间】:2013-03-28 07:11:00 【问题描述】:

我开发了一个网站。我使用 $_SERVER 变量来查找客户端的 IP。刷新互联网连接时,它显示不同的IP。如何获取真实IP,让客户在一台电脑上只能注册一个账号?

【问题讨论】:

你不能。它永远不会起作用。你认为现在每个人都有静态 IP 吗? Pitchinnate 的说法是正确的,因为用户可以通过代理、*** 或隧道进行连接,并拥有完全不同的 IP 地址。 【参考方案1】:

很遗憾,无法保证一台计算机(或用户)只会注册一个帐户。即使您的大多数用户都有一个固定的 IP 地址,想要破坏您的系统的人也只会想方设法通过不同的路线连接到您的网站,这样您的支票就不会意识到他们每次都是同一个人。

您可以将您的系统设计为需要一个有效的电子邮件地址,这将减少篡改量,但不会阻止有决心的人使用一次性电子邮件地址在您的网站上注册多个帐户。

【讨论】:

作为此答案的最新更新,我将补充一点,我目前为一家使用代理服务的公司工作,以允许其使用数十个不同的 IP 地址访问和注册目标网站。目标公司并不总是很喜欢它,但英国法律似乎允许这样做。一些公司经常蠕动和阻止 IP 地址,但很容易切换到一组不同的代理并几乎立即重新获得访问权限。尝试按 IP 地址过滤永远不会让确定的客户端拖慢很长时间。

以上是关于我在获得客户端ip的时候,获得的ip地址为0:0:0:0:0:0:0:1的主要内容,如果未能解决你的问题,请参考以下文章

如何获得Socket连接客户端的IP地址

java获得IP地址

如何通过Socket获得所有客户端连接的IP地址

如何获得 500 个 IP 地址?

vb.net 怎么获取客户端ip地址?

怎样判断一个IP地址是公网地址?