Скрипт для определения Google PageRank

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

alexz

Постоялец
Регистрация
12 Сен 2006
Сообщения
62
Реакции
40
Код:
<?php

define('GOOGLE_MAGIC', 0xE6359A60);

// На вход ссылка с http://
function getPR($url)
{
  $ch = GoogleCH(strord('info:'.$url));
  $file = 'http://www.google.com/search?client=navclient-auto&ch=6'.$ch.'&features=Rank&q=info:'.urlencode($url);
  $data = file($file);
  $rankarray = explode (':', $data[2]);
  $rank = $rankarray[2];
  return $rank;
}

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)              
  {
    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 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 strord($string) 
{
  for($i=0;$i<strlen($string);$i++)
    $result[$i] = ord($string{$i});

  return $result;
}

?>
 
что-то у меня он не пашет... попробую на другом хостинге....
 
А чем не устраивает тул бар от гугла?
 
Что то тоже не пашет у меня на хосте. Хз в чем дело :(
 
Что то тоже не пашет у меня на хосте. Хз в чем дело

Дык может IP забанен? Гугль за частые запросы в бан отправляет, не сайт а IP для запросов.
 
У меня работает.
Попробуй тот, что по ссылке выше. Там автор пишет:
"I discovered that when I used this script on one server it would work fine, yet when I used it on another I discovered that google would throw me back a Для просмотра ссылки Войди или Зарегистрируйся. At first, Для просмотра ссылки Войди или Зарегистрируйся I believed this was due to google blocking the IP ranges of my servers therefore preventing abuse of the service.
This was wrong. I soon discovered this after checking the checksum generated by the toolbar, then the checksums generated on working servers and non-working servers.
The main issue was that my development server was running on a different platform than my production server. I discovered that the problem was down to the way the ch is generated by certain versions of PHP, and the way they handle Для просмотра ссылки Войди или Зарегистрируйся."
 
А хорошо бы ещё и сразу ТИЦ показывал
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху