【问题标题】:Why is $_SERVER['REMOTE_ADDR'] showing a wrong ip?为什么 $_SERVER['REMOTE_ADDR'] 显示错误的 ip?
【发布时间】:2026-01-28 22:10:02
【问题描述】:

我使用$_SERVER['REMOTE_ADDR']; 来获取访问者的IP。我不在乎他们是否在代理、VPN 等后面;我需要一个最终用户无法操纵的 IP 度量。

对于某些用户,$_SERVER['REMOTE_ADDR']; 没有返回正确的 IP,而是返回了 Google 的一个 IP,例如 64.233.173.164

我通过检查here 让一位用户检查他们的IP 来确认这一点,结果他们的IP 与$_SERVER['REMOTE_ADDR']; 显示的不同。

这怎么可能?

更新:我已经与有问题的特定用户进行了交谈,他说他没有使用谷歌翻译。为什么 Google IP 会显示在 REMOTE_ADDR 中?

【问题讨论】:

  • 可能是他们翻译了你的页面
  • 你确定是你用户的IP吗?它可能是谷歌机器人之一或类似的东西?
  • “我只需要最终用户无法操纵的 IP 度量。”我可以更改我的 IP,我是最终用户。 IP永远不能用来可靠地识别任何人。数百人可以共享一个 IP
  • @FastSnail Ahhhh 可能是。我是否可以通过他们的翻译页面检测 IP?
  • 每个 IP 一个事务 = 因为我之前指出的原因,这永远行不通。

标签: php ip


【解决方案1】:

我不在乎他们是否在代理、VPN 等后面;

您必须这样做,如果他们使用 VPN、代理或 NAT,那么$_SERVER['REMOTE_ADDR'] 将包含 那个 ip 而不是用户的,这就是您所得到的。

更新:我已经与有问题的特定用户进行了交谈,他说他没有使用谷歌翻译。为什么 Google IP 会显示在 REMOTE_ADDR 中?

您在 OP 中提到的那个 Google IP 属于 google-proxy-64-233-173-164.google.com,这是该访问者的计算机或 ISP 正在使用的代理

如果您要查看HTTP_X_FORWARDED_FORHTTP_CLIENT_IP,您将获得该信息

【讨论】:

  • 除了他说他没有使用的谷歌翻译之外,用户究竟会使用什么来获取谷歌 IP?
  • 您在 OP 中提到的那个 Google IP 属于 google-proxy-64-233-173-164.google.com,这是该访问者的计算机或 ISP 正在使用的代理。
  • 所以 ISP 在后端使用 Google 代理?我怎样才能可靠地获得HTTP_CLIENT_IP 而不会冒着用户在他们最后更改它的风险?正如我所说,我不在乎他们是否使用 VPN 或代理,但我不希望他们只是通过更改它们的标头来循环访问 IP。
  • 除非您的用户在技术上知道他们试图破坏什么并使用允许他们更改请求标头的客户端软件,否则这不是问题。您能告诉我,当您访问我的网站时,您将如何使用 chrome/ff/ie 更改您的客户端 IP?无论如何,IP 并不是准确客户的可靠指标,即使您设法完善它
  • 很公平。首选哪个HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR
最近更新 更多