В гугле найти просто. Тиц найдеш сам, это проще простого PHP: // Google PR define('GOOGLE_MAGIC', 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 GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) { 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) /* all the case statements fall through */ { case 11: $c+=($url[$k+10]<<24); case 10: $c+=($url[$k+9]<<16); case 9 : $c+=($url[$k+8]<<8); /* the first byte of c is reserved for the length */ 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]); /* case 0: nothing left to add */ } $mix = mix($a,$b,$c); /*-------------------------------------------- report the result */ return $mix[2]; } function strord($string) { for($i=0;$i<strlen($string);$i++) { $result[$i] = ord($string{$i}); } return $result; } function get_pr($url) { $result=array("",-1); if (($url.""!="")&&($url.""!="http://")): if (substr(strtolower($url),0,7)!="http://"): $url="http://".$url; endif; $url="info:".$url; $checksum=GoogleCH(strord($url)); $google_url=sprintf("http://www.google.com/search?client=navclient&ch=6%u&features=Rank&q=".$url,$checksum); // url to get from google $handle = @fopen($google_url, "rb"); $contents = ''; if ($handle) { while (!@feof($handle)) { $contents.= @fread($handle, 8192); } fclose($handle); $p=explode(":",$contents); if (isset($p[2])): $result=trim($p[2]); endif; } else {$result = 0;} endif; return($result!="" && (strlen($result)>0 && (strlen($result)<3))?$result:"0"); }
Имелось в виду иное .....создание сарвиса на подобие pr-cy...весь функционал не требуется ...а нужен лишь код для проверки тиц и pr на мой сайт
Подскажите в какой переменной хранятся данные о pr Не подскажите какая переменная в скрипте выше по итогу хранит значиние pr .. отправил дданые в скрипт используюя get метод...дописал соответствующюю строку в скрипт на присваивании переменной PHP: $url значиния из формы ..а как вывести значение pr не знаю ... думал что переменная PHP: $result содержет его ........добавил PHP: echo "PR сайта" . $result; ...хе ....нифига ....денвер выдал ошибку ......познания в php не особо велики как видете ....подскажи плз...)))
Ура... Всем спасибо ..нашел скрипт на ином сайте ......выкладываю если кому нужен З.Ы. Как ни странно но после использовании на локальной машине апач постоянно выдавал ошибку и переставал работать ....залил на хост ....все норм ))) PHP: <?php //error_reporting(0); define('GMAG', 0xE6359A60); //unsigned shift right function zeroFill($a, $b) { $z = hexdec(80000000); if ($z & $a) { $a = ($a>>1); $a &= (~$z); $a |= 0x40000000; $a = ($a>>($b-1)); } else { $a = ($a>>$b); } return $a; } function mix($a,$b,$c) { $a -= $b; $a -= $c; $a ^= (zeroFill($c,13)); $b -= $c; $b -= $a; $b ^= ($a<<8); $c -= $a; $c -= $b; $c ^= (zeroFill($b,13)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,12)); $b -= $c; $b -= $a; $b ^= ($a<<16); $c -= $a; $c -= $b; $c ^= (zeroFill($b,5)); $a -= $b; $a -= $c; $a ^= (zeroFill($c,3)); $b -= $c; $b -= $a; $b ^= ($a<<10); $c -= $a; $c -= $b; $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) /* all the case statements fall through */ { case 11: $c+=($url[$k+10]<<24); case 10: $c+=($url[$k+9]<<16); case 9 : $c+=($url[$k+8]<<8); /* the first byte of c is reserved for the length */ 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]); /* case 0: nothing left to add */ } $mix = mix($a,$b,$c); /*-------------------------------------------- report the result */ return $mix[2]; } //converts a string into an array of integers containing the numeric value of the char function strord($string) { for($i=0;$i<strlen($string);$i++) { $result[$i] = ord($string{$i}); } return $result; } function getPR($_url) { $url = 'info:'.$_url; $ch = GCH(strord($url)); $url='info:'.urlencode($_url); $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); } if (isset($_GET['url'])) echo getPR($_GET['url']); ?> Как юзать : /навазние вашего скрипта.php?url=адресс_определяемого_сайта пример: (файл обозвал index.php) мой_сайт/index.php?url=ya.ru Удачи ...всем спс ...
То что ты используешь - сакс. на 64битках работать не будет. Используй отгрузку с тулбара... PHP: <?php /** * Google Page rank data grabber. * Based on Google toolbar data. * * Working with data like that: * "Rank_1:1:6". Without XML/HTML parsing. * * @important: * This code is for cognitive purposes only. * Usage of this code is against Google's terms of service. * No support is provided for this code. * Can be used "as is" for your own risk. * * @requirements: * - PHP version 5 (can easily be downgraded to PHP4) * - cURL library (but you can replace curl functions with * PHP standard fopen/fread or other) * * @version 1.1 * @author exstabler // PHP version * @author snoopy // JS version * * @changelog: * - 2007-01-18: * 1. [exstabler] Deprecated method intToHex deleted. * 2. [exstabler] Method toHex8 corrected. * * @sample usage: * $obj = new PageRankGrabber(); * $rank = $obj->getRank('http://dir.org.ru'); */ class PageRankGrabber { /** * Returns PageRank for specified page * @param string $url * @return integer PageRank value */ public function getRank($url) { $pageUrl = $this->getRankUrlStingByPageUrl($url); $content = $this->getContentCurl($pageUrl); $parts = explode(":", $content); return intval(@$parts[count($parts)-1]); } /** * Returns content by URL with using * cURL library. * * @param string $url * @return string Site content */ public function getContentCurl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); return $result; } /** * Returning URL where PR can be grabbed. * * @param string $page - Page URL * @return string */ public function getRankUrlStingByPageUrl($page) { $this->awesomeHash($page); $hash = "8" . $this->awesomeHash($page); $url = "http://toolbarqueries.google.com/search?sourceid=" . "navclient-ff&features=Rank&client=navclient-auto-ff&"; $url .= "ch=" . $hash . "&q=info:" . urlencode($page); return str_replace(' ', '', $url); } /** * Transforms integer into hexademical * * @param int $num * @return string */ private function toHex8($num) { $vector = "0123456789abcdef"; return $vector[($num % 256) / 16] . $vector[$num % 16]; } /** * Service function: encoder */ private function hexEncodeU32($num) { $result = $this->toHex8($this->zerofillShift($num, 24)); $result .= $this->toHex8($this->zerofillShift($num, 16) & 255); $result .= $this->toHex8($this->zerofillShift($num, 8) & 255); return $result . $this->toHex8($num & 255); } /** * Service function: hashing */ private function awesomeHash($value) { $hashSeed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE." . "Yes, I'm talking to you, scammer."; $intValue = 16909125; for($i = 0; $i < strlen($value); $i++ ){ $intValue ^= $this->charCodeAt($hashSeed, $i % strlen($hashSeed)) ^ $this->charCodeAt($value, $i); $intValue = $this->zerofillShift($intValue, 23) | $intValue << 9; } return $this->hexEncodeU32($intValue); } /** * The charCodeAt() method returns the Unicode * of the character at a specified position. * * @param int $value */ private function charCodeAt($value, $position) { $symbol = $value[$position]; // ord() is for ASCII! // Original function should work with UTF-8. return ord($symbol); } /** * Service function: zerofil with shifing * (unsigned shift right). */ private function zerofillShift($a, $b) { $z = hexdec(80000000); if ($z & $a) { $a = ($a >> 1); $a &= (~$z); $a |= 0x40000000; $a = ($a >> ($b-1)); } else { $a = ($a >> $b); } return $a; } } ?>
Вдогонку проверка тиц, на основе яндекс бара. PHP: <?php function get_tcy($domain) { //считываем XML-файл с данными $xml = file_get_contents("http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://$domain"); //если XML файл прочитан, то возвращаем значение параметра value, иначе возвращаем false - ошибка return $xml ? (int) substr(strstr($xml, 'value="'), 7) : false; } ?>
В один день перестало работать Везде где используется этот скрипт на сегоднишний день значения тиц = 0. Что в нем не так ? Исправте плз этот код)) PHP: <?php function cy($url) { $url=str_replace("http://"."",$url); $fp = fsockopen("bar-navig.yandex.ru", 80, $errno, $errstr, 30); if (!$fp) { return FALSE; } else { $out = "GET /u?ver=2&url=http://$url/&show=1 HTTP/1.1\r\n" ; $out .= "Host: bar-navig.yandex.ru\r\n" ; $out .= "Connection: Close\r\n\r\n" ; fwrite($fp, $out); $data=""; while (!feof($fp)) { $data .= fgets($fp, 128); } fclose($fp); $pos=strpos($data,"value")+7; $itog=substr($data, $pos, 5); $itog=substr($itog, 0, strpos($itog,'"')); return $itog; } } ?>