Ago
Cómo chequear nuestro PageRank en php
En Feedtwister armé un directorio de feeds. En él, existe un sistema de puntuación, obtenido a través de algunos factores. Uno de ellos es el PageRank, y como varios ya me han consultado cómo se obtiene, a continuación pongo el código para chequear el PageRank de una url en php.
class GooglePageRank {
var $_GOOGLE_MAGIC = 0xE6359A60;
var $_url = '';
var $_checksum = '';
function GooglePageRank($url)
{
$this->_url = $url;
}
function _strToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296;
$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
if ($Check >= $Int32Unit) {
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
$Check = ($Check < -2147483647) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}
function _hashURL($String)
{
$Check1 = $this->_strToNum($String, 0x1505, 0x21);
$Check2 = $this->_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 checksum()
{
if($this->_checksum != '') return $this->_checksum;
$Hashnum = $this->_hashURL($this->_url);
$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;
}
}
$this->_checksum = '7'.$CheckByte.$HashStr;
return $this->_checksum;
}
function pageRankUrl($dcchosen)
{
return $dcchosen . '/search?client=navclient-auto&features=Rank:&q=info:'.$this->_url.'&ch='.$this->checksum();
}
function getPageRank($dcchosen)
{
$fh = @fopen($this->pageRankUrl($dcchosen), "r");
if($fh)
{
$contenido = '';
while (!feof($fh)) {
$contenido .= fread($fh, 8192);
}
fclose($fh);
ltrim($contenido);
rtrim($contenido);
$contenido=str_replace("Rank_1:1:","",$contenido);
return $contenido;
}
return -1;
}
}
$dc = "http://toolbarqueries.google.com";
$gpr =& new GooglePageRank("http://www.dominio.com");
$pagerank = $gpr->getPageRank($dc);
echo $pagerank;
En negrita está lo que puede ser modificado sin problemas. Lo primero en negrita es la variable $dc, que es el datacenter que queremos verificar. Esto es muy útil si queremos ver el PageRank en distintos servidores de Google ya que convirtiéndolo en array y modificando un poco la última parte del código podremos recorrer unos cuantos. Yo hice esto en un script que lo tengo corriendo todo el día vía un cron job así me entero rápido de la llegada del próximo PageRank update 🙂
La segunda parte en negrita es ni más ni menos la url que queremos consultar.
También con un switch podrían mostrar una imagen según el PageRank imitando la barrita de Google. Espero que les sea útil.
10 comentario/s hasta el momento
14 de septiembre de 2007 a las 4:35 pm
21 de septiembre de 2007 a las 11:42 pm
Me puedes ayudar me arrojo un error:
Parse error: parse error, expecting `T_OLD_FUNCTION’ or `T_FUNCTION’ or `T_VAR’ or `’}» on line 104
Gracias
22 de septiembre de 2007 a las 2:43 am
Hola Juan, dejé una llave de más cuando pasé el código a WordPress. Copialo de nuevo que ahora sí anda bien. Saludos.
14 de junio de 2008 a las 9:22 pm
28 de julio de 2008 a las 2:40 pm
Que buenj aporte gracias
——————————–
7 de enero de 2009 a las 9:28 am
Agradecido, saludos
2 de enero de 2010 a las 8:33 pm
Hola Julián, muy bueno el aporte, el problema es que no me actualiza más de 100 url’s y en mi bbdd tengo unos 27mil enlaces, puedes ayudarme????
Como mlo hago para que me corra bien???
5 de enero de 2010 a las 5:33 pm
Ya lo solucioné, cualquier cosa me avisais y os digo como
Un saludo
27 de marzo de 2012 a las 9:05 pm
Muchísimas gracias por este post, la verdad que yo de códigos no se nada, pero si se que es muy importante el page rank pra google.
16 de mayo de 2013 a las 4:27 am
Muy bueno!Gracias =)