Find the pagerank of any page, site or URL using PHP

This is a set of simple functions to find the Google pagerank of any page or site. It basically pretends to be a web browser using the Google toolbar which displays the pagerank to the user.


function StrToNum($Str, $Check, $Magic){
$Int32Unit = 4294967296; // 2^32

$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
// If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
// the result of converting to integer is undefined
// refer to http://www.php.net/manual/en/language.types.integer.php
if ($Check >= $Int32Unit) {
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
//if the check less than -2^31
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}

// Genearate a hash for a url

function HashURL($String){
$Check1 = StrToNum($String, 0x1505, 0x21);
$Check2 = StrToNum($String, 0, 0x1003F);

$Check1>>=2;
$Check1=(($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1=(($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1=(($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

return ($T1 | $T2);
}

// genearate a checksum for the hash string

function CheckHash($Hashnum){
$CheckByte=0;
$Flag=0;

$HashStr=sprintf('%u', $Hashnum);
$length=strlen($HashStr);

for($i=$length-1; $i>=0; $i--) {
$Re=$HashStr{$i};
if(1===($Flag % 2)){
$Re+=$Re;
$Re=(int)($Re/10)+($Re%10);
}
$CheckByte+=$Re;
$Flag++;
}

$CheckByte %= 10;
if (0 !== $CheckByte){
$CheckByte=10-$CheckByte;
if (1 === ($Flag % 2) ) {
if (1 === ($CheckByte % 2)) {
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}

return '7'.$CheckByte.$HashStr;
}

function getpagerank($url){

$fp = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);
if(!$fp){
echo "$errstr ($errno)
\n";
}else{
$out="GET /search?client=navclient-auto&ch=".CheckHash(HashURL($url))."&features=Rank&q=info:".$url."&num=100&filter=0 HTTP/1.1\r\n";
$out.="Host: toolbarqueries.google.com\r\n";
$out.="User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\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 = substr($data, $pos + 9);
return $pagerank;
}
}
fclose($fp);
}
}

You can make calls to it like this:


getpagerank('http://www.google.com');

You can also use this stylesheet which excludes the need for pagerank image icons (though you could use image files if you wished):


<STYLE>
div.pr {
font-size: 6pt;
color: #000000;
float: left;
height: 30px;
margin-right: 5px;
}
div.prg {
width: 40px;
border: 1px solid #999999;
height: 3px;
font-size: 1px;
}
div.prb {
background: #5eaa5e;
height: 3px;
font-size: 1px;
}
</STYLE>

To use PHP to display the pagerank of a site you would use:


$url='http://www.seanbluestone.com';
$Pagerank=getpagerank('http://www.seanbluestone.com');
$Width=$PR*4;
echo '<div class="pr">PR: '.$Pagerank.'<div class="prg"><div class="prb" style="width: '.$Width.'px"></div></div> '.$url;

This would display the pagerank of the page like this:

PR: 3

SeanBluestone.com

One thing to note is that if you make too many calls to this within a short period of time from the same domain it will block you, so if you’re using it for a link directory or something like that make sure it caches.


You can discuss this article and see what others are saying about it in the PHP Discussion Forum
Did you find this article useful? Why not buy Sean a coffee?



0 comments ↓

There are no comments yet...Kick things off by filling out the form below.

Leave a Comment