This is a simple script that will retrieve the Google PageRank of any given website. <?php define('GOOGLE_MAGIC', 0xE6359A60); class pagerank extends pagerank32 { function xor32 ($a, $b) { return $this->int32($a) ^ $this->int32($b); } function int32 ($x) { return unserialize("i:$x;"); } function mix ($a,$b,$c) { $a -= $b; $a -= $c; $a = $this->xor32($a, $this->zeroFill($c, 13)); $b -= $c; $b -= $a; $b = $this->xor32($b, $a << 8); $c -= $a; $c -= $b; $c = $this->xor32($c, $this->zeroFill($b, 13)); $a -= $b; $a -= $c; $a = $this->xor32($a, $this->zeroFill($c, 12)); $b -= $c; $b -= $a; $b = $this->xor32($b, $a << 16); $c -= $a; $c -= $b; $c = $this->xor32($c, $this->zeroFill($b, 5)); $a -= $b; $a -= $c; $a = $this->xor32($a, $this->zeroFill($c, 3)); $b -= $c; $b -= $a; $b = $this->xor32($b, $a << 10); $c -= $a; $c -= $b; $c = $this->xor32($c, $this->zeroFill($b, 15)); return array($a, $b, $c); } } class pagerank32 { 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 ^= ($this->zeroFill($c, 13)); $b -= $c; $b -= $a; $b ^= ($a << 8); $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b, 13)); $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c, 12)); $b -= $c; $b -= $a; $b ^= ($a << 16); $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b, 5)); $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c, 3)); $b -= $c; $b -= $a; $b ^= ($a << 10); $c -= $a; $c -= $b; $c ^= ($this->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 = $this->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 = $this->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 pagerank ($url){ $ch = '6' . $this->GoogleCH($this->strord("info:$url")); $pagerank = 0; $fp = fsockopen('www.google.com', 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET /search?client=navclient-auto&ch=" . $ch . "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n" ; $out .= "Host: www.google.com\r\n" ; $out .= "Connection: Close\r\n\r\n" ; fwrite($fp, $out); while (!feof($fp)) { $data = fgets($fp, 128); $pos = strpos($data, "Rank_"); if($pos === false){ }else{ $pagerank = trim(substr($data, $pos + 9)); } } fclose($fp); } echo $pagerank; } } $pr = new pagerank('http://www.google.com'); ?> PHP: Simply paste the code into your website. To call the PageRank at any time, use this code: $pr = new pagerank('http://www.google.com'); PHP: Just remember to replace http://www.google.com with the desired website. Please leave comments / + rep if you enjoyed this contribution
So using this script we won't need any Google API key. Right? And if we query the G without AP key will it be any good?
Whoops! function strord ($string) { for($ i= 0; $i < strlen($string); $i++) { $result[$i] = ord($string{$i}); } return $result; } PHP: Please replace that with: function strord ($string) { for($i = 0; $i < strlen($string); $i++) { $result[$i] = ord($string{$i}); } return $result; } PHP:
If it does not work on your server it is because google has blocked your server from querying there pr server.
I am using a similar script on my site here: http://webdirectorylist.smashingdir.com It might even be the same one - or probably uses the same hackery anyways.