php - 如何获取客户端的本地IP地址和代理服务器

标签 php javascript proxy ip cgi

我读了很多文章建议使用 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/

相关文章:

http - 客户端在收到 header "200 OK"后请求超时时会通过 Squid 接收什么

javascript - 如何将记录的功能发送到我的服务器?

php - 如何将多个查询结果存储在一个变量中,然后在一张表中对其进行操作

php Mysql 联合表中准备好的查询出现问题

javascript - 过滤项目列表如何依赖于另一个列表

java - spring 使用的代理模式

javascript - 将字体存储到 cookie 并从 cookie 加载

javascript - 属性列表后缺少 jquery 验证 }

Javascript 和 RegEx : match function returns an array

java - 如何避免简单代理服务器中的连接拒绝?