有一个万无一失的方法来获取客户端的CORRECT IP地址吗?

时间:2014-09-14 15:07:36

标签: php

我一直在环顾四周,发现通过使用$_SERVER['REMOTE_ADDR'],您可以获得客户端的IP地址。

问题是,如果客户使用代理,则该值很可能不会成为客户的真实 IP地址。< / p>

有些人建议同时使用$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_X_FORWARDED_FOR'],就像接受此问题的答案一样:How to get the client IP address in PHP?

但问题是,与大多数评论一样,$_SERVER['HTTP_X_FORWARDED_FOR']非常不可靠,任何人都可以轻松编辑。

所以,我想知道的是,获取客户端真实IP地址的最佳方式是什么?

PS:我不知道这个问题是如何重复的;在这个问题中,我要求$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_X_FORWARDED_FOR']之外的方法,这是对类似问题的回答。我还解释说,这个问题的答案是不充分的,如第4段所示。

1 个答案:

答案 0 :(得分:1)

如果用户使用匿名代理,代理将不会通过X-Forwarded-For标头显示其IP - 这是匿名代理的全部要点。这意味着代理代表用户发送的请求不会泄露IP地址。如果要检测原始IP,可以使用以下三个选项:

  1. 嗅探代理服务器的传入请求。
  2. 入侵代理服务器并阅读它的日志。
  3. 获取代理服务器运营商的法院命令,以便为您显示该IP。
  4. 前两个选项是非法的。第三种选择过于合法。它们都不会帮助您实时获得原始IP。

    无论如何,即使你设法找到“真正的”IP并阻止它,用户仍然可以断开他们的互联网连接并重新连接以获得新的IP。这是本书中最古老的技巧 - 即使它是一个互联网技巧,我也不会惊讶地发现它比互联网本身更老......

    当然,如果他们使用公共WiFi或其他东西,这个技巧将不起作用。但如果是这样的话,你会阻止整个大学,因为一个学生在使用公共WiFi时滥用你的服务器...