Скрипт массовой проверки ТИЦ

Тема в разделе "PHP", создана пользователем Gamelon, 11 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Gamelon

    Gamelon

    Регистр.:
    28 янв 2009
    Сообщения:
    196
    Симпатии:
    60
    Никак не могу заставить работать скрипт массовой проверки доменов на ТИЦ на Денвере. Сам скрипт:

    PHP:
    <?php
    # файл с урлами сайтов для проверки (если берем сайты из файла)
        
    $websites_file "url.php"

        
    # шаблон денежки яндекса
        
    $cy_tpl "http://yandex.ru/cycounter?%s";

        
    $md5_hashes = array();
        
    $files glob("buttons/*.gif");
        foreach(
    $files as $file)
        {
           
    $md5 md5_file($file);
           
    $name basename($file".gif");

           
    # сохранение MD5 всех файлов в массив
           # соответствие тиц и MD5 хеша
           
    $md5_hashes[$md5] = $name;
        }

        
    $websites file($websites_file);

        foreach(
    $websites as $site)
        {
           
    $url str_replace("http://"""trim($site));
           if (!
    $url) continue;

           
    # определение имени домена
           
    $slash_pos strpos($url'/');
           
    $domain $slash_pos substr($url0$slash_pos) : $url

           
    # определение пути к денежке сайта
           
    $cy_url sprintf($cy_tpl$domain);

           
    # чтение денежки с сервера яндекса
           
    $fp fopen($cy_url"r");
           if (
    $fp)
           {
               
    $image '';
               while(!
    feof($fp))
                   
    $image .= fread($fp1024); 
               
    fclose($fp);

               
    # определение MD5 полученной картинки
               
    $md5 md5($image);

               
    # а вот и искомый тиц!
               
    $tic $md5_hashes[$md5];
           }
        }
    ?>
    При запуске на Денвере появляется чисты лист, т.е пустая страница. Подскажите пожалуйста, в чем может быть проблема?
    Деньги Яндекса, необходимые для работы скрипта, можно взять на сайте автора: http://devaka.ru/articles/bulk-cy-checker
     
  2. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    PHP:
    <?php

    // Список УРЛ
    $url[] = 'http://uacode.com';
    $url[] = 'http://i.ua';

    define('GMAG'0xE6359A60); 
    function 
    nooverflow($a

    while (
    $a<-2147483648
    $a+=2147483648+2147483648
    while (
    $a>2147483647
    $a-=2147483648+2147483648
    return 
    $a

    function 
    zeroFill ($x$bits

       if (
    $bits==0) return $x
       if (
    $bits==32) return 0
       
    $y = ($x 0x7FFFFFFF) >> $bits
       if (
    0x80000000 $x) { 
           
    $y |= (1<<(31-$bits)); 
       } 
       return 
    $y

    function 
    mix($a,$b,$c) { 
    $a=(int)$a$b=(int)$b$c=(int)$c
    $a -= $b$a -= $c$a=nooverflow($a); $a ^= (zeroFill($c,13)); 
    $b -= $c$b -= $a$b=nooverflow($b); $b ^= ($a<<8); 
    $c -= $a$c -= $b$c=nooverflow($c); $c ^= (zeroFill($b,13)); 
    $a -= $b$a -= $c$a=nooverflow($a); $a ^= (zeroFill($c,12)); 
    $b -= $c$b -= $a$b=nooverflow($b); $b ^= ($a<<16); 
    $c -= $a$c -= $b$c=nooverflow($c); $c ^= (zeroFill($b,5)); 
    $a -= $b$a -= $c$a=nooverflow($a); $a ^= (zeroFill($c,3)); 
    $b -= $c$b -= $a$b=nooverflow($b); $b ^= ($a<<10); 
    $c -= $a$c -= $b$c=nooverflow($c); $c ^= (zeroFill($b,15)); 
    return array(
    $a,$b,$c); 

    function 
    GCH($url$length=null$init=GMAG) { 
        if(
    is_null($length)) 
        { 
            
    $length sizeof($url); 
        } 
        
    $a $b 0x9E3779B9
        
    $c $init
        
    $k 0
        
    $len $length
        while(
    $len >= 12
        { 
            
    $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); 
            
    $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); 
            
    $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); 
            
    $mix mix($a,$b,$c); 
            
    $a $mix[0]; $b $mix[1]; $c $mix[2]; 
            
    $k += 12
            
    $len -= 12
        } 
        
    $c += $length
        switch(
    $len
        { 
            case 
    11$c+=($url[$k+10]<<24); 
            case 
    10$c+=($url[$k+9]<<16); 
            case 
    $c+=($url[$k+8]<<8); 
            case 
    $b+=($url[$k+7]<<24); 
            case 
    $b+=($url[$k+6]<<16); 
            case 
    $b+=($url[$k+5]<<8); 
            case 
    $b+=($url[$k+4]); 
            case 
    $a+=($url[$k+3]<<24); 
            case 
    $a+=($url[$k+2]<<16); 
            case 
    $a+=($url[$k+1]<<8); 
            case 
    $a+=($url[$k+0]); 
        } 
        
    $mix mix($a,$b,$c); 
        return 
    $mix[2]; 

    function 
    strord($string

        for(
    $i=0;$i<strlen($string);$i++) 
        { 
            
    $result[$i] = ord($string{$i}); 
        } 
        return 
    $result



    function 
    getPageRank($aUrl

        
    $url 'info:'.$aUrl
        
    $ch GCH(strord($url)); 
        
    $url='info:'.urlencode($aUrl); 
        
    $pr = @file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url"); 
         
    $pr_str = @implode(""$pr); 
        return 
    substr($pr_str,strrpos($pr_str":")+1); 
    }


    function 
    getBarCY($_url) {
      
    $_uri "http://bar-navig.yandex.ru/u?ver=2&url=".urlencode("http://".$_url)."&show=1";
      
    $fd = @fopen($_uri"r");
      if (
    $fd) {
        while (
    $buffer fgets($fd4096)) $haystack.=$buffer;
        
    fclose($fd);
        
    preg_match("/<tcy rang=\"(.*)\" value=\"(.*)\"\/>/isU",
          
    $haystack,$cy);
        return (int) 
    $cy[2];
      } else return 
    0;
    }


    echo 
    '<form action="index.php" method="post" enctype="multipart/form-data">
    <input type="text" name="domain" value="'
    .$_POST['domain'].'" size="50%" />
    </form>'
    ;

    foreach(
    $url as $key => $val) {

        
    $_POST['domain'] = strtolower($val);
        
    $_POST['domain'] = str_replace('http://'''$_POST['domain']);
        
        echo 
    'domain: '.$_POST['domain'].'<br />';
        echo 
    'тИЦ: <b>'.getBarCY($_POST['domain']).'</b><br>';
        echo 
    'PR: <b>'.getPageRank($_POST['domain']).'</b><br>';

    }

    ?>
     
    Gamelon нравится это.
  3. Gamelon

    Gamelon

    Регистр.:
    28 янв 2009
    Сообщения:
    196
    Симпатии:
    60
    dobs, ваш скрипт работает отлично. Не судите строго, я с php практически не знаком.) Как привести список доменов к виду $url[] = 'адрес домена'; чтобы можно было проверить большое их количество, добавив в начало скрипта. В ручную это сделать нереально) И что за выпадающий список в начале окна?

    Особо ничего не делал, но скрипт из первого поста начал выдавать ошибки сейчас:
    Warning: file(url.php) [function.file]: failed to open stream: No such file or directory in Z:\home\tic\www\tic.php on line 20
    Warning: Invalid argument supplied for foreach() in Z:\home\tic\www\tic.php on line 22 :(
     
  4. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    Посмотреть вложение pr.zip вот думаю что подойдет...


    П.С. строку
    PHP:
    echo '<form action="index.php" method="post" enctype="multipart/form-data"> 
    <input type="text" name="domain" value="'
    .$_POST['domain'].'" size="50%" /> 
    </form>'
    ;
    Можно удалить...
     
  5. Gamelon

    Gamelon

    Регистр.:
    28 янв 2009
    Сообщения:
    196
    Симпатии:
    60
    Спасибо, dobs. Но эти скрипты считывают ТИЦ с Яндекс Бара как я понимаю. А мне бы хотелось делать это через Яндекс Денюжку, как это и делает скрипт, который я указал в первом посте. Но никак не могу настроить его, чтобы он работал. :( Кто-нибудь может помочь?
     
  6. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    Тобиш надо чтоб оно картинку с деньгой показовало?
     
  7. Gamelon

    Gamelon

    Регистр.:
    28 янв 2009
    Сообщения:
    196
    Симпатии:
    60
    Не обязательно. Нужно просто массово и быстро проверить большое количество доменов на ТИЦ. Нашел готовый скрипт:
    http://devaka.ru/articles/bulk-cy-checker
    Но он почему,то у меня не работает. А мои познания в php не позволяют его отладить. :(
     
  8. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    Хм а чем Вам мой скрит не подходит?
    тот что в аттаче...
     
  9. Gamelon

    Gamelon

    Регистр.:
    28 янв 2009
    Сообщения:
    196
    Симпатии:
    60
    Он берет значения ТИЦ с Яндекс Бара, а значит скорость проверки не очень большая и Ip могут заблочить, как я понимаю.
     
  10. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    Насчет скорости не скажу, но скажу одно что ИП могут заблочить хоть в том хоть и в этом скрипте.... П.С. У меня там предусмотрена задержка...

    П.С. Юзайте проксу и будет все ок...
     
Статус темы:
Закрыта.