Google Page Rank

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

mrdigy

Местный житель
Регистрация
29 Дек 2007
Сообщения
183
Реакции
23
Смотрел как устроены скрипты по поределению pr в гугле, там много мудотни пишут, создают не кому не нужны переменные, складывают , вычитают и т.д. Одним словом занимаются запудриванием мозгов !

Перерыл много всего,может плохо, но всё таки буду рад помоши!

Так вот кто нибудь видел простой и нужный код определения PR , ведь он должен быть очень простым.
Спасибо.
 
По-моему давно уже есть Perl модуль для этого в CPAN.

Вот статья с примером:
 
PHP:
print('<form method="post">');
print('</br>' );
print('<input type="text" name="str" >'."<br />");
print('</br>' );
print('<input type="submit" name="sub" value=" &nbsp;&nbsp;  Go! &nbsp;&nbsp; " />'."\r\n");
print('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
print('<input type="reset" name="reset" value="   Reset  " />'."<br />\r\n");
print('</form>');
print('</br>' );

function get_contents($url){ /* посылает запрос */
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL, $url); /* собственно урл */
	curl_setopt($ch, CURLOPT_HEADER, TRUE); /* получать хедер ответа */
	curl_setopt($ch, CURLOPT_NOBODY, FALSE); /* получать боди ответа */
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); /* curl_exec() будет возвращать ответ сервера, а не сразу выводить его в браузер */
	curl_setopt($ch, CURLOPT_USERAGENT, "MSIE 7.0"); /* на ваш вкус ^^ . если ничего не указать, icq.search.com отказывается работать... наивный */
	curl_setopt($ch, CURLOPT_TIMEOUT, 20); /* таймаут в секундах */

	$result = curl_exec($ch);
	curl_close($ch);

	return $result;


if (isset($_POST['sub']))

               {

                $url=("www.be1.ru/stat/?url=http%3A%2F%2F".$host."%2F");
                $pr=get_contents($url);
                $pos = strpos($pr, "Google Page Rank");
                $pr_result=substr($pr,$pos+19,1);
                $pr_result=trim($pr_result);
                if ($pr_result>'4')
                {
                $pr_result=("<font color=#DA8925>PR=".$pr_result."</font>");
                }
                else
                {
                $pr_result=("PR=".$pr_result);
                	}

                unset($url);
                unset($pr);
                unset($pos);
                }


Скрипт просто грабит результат с ресурcа be1.ru
 
Грабить с других сайтов не очень интересно, это разве что запасной вариант, лучше иметь у себя на сайте скрипт по определению !
 
Определять PR умеет только сам Google. Для этого следует учесть все входящие ссылки на сайт с учетом их PR и штрафных фильтров. И пересчитывает PR Google раз в месяц или больше имея кучу специальных серваков. Так что, вычислить самому у вас не получится - ни алгоритма достоверного нет ни доступа к базам Google ни мощностей.
 
Определять PR умеет только сам Google. Для этого следует учесть все входящие ссылки на сайт с учетом их PR и штрафных фильтров. И пересчитывает PR Google раз в месяц или больше имея кучу специальных серваков. Так что, вычислить самому у вас не получится - ни алгоритма достоверного нет ни доступа к базам Google ни мощностей.

Это конечно всё понятно, но пр, грубо говоря, просто спрашивается у гугла по датацентрам.
Меня , да и не только меня, интересует вопрос, какой самы простой код для спроса у гугла ПР.
 
Вот работающий скрипт
PHP:
<?php

// Edit this to your website url:
$myWebSite = "http://www.antichat.ru";

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);
}


echo "<br>The PR of $myWebsite is: ".getPR($myWebSite);
?>
 
а складывать и вычитать - необходимо.
все эти скрипты притворяются родной гугловой панелькой (гуглбаром)
и обязаны передавать вычисляемый таким образом хэш
иначе гугл за своего не примет и отфутболит
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху