|
发表于 2009-4-18 21:45:37
|
|阅读模式
来自 中国北京
再到经典区发一遍,增加精华几率
花了半个下午+半个晚上写的,希望能给个精华,就奔着精华来的
上次木木发了一个用iis日志获取蜘蛛记录,但是对于一般的虚拟主机用户,自己是无法操作iis的,IDC提供的日志文件常常不会有Baiduspider标记,这个程序就是用于分析iis日志文件(网上虽然有一些程序,但不知道怎么回事总是测试不成功 ),该程序可以获取访问ip总数、搜索引擎抓取数量估计等信息。
程序功能虽然简单,但是感觉比较实用。存在的问题源码里面写了,有兴趣的朋友可以继续研究,欢迎交流讨论。
程序用的是php语言,asp空间就不要测试了。
程序后的界面是这样的
- <?php
- /*******************************************************
- *功能:iis日志分析,分析出访问IP总数,搜索引擎抓取次数
- *说明:
- * 将日志文件放在网站根目录,并改名为log.log。
- *演示:http://www.zhanzhangpu.com/tools/iislog/
- * http://www.zhanzhangpu.com/tools/iislog/demo.gif
- *作者:blackli,来自落伍者
- *问题:搜索引擎蜘蛛地址不准确,尤其是google蜘蛛地址,国内流行的地址列
- * 表存在相当大的误差,能力有限,不能够解决这个问题。有兴趣的可以参考
- * 下面的网址.
- *参考:http://www.seonewthing.com/googleBotCheck.aspx
- * http://googlewebmastercentral.blogspot.com/2006/09/how-to-verify-googlebot.html
- *******************************************************/
- //打开日志文件
- $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
- $fp = fopen("$DOCUMENT_ROOT/log.log",'rb');
- if ( !$fp )
- {
- echo '打开文件失败';
- exit;
- }
- //分析每行日志
- $num_ip = 0; //访问IP总数
- $ip = array(); //IP数据数组,其中ip[$i][0]为IP地址、ip[$i][1]为该地址出现次数
- while ( !feof($fp) )
- {
- $line = fgets($fp,1001);
- if ( substr($line,0,1) == '#' )
- {
- //获取日志生成时间
- if ( substr($line,0,5) == '#Date' )
- {
- $date_info = explode(' ',$line);
- //echo '日志生成时间:'.$date_info[1].' '.$date_info[2].'</br>';
- }
- }
- else
- {
- //获取访问IP
- if ( $line == '' ) continue;
- $ip_info = explode(' ',$line);
- for ( $j = $num_ip-1, $having_ip = false; $j >= 0 ; $j -- )
- {
- if ( $ip[$j][0] == $ip_info[6] )
- {
- $having_ip = true;
- $ip[$j][1] ++ ;
- break;
- }
- }
- if ( $having_ip == false )
- {
- $ip[$num_ip][0] = $ip_info[6];
- $ip[$num_ip][1] = 1;
- $num_ip ++;
- }
- }
- }
- //获取搜索引擎蜘蛛访问次数
- //baidu、google蜘蛛地址列表
- $baiduSpider = array('220.181','159.226','202.108','61.135.');
- $googleBot = array('74.125.','209.85.','66.102.','64.233.','64.249','209.85.');
- $num_Spider = $num_googleBot = 0;
- for ( $i = 0; $i < $num_ip ; $i++ )
- {
- //计算百度蜘蛛访问次数
- for ( $j = 0 ; $j < 4 ; $j ++ )
- {
- if ( substr($ip[$i][0],0,7) == $baiduSpider[$j] )
- {
- $num_Spider += $ip[$i][1];
- continue;
- }
- }
- //计算google蜘蛛访问次数
- for ( $j = 0 ; $j < 6 ; $j ++ )
- {
- if ( substr($ip[$i][0],0,7) == $googleBot[$j] )
- {
- $num_googleBot += $ip[$i][1];
- continue;
- }
- }
- }
- //echo '百度蜘蛛请求'.$num_Spider.'次<br/>';
- //echo 'google蜘蛛请求'.$num_googleBot.'次<br/>';
- fclose($fp);
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>iis日志分析-Powered by ZhanZhangPu</title>
- <style type="text/css">
- #main{
- width:800px;
- margin:0 auto;
- border:1px solid #EEE;
- }
- #main div{
- background:#EEE;
- border:2px solid #FBFBFB;
- line-height:25px;
- font-size:15px;
- padding:15px;
- }
- </style>
- </head>
- <body>
- <div id="main">
- <h2>日志生成时间<?php echo $date_info[1].' '.$date_info[2]; ?></h2>
- <div>
- 共有<?php echo $num_ip; ?>IP的请求.<br/>
- 百度蜘蛛请求<?php echo $num_Spider; ?>次.<br/>
- google蜘蛛请求<?php echo $num_googleBot; ?>次.
- </div>
- <div>
- IP地址列表:<br/>
- <?php
- for ( $i = 0 ; $i < $num_ip ; $i ++ )
- {
- echo $ip[$i][0].' '.$ip[$i][1].'次.<br/>';
- }
- ?>
- </div>
- <div>Powered by <a href="http://www.zhanzhangpu.com">站长铺</a>™</div>
- </div>
- </body>
- </html>
复制代码 这个压缩包里面有源程序和一个测试文件,欢迎试用,才疏学浅,有问题欢迎提出来
|
|