如何检测搜索引擎访问我的网站?类似于phpBB。

5

有没有办法在我的网站上检测搜索引擎或网络爬虫?我在phpBB中看到管理员可以查看和允许搜索引擎,同时我们也可以看到机器人(如Google Bot)的最后一次访问。

有没有PHP脚本可以实现这个功能?不是Google Analytics或同类应用程序。我需要在我的博客网站上实现它,我认为有某种方法可以找出来?

5个回答

10
你可以通过IP地址或者机器人或浏览器发送的“User-Agent”字符串来进行识别。当Googlebot(或者其他表现良好的机器人)访问你的网站时,他们会发送一个 $_SERVER['HTTP_USER_AGENT'] 变量来标识自己。一些例子如下:
Googlebot/2.1 (+http://www.google.com/bot.html)
NutchCVS/0.8-dev (Nutch; http://lucene.apache.org/nutch/bot.html

Baiduspider+(+http://www.baidu.com/search/spider_jp.html)

这是一个用户代理字符串的例子:Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/531.4 (KHTML, like Gecko)

你可以在以下网站上找到更多例子: 链接文本 链接文本

然后,您可以使用PHP来检查这些用户代理字符串,以确定用户是否为搜索引擎。我经常使用类似于以下内容的东西:

$searchengines = array(
    'Googlebot', 
    'Slurp', 
    'search.msn.com', 
    'nutch', 
    'simpy', 
    'bot', 
    'ASPSeek', 
    'crawler', 
    'msnbot', 
    'Libwww-perl', 
    'FAST', 
    'Baidu', 
    );
$is_se = false;
foreach ($searchengines as $searchengine){
   if (!empty($_SERVER['HTTP_USER_AGENT']) and 
            false !== strpos(strtolower($_SERVER['HTTP_USER_AGENT']), strtolower($searchengine)))
    {
            $is_se = true;
            break;
    }
}
if ($is_se) { print('Its a search engine!'); } 

记住,没有任何检测方法(包括Google Analytics或其他统计软件)能够百分之百准确。一些网络浏览器允许您设置自定义用户代理字符串,而一些不良的网络爬虫可能根本不会发送用户代理字符串。尽管如此,该方法对95%以上的爬虫/访问者可能是有效的。

5
  1. 您可以尝试使用用户代理字符串来检测它们。您可以在这里找到它们的列表:http://www.botsvsbrowsers.com/

    搜索引擎倾向于使用单词 crawlerrobot

  2. 搜索引擎几乎是唯一访问robots.txt的互联网用户。

  3. 有一些已知的IP地址是机器人,例如GoogleBot。


1

0

Google Analytics的替代方案,可以让您保留数据:

Piwik是用PHP实现的,与GA的操作方式相同。另外两个是Web服务器日志分析器。


-2

Google Analytics 可以让您查看网站的爬行统计数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接