Script PHP per vedere il PageRank di Google

Pagerank image 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>

Vedi PageRank

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

3 Commenti a “Script PHP per vedere il PageRank di Google”

  1. undolog » Blog Archive » Miglioramenti allo script per il Google PageRank scrive:

    […] 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 […]

  2. » Archivio Rank? - Pagina 2 scrive:

    […] … 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 […]

  3. Michele Mader scrive:

    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

Scrivi un commento

Per inviare un commento devi fare il login.