获取搜索引擎spider痕迹

如何分析网站日志中的搜索引擎爬虫轨迹?
  首先,加入你要搜索百度的爬虫,那么就直接在保存记录的文本文档上搜索”Baiduspider”,我们节选以下一行来做详细的分析:
  2010-07-19 13:02:40 W3SVC321 219.148.111.205 GET /index.html – 80 – 61.135.168.39 Baiduspider+(+http://www.baidu.com/search/spider.htm) 200 0 64- – www.onexin.net
  这段IIS日志代码表示:在2010-07-19 13:02:40这个时间,百度搜索引擎的蜘蛛(ip地址为61.135.168.39,后面的http://www.baidu.com/search/spider.htm是关于Baiduspider+的相关问题)访问了服务器ip为219.148.111.205的网站www.onexin.net,并且抓取了首页/index.html,该日志记录保存在 W3SVC321文件夹。

//获取蜘蛛爬虫名或防采集
function isSpider(){
    $bots = array(
                    'Google'    => 'googlebot',
                    'Baidu'        => 'baiduspider',
                    'Yahoo'        => 'yahoo slurp',
                    'Soso'        => 'sosospider',
                    'Msn'        => 'msnbot',
                    'Altavista'    => 'scooter ',
                    'Sogou'        => 'sogou spider',
                    'Yodao'        => 'yodaobot'
            );
    $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
    foreach ($bots as $k => $v){
        if (strstr($v,$userAgent)){
            return $k;
            break;
        }
    }
    return false;
}

获取哪种蜘蛛爬虫后保存蜘蛛痕迹。根据采集的时候HTTP_USER_AGENT为空可以来防止采集

//抓蜘蛛爬虫
$spi    = isSpider();
if($spi){
    $tlc_thispage    = addslashes($_SERVER['HTTP_USER_AGENT']);
    $file            = 'robot.txt';
    $time            = date('Y-m-d H:i:s',mktime());
    $handle            = fopen($file,'a+');
    $PR                = $_SERVER['REQUEST_URI'];
    fwrite($handle, "Time:{$time} ROBOT:{$spi} AGENT:{$tlc_thispage} URL:{$PR} \n\r");
    fclose($handle);
}

其中,两个地方值得说明:
  一是代码中的200表示搜索引擎蜘蛛爬行后返回HTTP的状态代码,代表成功爬行并抓取。

HTTP的状态代码的具体意思参见如下:
  2xx 成功
  200 正常;请求已完成。
  201 正常;紧接 POST 命令。
  202 正常;已接受用于处理,但处理尚未完成。
  203 正常;部分信息 — 返回的信息只是一部分。
  204 正常;无响应 — 已接收请求,但不存在要回送的信息。
  3xx 重定向
  301 已移动 — 请求的数据具有新的位置且更改是永久的。
  302 已找到 — 请求的数据临时具有不同 URI。
  303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。
  304 未修改 — 未按预期修改文档。
  305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。
  306 未使用 — 不再使用;保留此代码以便将来使用。
  4xx 客户机中出现的错误
  400 错误请求 — 请求中有语法问题,或不能满足请求。
  401 未授权 — 未授权客户机访问数据。
  402 需要付款 — 表示计费系统已有效。
  403 禁止 — 即使有授权也不需要访问。
  404 找不到 — 服务器找不到给定的资源;文档不存在。
  407 代理认证请求 — 客户机首先必须使用代理认证自身。
  410 请求的网页不存在(永久);
  415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。
  5xx 服务器中出现的错误
  500 内部错误 — 因为意外情况,服务器不能完成请求。
  501 未执行 — 服务器不支持请求的工具。
  502 错误网关 — 服务器接收到来自上游服务器的无效响应。
  503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。

二、各大搜索引擎爬虫(蜘蛛)的名称整理如下,大家可以对号入座:
  1. Google爬虫名称
  1) Googlebot:从Google的网站索引和新闻索引中抓取网页
  2) Googlebot-Mobile针对Google的移动索引抓取网页
  3) Googlebot-Image:针对Google的图片索引抓取网页
  4) Mediapartners-Google:抓取网页确定 AdSense 的内容。只有在你的网站上展示 AdSense 广告的情况下,Google才会使用此漫游器来抓取您的网站。
  5) Adsbot-Google:抓取网页来衡量 AdWords 目标网页的质量。只有在你使用 Google AdWords 为你的网站做广告的情况下,Google才会使用此漫游器。
  2. 百度(Baidu)爬虫名称:Baiduspider
  3. 雅虎(Yahoo)爬虫名称:Yahoo Slurp
  4. 有道(Yodao)蜘蛛名称:YodaoBot
  5. 搜狗(sogou)蜘蛛名称:sogou spider
  6. MSN的蜘蛛名称:Msnbot

其他的搜索引擎我们使用得很少,有兴趣您可以收集:)。

Leave a Reply