我读了很多文章建议使用 http_x_forwarded_for 来获取代理服务器和客户端的真实 IP 地址,但它们似乎都不起作用。
我被分配了一个本地 IP 地址,并使用代理服务器连接到互联网。但是当我显示整个 $_SERVER 变量时,没有任何我的真实机 IP 和我使用的代理服务器的痕迹。
这个LINK显示整个 $_SERVER 变量。
我想这在 PHP 中是不可能的。我该如何做到这一点?我知道这是可能的,因为有一次我看到一些网页显示了我的真实 IP 地址和我在 Mozilla 中使用的代理服务器。但不确定它使用的是哪种语言。
我该如何完成?我准备好使用 CGI 或 JavaScript。我在互联网上找不到任何工作示例。帮忙?
最佳答案
是否发送 http_x_forwarded_for
header 完全取决于代理。有些会,有些不会。无论您在打印 $_SERVER
变量时使用哪个代理,都没有发送 header 。
即使所有代理都发送了 header ,您仍然会遇到问题,因为任何人都可以欺骗 http_x_forwarded_for
header ,因此如果您的脚本将其视为真实 IP,那么有人可以将其欺骗绕过您的 IP 检查。
如果使用$_SERVER['REMOTE_ADDR']
并且忘记依赖http_x_forwarded_for
,你能做的最好的事情就是。是的,代理用户将能够通过新 IP 访问您的网站,但这比所有用户在 http_x_forwarded_for
中欺骗 IP 的能力更好。
作为一种帮助,您可以维护一个已知代理列表,但这最终不会为您提供真实的客户端 IP,它只能告诉您该 IP 是否在您的代理列表中。
关于php - 如何获取客户端的本地IP地址和代理服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609608/