用于检测来自垃圾邮件发送者的真实搜索蜘蛛的小PHP代码

时间:2011-03-18 14:48:43

标签: php bots

嗨,我只是想要你对这个代码的看法,我在一个网站上找到了来自垃圾邮件发送者的真实搜索蜘蛛是不是很好?你对这个主题的其他脚本或方法有任何建议吗

<?php 
$ua = $_SERVER['HTTP_USER_AGENT'];

$spiders=array('msnbot','googlebot','yahoo');

$pattern=array("/\.google\.com$/","/search\.live\.com$/","/\.yahoo\.com$/");

for($i=0;$i < count($spiders) and $i < count($pattern);$i++)

{

  if(stristr($ua, $spiders[$i])){

    //it's pretending to be MSN's bot or Google's bot

    $ip = $_SERVER['REMOTE_ADDR'];

    $hostname = gethostbyaddr($ip);



    if(!preg_match($pattern[$i], $hostname))

    {

      //the hostname does not belong to either live.com or googlebot.com.

      //Remember the UA already said it is either MSNBot or Googlebot.

      //So it's a spammer.

      echo "spammer";

      exit;

    }

    else{

      //Now we have a hit that half-passes the check. One last go:

      $real_ip = gethostbyname($hostname);

      if($ip != $real_ip){

        //spammer!

        echo "Please leave Now spammr";

        break;

      }

      else{

        //real bot

      }

    }

  }

  else

  {

    echo "hello user";

  }

}

注意:它使用了这个代码的用户代理切换器,它工作得很好,但不确定它是否适用于现实世界,所以你觉得怎么样?

2 个答案:

答案 0 :(得分:3)

什么会阻止垃圾邮件发送者简单地提供完全正确的用户代理字符串?

我认为这是毫无意义的。您必须至少比较IP范围(或其名称服务器)以获得可靠的结果。这适用于Google:

Google Webmaster Central: How to verify Googlebot

但即使您以这种方式测试Google和Bing,一个spambot也可以通过提供浏览器用户代理进入您的网站。因此,最终无法检测到垃圾邮件机器人。它们是现实,没有好办法让它们远离网站。

答案 1 :(得分:0)

你也可以拥有htaccess,这样就可以像本教程一样阻止这样的事情 http://perishablepress.com/press/2007/06/28/ultimate-htaccess-blacklist/