如果你是租用服务器或者有自己的服务器来做网站的,那么要记录蜘蛛访问日志是很简单和事,但是大部分站长购买自己的服务器是不太可能的。这里我教你一种方法,可以很轻松的记录蜘蛛访问日志,从而分析日志,看百度等搜索引擎是否喜欢你的网站。
深度分析百度蜘蛛代码,合理优化网站
研究百度蜘蛛的爬行规律对于网站优化意义重大,特别是对百度蜘蛛Baiduspider的研究。本文解释一下百度蜘蛛爬行后返回代码代表的具体含义:
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 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。
比如说:
2010-10-11 08:05:54 e3SVC1662187803 110.60.152.106 GET /index.php - 80 - 61.135.168.47 Baiduspider+(+http://www.baidu.com/search/spider.htm) 200 0 0
1、110.60.152.106这个就是你的网站的 IP。
2、61.135.168.47这个是爬行你网站的蜘蛛IP。
2、 Baiduspider代表代表百度蜘蛛,我们通常以此确定是哪个搜索引擎蜘蛛。
3、/index.php 就代表百度蜘蛛访问的网页
4、2010-10-11 08:05:54是百度蜘蛛爬行的日期与时间
5、代码中的200就代表百度蜘蛛爬行后返回HTTP状态代码,代码中可以了解蜘蛛爬行后的反映。
6、e3SVC1662187803这个我们不用管。
7、80代表WEB服务器的端口。
如果你的网站是http://www.tiyuchangdi.com这就意味着百度蜘蛛在2010-10-11 08:05:54 爬过http://www.tiyuchangdi.com/index.php这一页,200代表了正常;请求已完成。对于日志中的内容,我们之需要关心的是3和5项,3代表的是网页,不需要在说明,下面重点说一下第五项,我们要根据第五项来即使调整网站。
通过下面的程序你就可以记录蜘蛛访问日志,使用时你只要在你的php页面里调用以下这个文件就可以了
function get_naps_bot()
{
$useragent = strtolower($_SERVER[\\\'HTTP_USER_AGENT\\\']);
if (strpos($useragent, \\\'googlebot\\\') !== false){
return \\\'Googlebot\\\';
}
if (strpos($useragent, \\\'msnbot\\\') !== false){
return \\\'MSNbot\\\';
}
if (strpos($useragent, \\\'slurp\\\') !== false){
return \\\'Yahoobot\\\';
}
if (strpos($useragent, \\\'baiduspider\\\') !== false){
return \\\'Baiduspider\\\';
}
if (strpos($useragent, \\\'sohu-search\\\') !== false){
return \\\'Sohubot\\\';
}
if (strpos($useragent, \\\'lycos\\\') !== false){
return \\\'Lycos\\\';
}
if (strpos($useragent, \\\'robozilla\\\') !== false){
return \\\'Robozilla\\\';
}
return false;
}
function nowtime(){
$date=date("Y-m-d.G:i:s");
return $date;
}
$searchbot = get_naps_bot();
if ($searchbot) {
$tlc_thispage = addslashes($_SERVER[\\\'HTTP_USER_AGENT\\\']);
$url=$_SERVER[\\\'HTTP_REFERER\\\'];
$file="log";
$time=nowtime();
$data=fopen($file,"a");
fwrite($data,"Time:$time robot:$searchbot URL:$tlc_thispage\n");
fclose($data);
}
?>
返回的http状态诸如200 0 64分析说明
在百度研究院的论坛里看到一位版主有这样的一段解释:
蜘蛛在IIS里的行为200 0 64 的解释:
根据我前段时间到现在的观察,虽然没有足够的证据,但是基本上可以肯定在IIS中,如果蜘蛛后面的号码出现200 0 64,那么网站中的这个单页面就会在搜索引擎中消失了.我被K的页面后面都写着200 0 64 ,不知道大家是否认同,还有其他看法,当然,我说这个不够绝对,因为我也有一个页面后面显示着200 0 64 但是在搜索引擎中依旧可以找到.这也说明着问题,但大多200 0 64行为的网页就已经没有了.
所以我觉得蜘蛛的200 0 64行为可以被解释为清除数据。
这个解释,目前看 上去还是有可信度的。我认为,抓取状态成200 0 64是不正常的抓取,正常的抓取是成功标志200 0 0,当变成了200 0 64的状态时说明搜索引擎在抓取这个页面的时候出现了错误,没有正常的进行常规抓取;对于百度来说,百度很可能是已经不再把这些页面抓进主索引库,而是放进了“百度沙盒”里进行考察,考察多久,就看你如何改进,也许,你看不到百度把这些被K的网站释放出来的时候,人是没有规律的。
对于已经被百度拔毛的网站来说,如果你还在乎百度,那就赶紧改正网站上的一切**的地方,消除过度优化,消除恶意链接,等待百度再次光临,一般来说,这需要2-3个月的时间,认真做站,发现问题,解决问题,才是网站最终获得成功的关键。
下面给出一个分析案例 http状态码[size=+0] 200 [size=+0]2010-05-14 15:52:03 W3SVC1 112.124.232.185 GET /category-8-b0-min1100-max2200.html - 80 - 220.181.7.74 Baiduspider+(+baidu/search/spider.htm) 200 0 0 分析下 200 0 0组成部分 sc-status(协议状态) sc-substatus(协议子状态) sc-win32-status(Win32状态码) sc-status(协议状态): 200 连接成功 sc-substatus(协议子状态) :0 成功 sc-win32-status(Win32状态码):0 [size=+0]代表抓取成功并带回数据库 ; 64 指定的网络名不再可用
1: 在这个访问记录里面112.124.232.185是你服务器的IP地址,220.181.7.74 是bd蜘蛛的IP,/category-8-b0-min1100-max2200.html 为蜘蛛访问你的页面 80是端口 GET是打开方式 W3SVC1是记录的文件夹,这里说明,bd蜘蛛已经访问了你的category-8-b0-min1100-max2200.html 这个页面,那么最重要的是最后面的这个参数200 0 0。
2、[size=+0]200 [size=+0]0[size=+0] 0 [size=+0]成功访问该页面,[size=+0]0[size=+0]代表抓取成功并带回数据库。这个时候你就放心了,这个页面已经被bd收录,但是还没有释放出来,bd更新时就可能释放出来。
3:200 0 64 网络上流传着这么三种解释第一:64为K站的前兆。第二64的出现只是64位操作系统。第三:网络不可达,由于某种原因无法完全打开页面,或者网络不稳定这些原因,导致蜘蛛无法带回页面或者说不抓取该页面,所以200 0 64的解释也应该为:访问了该页面,但并没有任何抓取也没有带回数据库。这种原因多为空间不稳定、服务器不稳定。
4:304 0 0这个返回码代表蜘蛛访问的页面没有更新,和他之前来的时候是一样的,所以看到这个不要担心,蜘蛛来过,只不过你没有更新,所以他也不愿意带走这个页面。
5:404 0 0这个是代表404页面,但是有个很严重的问题,这个返回码告诉我们,蜘蛛来到了404页面并把他带走了,崩溃~~~~,塞是这样的话基本上你要倒霉了,塞你有太多的404,那么蜘蛛就会不断是抓取,不断的带走,这样会造成无数的重复页面,最终导致K站或者降权,正确的返回骂是404 0 64 这就代表蜘蛛没有抓取你这个页面。
6:500错误500错误是服务器内部错误,是由程序的错误造成的,我不懂程序,但是500错误是会给你减分的,这点基本的逻辑都可以想的到,塞发现500错误,马上查看是哪个页面的,然后去修正以下错误吧!
7:302塞在日志中发现302的返回码也是需要注意的,302为临时重定向,塞你是长期的将这个页面重定向到另一个页面,麻烦你使用301永久重定向,塞是302的话bd蜘蛛下次来还会访问这个页面,这样又会造成复制大量页面的问题,结果肯定是K,所以,抽空检查以下。 |