#MedirParaEntender » SEO » Obtener el PageRank de una página con PHP

Obtener el PageRank de una página con PHP3 min de Lectura

El PageRank es un valor numérico que representa la importancia que una página web tiene en Internet.

Primero habría que reseñar que podemos apreciar que el PageRank no cumple las características de un ranking normal, pero sí está definido para cada página. El PageRank de una pagina (A) esta definido de manera recursiva por los PageRanks de las diferentes páginas que enlazan a la página(A).

Obtener el PageRank de una página con PHP

El siguiente script puede ser descargado de aquí, su implementación es muy sencilla ya que únicamente hay que pasarle el parámetro “url” (con la url de la que se quiere desvelar el PageRank).

www.adobe.com

  Posibles respuestas a la ejecución del script

  • A: valor numérico de 1 a 10.
  • B: Si no hay salida es que la página no tiene PageRank asignado.
  • C: 0, es duro pero ese sería el valor del PageRank de la página dada.
<?php
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));
            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
        }
        $Check += ord($Str{$i});
    }
return $Check;
}

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);
}

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)
{
    $query="http://toolbarqueries.google.com/search?client=navclient-auto&ch="
    .CheckHash(HashURL($url)).
    &features=Rank&q=info:".$url."&num=100&filter=0";
    $data=file_get_contents($query);
    $pos = strpos($data, "Rank_");
    if($pos === false)
    {
    }
    else
    {
        $pagerank = substr($data, $pos + 9);
        return $pagerank;
    }
}

if(isset($_GET['url']))
{
    echo getpagerank($_GET['url']);
}

?>

PageRank 10

En este gráfico podemos apreciar la dramática subida que tendremos que afrontar si queremos llevar un sitio web a un valor de PageRank alto (> 5), como se puede apreciar el salto de PageRank 9 a PageRank 10 es un abismo, pero como veremos despues en algunos de los “mitos sobre el pagerank” el valor del PageRank es un número real y no uno entero como muchos usuarios piensan… por ello el salto de un valor de PageRank a otro es un proceso gradual pero invisible para nuestros ojos.

Hace algún tiempo publicamos esta entrada con curiosidades del PageRank y un listado de páginas con PageRank 10, ahora ninguna de estas páginas dispone de PageRank 10 e inclusoel dominio “www.google.com” tiene PageRank 8.

  • www.adobe.com
  • www.w3.org
  • www.macromedia.com
  • www.energy.gov
  • www.nasa.gov
  • www.google.com
  • www.nsf.gov
  • www.whitehouse.gov
  • www.real.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *