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

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($chCURLOPT_URL,$url); 
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
            
    curl_setopt($chCURLOPT_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(
    $handlerfwrite($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(
    $handlerfwrite($handler,"Сосед $z{$sosedi[1][$z]}/     RANK: $stat " "\r\n");
              
    sleep($sleep);
             }
                                         
           echo 
    "host: {$ip[$i]} is done\n";
           if(
    $handlerfwrite($handler,"-----------------------------------------------------" "\r\n");
           
    sleep($sleep);
        } 
        
    fclose($handler);     

    ?>

    </pre>