Apache 日志分析
我们公司的apache日志类型是混合类的“Combined Log Format”,这是apache官方的一种叫法。结构如下;
"%h %l %u %t /"%r/" %>s %b /"%{Referer}i/" /"%{User-agent}i/""
如果要看apache日志的其他详细介绍见:http://httpd.apache.org/docs/1.3/logs.html
一、%h %l %u %t /"%r/" %>s %b
的解释
举例说明
216.35.116.91 - - [19/Aug/2000:14:47:37 -0400] "GET / HTTP/1.0" 200 654
%h
216.35.116.91 :远程主机的地址,即它表明访问网站的究竟是谁;
%l
%u - -
%t
[19/Aug/2000:14:47:37 -0400] :请求的时间;
/"%r/"
GET / HTTP/1.0 : http请求类型 和请求的页面,这里没有具体的页面;
%>s
200 : 状态代码 (还有500,404等等);
%b
654 :表示发送给客户端的总字节数。(即,该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
二、/"%{Referer}i/" /"%{User-agent}i/"
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
/"%{Referer}i/"
通俗的说就是请求的来源。
/"%{User-agent}i/"
客户端的浏览器的一些信息
一般爬虫的标志信息都是在这两块中暴露出来的,下面会有详细的说明。
看日志文本一、
10.29.101.4
- -
[26/Dec/2008:00:01:37 +0800]
"GET /group_list.php?groupclass=6&countryid=1&provinceid=33 HTTP/1.0"
200
20044
"-"
"msnbot/1.1 (+http://search.msn.com/msnbot.htm)"
401
20393
"-" 就是典型的一个爬虫留下的特征,也许你会说:不是在"-" 的下面不就是很明显的“"msnbot/1.”,那个不是描述了bot,就是robot机器人嘛,一看就知道是爬虫啦,但是在考虑到程序的执行开销上如果少比对一些文本,就看/"%{Referer}i/" 的内容是否是“-”就可以判断是否是爬虫不是很好嘛!至少可以少比较/"%{User-agent}i/"
了;
/"%{User-agent}i/"
也是需要正则表达式去比较的,下面有介绍;
那么如果/"%{Referer}i/" 的内容不是“-”,看文本二
10.29.101.4 - - [26/Dec/2008:00:10:14 +0800]
"GET /group_view.php?hid=329956 HTTP/1.0"
200
4576
"http://group.woyo.com/group_view.php?hid=329956" "Sosospider+(+http://help.soso.com/webspider.htm)"
362
4960
在这里的/"%{Referer}i/" 的内容不是“-”,但是一看也知道是爬虫,从/"%{User-agent}i/"
的内容上就可以看出来了,
"Sosospider+(+http://help.soso.com/webspider.htm)" ,是spider蜘蛛,这里处理起来就比较麻烦了,需要收集所有的爬虫,如果有些新出来的没有收集进去,那个也没办法了,而且这个收集来的爬虫信息写正则表达式也不是一个就可以的,有可能写好多;