【发布时间】:2014-11-22 00:42:36
【问题描述】:
我通过为每个下载添加一个包含下载者的 IP 地址和主机的数据库条目来跟踪我的网站的下载。
我使用这个 PHP 代码来检索 IP 地址
isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]
和带有PHP函数gethostbyaddr的主机,传递IP地址。
多年来一直运行良好,直到发生了奇怪的事情:
今天看到两个下载入口,IP地址和主机都是2a02:2028:1aa:2dc1:854e:9ccc:b423:7c93。
Domaintools 说这是一个“格式错误的域或 IP”。
谁能告诉我那是什么东西以及为什么它的格式不正确?
我不认为它是机器人什么的,因为我的东西只能被真人下载,所以我真的很困惑?!
【问题讨论】:
-
HTTP_X_FORWARDED_FOR标头可以手动更改,REMOTE_ADDR不能。 -
使用代理或 TOR 将更改 REMOTE_ADDR 就好了。在这种情况下,@OliverCharlesworth 是绝对正确的。它只是一个 IPv6 地址,无需担心。
-
您不能将
REMOTE_ADDR更改为您想要的任何内容吗?它始终是一个 IP 地址,HTTP_X_FORWARDED_FOR可以更改为您想要的任何字符串。 -
它应该包含一个IP地址是的。我确信规则有例外(被黑的 PHP 服务器),但通常可以安全地假设里面有一个 IP 地址。但这并不意味着你不能改变它。
标签: php ip ip-address malformed gethostbyaddr