我一直在环顾四周,发现通过使用$_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段所示。
答案 0 :(得分:1)
如果用户使用匿名代理,代理将不会通过X-Forwarded-For
标头显示其IP - 这是匿名代理的全部要点。这意味着代理代表用户发送的请求不会泄露IP地址。如果要检测原始IP,可以使用以下三个选项:
前两个选项是非法的。第三种选择过于合法。它们都不会帮助您实时获得原始IP。
无论如何,即使你设法找到“真正的”IP并阻止它,用户仍然可以断开他们的互联网连接并重新连接以获得新的IP。这是本书中最古老的技巧 - 即使它是一个互联网技巧,我也不会惊讶地发现它比互联网本身更老......
当然,如果他们使用公共WiFi或其他东西,这个技巧将不起作用。但如果是这样的话,你会阻止整个大学,因为一个学生在使用公共WiFi时滥用你的服务器...