我为我的网站创建了统计数据,其中正在收集每日唯一视图和总视图。在非隐蔽的视图中,我正在收集所有的IPS。
我注意到一件很奇怪的事情。某些条目具有如下所示的 IP 值
for="105.6.218.225:32174"
for="[2405:204:c10f:3307::183d:38a4]"
我用 php 获得 Ips,如下所示
$ipaddress = '';
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
}else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach ($iplist as $ip){
$ipaddress = $ip;
}
}else if(!empty($_SERVER['HTTP_X_FORWARDED'])){
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
}else if(!empty($_SERVER['HTTP_FORWARDED_FOR'])){
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
}else if(!empty($_SERVER['HTTP_FORWARDED'])){
$ipaddress = $_SERVER['HTTP_FORWARDED'];
}else{
$ipaddress = $_SERVER['REMOTE_ADDR'];
}
return $ipaddress;
那么这个字符串是什么意思呢?是机器人抓取我的网站还是其他东西?
提前谢谢。
RFC 7239 Forwarded
标头不遵循预期的X-Forwarded-For
标头格式。相反,它遵循以下格式:
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
您可能只想获取for
键值对并剥离for=
部分,而不仅仅是获取完整的字符串。例如,你可以通过=
来进一步explode
字符串,检查第一部分是否for
,如果是,则使用第二部分作为IP。