Obtener Pagerank de una pagina con PHP – Nuevo API Google

closeHola! hace 5 years 7 months 29 days que escribí esta entrada, puede que esta información ya no sea valida en la actualidad, por favor se comprensivo conmigo cuando comentes 🙂

Google ha actualizado la url del api para obtener el pagerank de un sitio web (Muchos plugins, sitios y herramientas dejaron de funcionar por este cambio), aprovecho este post para escribir el codigo en php de como se obtiene el pr de un sitio.

Código:

 
 
echo getpr('http://www.nexxuz.com');
 
 
function getpr($url){
	$dc = "http://toolbarqueries.google.com/";
	$gpr =& new GooglePageRank(trim($url));
	$pagerank = $gpr->getPageRank($dc);
	return $pagerank;
 
}
 
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 . 'tbr?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);
			$contenido=str_replace("Rank_1:2:","",$contenido);
			//$contenido=intval($contenido);
			$contenido=intval($contenido);
 
			if(is_numeric($contenido))
				return $contenido;
			else
				return -2;
		}
		return -1;
	}
 
}

Espero que les sea de mucha utilidad.

You may also like...

6 Responses

  1. He probado varios script PHP y el único que me ha funcionado ha sido éste. De verdad, muchas gracias.

    Saludos.

  2. Claudio dice:

    Funciona perfecto!. Nunca pensé que era tan fácil obtener este valor. Gracias por el aporte.

  3. Amigo dice:

    Gracias……..   

  4. Justin dice:

     Funciona de maravilla!

  5. Invitado dice:

    Amigo me has salvado, necesitaba esto para el trabajo, gracias

Deja un comentario

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