php 通过AU判定蜘蛛还是有bug,无法解决虚拟AU伪造蜘蛛访问!现在想改成host 和 ip的方式来判定,会的同学帮我看看该怎么修改!付费悬赏哦!
function getip()
{
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP")){
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR")){
$ip = getenv("REMOTE_ADDR");
}
else{
$ip = "Unknown";
}
return $ip;
}
//蜘蛛判定
$ip=getip();
$tmp = $_SERVER['HTTP_USER_AGENT'];
$isspider = 0;
if(strpos($tmp, 'pider') !== false){
$isspider = 1;
}else if(strpos($tmp, 'Baiduspider') !== false || strpos($tmp, 'Baiduspider') !== false);
else if(strpos($tmp, '360Spider') !== false || strpos($tmp, '360Spider') !== false);
else if(strpos($tmp, 'Sougou web spider') !== false || strpos($tmp, 'Sougou web spider') !== false){
$isspider = 1;
}
思路:
1.指定ip 和 ip段来判定蜘蛛。
2.通过nslookup 或其他方式判定是否为蜘蛛。
通过指定IP或ip段判定可能是最快的,若没匹配结果则通过nslookup获取匹配结果即可!
如果有比nslookup更快的方式可以更改,目的只有一个,快速精准判断真假蜘蛛!
注意:搜狗蜘蛛4.0 已经可以通过 nslookup 来判断
如果能实现AU加要改的判断,实现双判断,这样最好!会的同学快来捡钱了!速度哦!在线等待!