如何在我的网站上检测搜索引擎访问?像phpBB

时间:2009-07-20 16:03:35

标签: php web-crawler

有没有办法在我的网站上检测搜索引擎或抓取工具。 我在管理员处看到 phpBB ,我们可以看到并允许搜索引擎,我们也可以看到机器人的最后一次访问(如Google Bot)。

PHP中的任何脚本? 不是Google Analytic或同类应用程序。 我需要为我的博客网站实现这一点,我认为有一些方法可以找到答案吗?

5 个答案:

答案 0 :(得分:10)

您可以使用机器人或网络浏览器发送给您的IP地址或“用户代理”字符串。

当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,与Gecko一样)

您可以在以下网站找到更多示例: link text  link text

然后,您可以使用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或其他统计数据包或其他方式)将是100%准确的。某些Web浏览器允许您设置自定义用户代理字符串,而一些行为不当的Web爬网程序可能根本不会发送用户代理字符串。这种方法可能对95%以上的爬虫/访问者有效。

答案 1 :(得分:5)

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

    搜索引擎倾向于使用 crawler robot 这两个词。

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

  3. 有一些IP已知是像GoogleBot这样的机器人。

答案 2 :(得分:1)

使用Piwik Device Detector library

它会自动检测a plethora of bots和自动监控服务。

答案 3 :(得分:0)

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

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

答案 4 :(得分:-2)

Google Analytics(分析)可让您查看您网站的抓取统计信息。