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

Статус
В этой теме нельзя размещать новые ответы.

Gamelon

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

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($url, 0, $slash_pos) : $url; 

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

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

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

           # а вот и искомый тиц!
           $tic = $md5_hashes[$md5];
       }
    }
?>

При запуске на Денвере появляется чисты лист, т.е пустая страница. Подскажите пожалуйста, в чем может быть проблема?
 
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 9 : $c+=($url[$k+8]<<8); 
        case 8 : $b+=($url[$k+7]<<24); 
        case 7 : $b+=($url[$k+6]<<16); 
        case 6 : $b+=($url[$k+5]<<8); 
        case 5 : $b+=($url[$k+4]); 
        case 4 : $a+=($url[$k+3]<<24); 
        case 3 : $a+=($url[$k+2]<<16); 
        case 2 : $a+=($url[$k+1]<<8); 
        case 1 : $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($fd, 4096)) $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>';

}

?>
 
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 :(
 
Посмотреть вложение 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>';
Можно удалить...
 
Спасибо, dobs. Но эти скрипты считывают ТИЦ с Яндекс Бара как я понимаю. А мне бы хотелось делать это через Яндекс Денюжку, как это и делает скрипт, который я указал в первом посте. Но никак не могу настроить его, чтобы он работал. :( Кто-нибудь может помочь?
 
Тобиш надо чтоб оно картинку с деньгой показовало?
 
Не обязательно. Нужно просто массово и быстро проверить большое количество доменов на ТИЦ. Нашел готовый скрипт:

Но он почему,то у меня не работает. А мои познания в php не позволяют его отладить. :(
 
Хм а чем Вам мой скрит не подходит?
тот что в аттаче...
 
Хм а чем Вам мой скрит не подходит?
тот что в аттаче...

Он берет значения ТИЦ с Яндекс Бара, а значит скорость проверки не очень большая и Ip могут заблочить, как я понимаю.
 
Насчет скорости не скажу, но скажу одно что ИП могут заблочить хоть в том хоть и в этом скрипте.... П.С. У меня там предусмотрена задержка...

П.С. Юзайте проксу и будет все ок...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху