Script PHP per vedere il PageRank di Google
Il PageRank è un algoritmo che usa Google per valutare la credibilità e l'autorevolezza delle pagine Web. Il meccanismo su cui si basa è che se una pagina riceve molti collegamenti da altre fonti autorevoli, allora è molto probabilmente anch'essa una fonte autorevole. Il nome PageRank è un marchio registrato di Google e l'algoritmo è stato brevettato: U.S. Patent 6,285,999
Il PageRank è normalmente visualizzato anche nella barra degli strumenti di Google ed è uno strumento utile per chi fa ottimizzazione delle pagine per i motori di ricerca, dato che i siti con alto pagerank vengono visualizzati prima.
Come si fa a sapere il pagerank di una pagina? E' sufficiente interrogare un server di Google con un collegamento tipo il seguente:
<a href="http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:http://developer.tesene.it&ch=723990733513">Vedi PageRank</a>
Dove a Google vengono passati l'URL della pagina e un Hash di controllo, in questo caso 723990733513.
La difficoltà in questo caso sta nel calcolo dell'hash, ma non tanto per l'algoritmo in se che è pubblico, quanto per il fatto che il PHP non gestisce correttamente gli interi sopra 32 bit, pertanto, se nel calcolo dell'hash si ha un'intero di più di 32 bit, va calcolato il modulo a 2^32.
Qui sotto riporto l'algoritmo, qui c'è il codice: Codice PHP Esempio calcolo Pagerank mentre qui c'è il codice funzionante: Pagina PHP calcolo PageRank
/*
* convert a string to a 32-bit integer
*/
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296; // 2^32
$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
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, 0×1505, 0×21);
$Check2 = StrToNum($String, 0, 0×1003F);
$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0×3FFFFC0 ) | ($Check1 & 0×3F);
$Check1 = (($Check1 >> 4) & 0×3FFC00 ) | ($Check1 & 0×3FF);
$Check1 = (($Check1 >> 4) & 0×3C000 ) | ($Check1 & 0×3FFF);
$T1 = (((($Check1 & 0×3C0) << 4) | ($Check1 & 0×3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0×3C00)) << 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;
}
Aumenta la diffusione di questo articolo View blog reactions

18 Giugno 2007 alle 15:23
[…] e risolto un problema sul codice per la visualizzazione del Rank di Google. Trovate i dettagli qui. antipixel, google, Google PageRank Viever, Internet, PageRank, PHP, Sviluppo, Wordpress Queste […]
4 Luglio 2007 alle 23:58
[…] … Ecco esempi di Codici per realizzare un tool per la visualizzazione del PR qui, qui , e qui … Torna anche a te? Nicola __________________ Focus on: Cercasi SEO (Study in […]
9 Febbraio 2008 alle 18:36
Tra parentesi, il codice riportato sopra funziona sia su architetture a 32 bit, sia a 64 bit. Ad esempio al momento sta funzionando su un server Tesene con 2 processori quad-core a 64 bit con 8 GB di RAM