Скрипт-чекер траффика на ПХП

Discussion in 'PHP' started by $n@ke, 27 Feb 2009.

  1. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    697
    Likes Received:
    404
    Reputations:
    134
    Увидел в подписи к теме "Написание скриптов", так вот хочу попросить умеющих - нужен скрипт вот такой:
    Кидаем в форму список сайтов(ипов), скрипт находит соседей по ипу, потом каждого чекает на трафф.
    Трафф можно чекать тут:
    http://siteanalytics.compete.com/
    или на alexa.com

    Привязка к пхп в принципе не обязательна, можно и любой другой язык.главное - кроссплатформа.
     
  2. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Нормальное оформление обязательно?) А так могу написать ..
     
  3. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    697
    Likes Received:
    404
    Reputations:
    134
    ну как нормальное - чтоб понятно было)) и конечно резалт чтоб можно было сейвить удобно))
     
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    фиг там, в исходниках нет данных

    http://siteanalytics.compete.com/

    давай другой сайт для статистики без таких геморов - сделаю
     
    1 person likes this.
  5. vp$

    vp$ Elder - Старейшина

    Joined:
    22 Oct 2007
    Messages:
    65
    Likes Received:
    68
    Reputations:
    19
    писал под свои нужды

    чекает список доменов, на рейт в алексе, все что выше 500000 сохраняет в файлик

    PHP:
    <? 
    function 
    CheckTF($site)
        {     
    $url     = 'http://data.alexa.com/data/eDzm91i1J200a2?cli=10&ver=ff-1.3.0&dat=ns&cdt=rq%3D0%26wid%3D29917&ref=&url=http%3A%2F%2F'.$site;
            
    $res    = file_get_contents($url);
                    if (
    ereg ("(<POPULARITY URL=\"$site/\" TEXT=\")([0-9]{1,})(\"/>)", $res, $getrank))
                        return 
    $getrank[2];
                        else
                        return 
    false;
                
        }


        
        
    set_time_limit(0);
        
    $filesource        = 'sites.txt';
        
    $fileres        = 'result.txt';
        
    $result        = fopen($fileres, 'a+');
        
    $fp                = file($filesource);
                    for (
    $n=0;$n<count($fp);$n++)
                    {    
    $site = trim($fp[$n]);
                        if (
    $site!='' && strpos($site, '.'))
                        {
                            
    $rank = CheckTF($site); 
                            if (
    $rank)
                            {    if (
    $rank < 500000)
                                    {    
                                        echo 
    $site."\t".$rank."\t!!!\n";
                                        
    fwrite ($result,"$site\t$rank\n");
                                    }
                                else
                                    echo 
    $site."\t".$rank."\n";
                                    

                            }
                        }

                    }

    ?>
    под вин консоль написано, но можно и на сервер, тока \n нужно заменить на <br>, а \t на знак табуляции
     
    1 person likes this.
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    В общем вот, накалякал чото, проверил только на двух сайтах, инфо цепляется в таком виде:

    RANK: SnapShot of ostrie.ru (rank #3,379,392) - Compete

    соседи сгребаются с 2ip.ru

    Код:

    PHP:
    <pre>
    <? 
    @set_time_limit(0); 
    @
    ini_set("display_errors","1");

    $ip_file = "ip.txt"; //Файл со списком IP на проверку (может быть просто домен вместо ip)
    $log_file = "log123.txt"; //Файл, куда будут складываться результаты
    $sleep = 0; // Пауза между запросами в секундах

       
    function get($url) 
        { 
            
    $ch = curl_init();   
            
    curl_setopt($ch, CURLOPT_URL,$url); 
            
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
            
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208'); 
            
    $ss=curl_exec($ch); 
            
    curl_close($ch); 
            return 
    $ss; 
        } 

        
    $handler=fopen($log_file,'a'); 
        
    $ip = array_map("trim", file($ip_file)); 
        
    $count = count($ip);
        for (
    $i=0;$i<$count;$i++) {
           
    $a=get('http://2ip.ru/server.php?ip='.$ip[$i]); 
           
    preg_match_all('|<li>([^<a href=.*>.*</a>].*)</li>|U',$a,$sosedi);
           unset(
    $sosedi[1][0]);
           
    $count1 = count($sosedi[1]);
           if(
    $handler) fwrite($handler,"IP:{$ip[$i]}   Соседей: $count1 " . "\r\n");
           for (
    $z=1;$z<$count1;$z++) {    
              
    $site = str_replace('www.','',$sosedi[1][$z]);
              
    $a=get('http://siteanalytics.compete.com/'.$site.'/'); 
              
    preg_match('|<title>(.*)</title>|',$a,$rank);        
              if (empty(
    $rank[1])) $stat = 0;
              else 
    $stat = $rank[1];
              if(
    $handler) fwrite($handler,"Сосед $z: {$sosedi[1][$z]}/     RANK: $stat " . "\r\n");
              
    sleep($sleep);
             }
                                         
           echo 
    "host: {$ip[$i]} is done\n";
           if(
    $handler) fwrite($handler,"-----------------------------------------------------" . "\r\n");
           
    sleep($sleep);
        } 
        
    fclose($handler);     

    ?>

    </pre>