Подсчет и стата посещений ботов

Discussion in 'SЕО - тонкости, методы раскрутки' started by devscripts, 8 Jan 2009.

  1. devscripts

    devscripts Elder - Старейшина

    Joined:
    8 May 2007
    Messages:
    131
    Likes Received:
    182
    Reputations:
    134
    Подсчет и стата посещений ботов Yahoo|MSN|Google

    1.Скрипт bot_count.php (инклудим в свою страницу)
    PHP:
    <?php
      
    if(eregi("googlebot|msn|yahoo",$HTTP_USER_AGENT))
        {
        
    //создаем файл со статой
        
    if(!is_file('bot_log') || filesize('bot_log')==0)
            {
            
    $fp = @fopen("bot_log","w");
            @
    flock ($fpLOCK_EX);
            @
    fputs($fp,"0|0|0\n0|0|0\n");
            @
    flock ($fpLOCK_UN);
            @
    fclose($fp);
            }
            
    //считываем файл со статой
            
    $arr_bot=file('bot_log');
            
    $bot_count=$arr_bot[0];
            
    $time_bot_count=$arr_bot[1];
            
    $bot_count=explode('|',$bot_count);
            
    $GOOGLE_COUNT=(int)$bot_count[0];
            
    $YAHOO_COUNT=(int)$bot_count[1];
            
    $MSN_COUNT=(int)$bot_count[2];
            
    $time_bot_count=explode('|',$time_bot_count);
            
    $GOOGLE_TIME=$time_bot_count[0];
            
    $YAHOO_TIME=$time_bot_count[1];
            
    $MSN_TIME=$time_bot_count[2];

            
    //пишем гуглбота в стату
              
    if(eregi("googlebot",$HTTP_USER_AGENT))
                {
                
    $str_to_log = (++$GOOGLE_COUNT).'|'.$YAHOO_COUNT.'|'.$MSN_COUNT."\n";
                
    $str_to_log .= time().':::'.$PHP_SELF.'?'.$QUERY_STRING.':::'.$HTTP_USER_AGENT.':::'.$REMOTE_ADDR.'|'.$YAHOO_TIME.'|'.$MSN_TIME;
                
    $fp = @fopen("bot_log","w");
                @
    flock ($fpLOCK_EX);
                @
    fputs($fp,$str_to_log);
                @
    flock ($fpLOCK_UN);
                @
    fclose($fp);
                }

            
    //пишем яху в стату
              
    if(eregi("yahoo",$HTTP_USER_AGENT))
                {
                
    $str_to_log $GOOGLE_COUNT.'|'.(++$YAHOO_COUNT).'|'.$MSN_COUNT."\n";
                
    $str_to_log .= $GOOGLE_TIME.'|'.time().':::'.$PHP_SELF.'?'.$QUERY_STRING.':::'.$HTTP_USER_AGENT.':::'.$REMOTE_ADDR.'|'.$MSN_TIME;
                
    $fp = @fopen("bot_log","w");
                @
    flock ($fpLOCK_EX);
                @
    fputs($fp,$str_to_log);
                @
    flock ($fpLOCK_UN);
                @
    fclose($fp);
                }

            
    //пишем мсн в стату
              
    if(eregi("msn",$HTTP_USER_AGENT))
                {
                
    $str_to_log $GOOGLE_COUNT.'|'.$YAHOO_COUNT.'|'.(++$MSN_COUNT)."\n";
                
    $str_to_log .= $GOOGLE_TIME.'|'.$YAHOO_TIME.'|'.time().':::'.$PHP_SELF.'?'.$QUERY_STRING.':::'.$HTTP_USER_AGENT.':::'.$REMOTE_ADDR;
                
    $fp = @fopen("bot_log","w");
                @
    flock ($fpLOCK_EX);
                @
    fputs($fp,$str_to_log);
                @
    flock ($fpLOCK_UN);
                @
    fclose($fp);
                }
          }


    2. Создаем файл stats.php
    PHP:
    <html>
    <title>Bots stat</title>
    <body>
    <p>
    <?php

      $data
    =file('bot_log');

      if (!empty(
    $data[0]))
        {
        
    $count=$data[0];
        list(
    $GOOGLE_COUNT,$YAHOO_COUNT,$MSN_COUNT)=explode('|',$count);
        
    $bots=$data[1];    
        list(
    $GOOGLE_BOT,$YAHOO_BOT,$MSN_BOT)=explode('|',$bots);
        print 
    '<b>Google bot</b> был здесь <b><font color="red">'.$GOOGLE_COUNT.'</font></b> раз<br/>';
        list(
    $g_time,$g_path,$g_agent,$g_ip)=explode(':::',$GOOGLE_BOT);
        print 
    '<b>'.date('d.m.Y H:i:s',$g_time).'</b> '.$g_path.' <i>'.$g_agent.' ('.$g_ip.')</i>';
        print 
    '<hr/>';
        list(
    $y_time,$y_path,$y_agent,$y_ip)=explode(':::',$YAHOO_BOT);
        print 
    '<b>Yahoo bot</b> был здесь <b><font color="red">'.$YAHOO_COUNT.'</font></b> раз<br/>';
        print 
    '<b>'.date('d.m.Y H:i:s',$y_time).'</b> '.$y_path.' <i>'.$y_agent.' ('.$y_ip.')</i>';
        print 
    '<hr/>';
        list(
    $m_time,$m_path,$m_agent,$m_ip)=explode(':::',$MSN_BOT);
        print 
    '<b>MSN bot</b> был здесь <b><font color="red">'.$MSN_COUNT.'</font></b> раз<br/>';
        print 
    '<b>'.date('d.m.Y H:i:s',$m_time).'</b> '.$m_path.' <i>'.$m_agent.' ('.$m_ip.')</i>';
         }
    ?>
    </p>
    </body>
    </html>
    3.Создаем файл bot_log и открываем на запись
    ---
    Все) Теперь у вас есть подробная и простая стата по посещениям ботов основных поисковиков (по коду Яшу и иже с ними легко добавить самому)
     
    #1 devscripts, 8 Jan 2009
    Last edited: 12 Jan 2009
    3 people like this.
  2. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Спасибо.. Не тестил пока, но скоро пригодится..)))
     
  3. Ho5Tr1d3R

    Ho5Tr1d3R Elder - Старейшина

    Joined:
    27 Nov 2006
    Messages:
    78
    Likes Received:
    7
    Reputations:
    5
    Спосибо, тестируем )
     
  4. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Спасибо))
    правь ошибки (3.Создаем файл bot_log b открываем на запись) - вместо "b" "и".
    А разве bot_log не лучше с расширением .txt?
     
  5. ZEXEL

    ZEXEL Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    Как я понял по коду тут токо 3 бота определяет ? Yahoo , Google , MSN ?
    Еще б не плохо было добавить Yandex , mail.ru , Rambler !
     
  6. devscripts

    devscripts Elder - Старейшина

    Joined:
    8 May 2007
    Messages:
    131
    Likes Received:
    182
    Reputations:
    134
    >А разве bot_log не лучше с расширением .txt?
    какая разница?) все равно ты его не вручную читаешь, а через stats.php
    >Как я понял по коду тут токо 3 бота определяет ? Yahoo , Google , MSN ?
    Еще б не плохо было добавить Yandex , mail.ru , Rambler !
    не работал по Раше, добавь, это несложно)