Bienvenidos a Nuestro Mundo - A Proyectos Beta!

En nuestra vida, desde que nacemos todo lo probamos, ensayamos y testeamos; así también erramos, caemos pero por sobre todo aprendemos. Es decir, todo lo que hacemos forma parte de una nueva experiencia, de un PROYECTO. El que siempre exista la posibilidad de mejorarlo es lo que lo convierte en BETA. En este blog queremos compartir contenidos de tipo informático con artículos de programación, software libre y propietario, redes, base de datos, noticias, experiencias, etc... y también de humor. Es un sitio de todos y para todos. Participá! Sos importante ...

Conocer el Page Rank de tu sitio web con php


Imagen del Page Rank
Estaba un poco aburrido así que me puse a buscar un código para realizar el PR de cada sitio web. Encontré un script que cumple con lo que estaba buscando. Aclaro que hice modificaciones muy pequeñas del código. Probé y funciona a la perfección.

Este archivo lo guardamos con el nombre pagerank.php
<?
/* Autor original: David Walsh
 * Sitio del código original:  http://davidwalsh.name/google-pagerank
 * Autor que modifico: josego
 * Blog: http://proyectosbeta.blogspot.com/
 * Mail: josego85@gmail.com
 */
 

 class GooglePageRankChecker {
     // Track the instance
     private static $instance;

     // Constructor
     function getRank($page) {
         // Create the instance, if one isn't created yet
         if(!isset(self::$instance)) {
             self::$instance = new self();
         }
         // Return the result
         return self::$instance->check($page);
     }

     // Convert string to a number
     function stringToNumber($string,$check,$magic) {
         $int32 = 4294967296; // 2^32
         $length = strlen($string);

         for ($i = 0; $i < $length; $i++) {
             $check *= $magic;
             

             // If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
             // the result of converting to integer is undefined
             // refer to http://www.php.net/manual/en/language.types.integer.php
             if($check >= $int32) {  

                 $check = ($check - $int32 * (int) ($check / $int32));
                 // if the check less than -2^31
                 $check = ($check < -($int32 / 2)) ? ($check + $int32) : $check;
             }
             $check += ord($string{$i});
         }
         return $check;
     }
     

     // Create a url hash
     function createHash($string) {
         $check1 = $this->stringToNumber($string, 0x1505, 0x21);
         $check2 = $this->stringToNumber($string, 0, 0x1003F);

         $factor = 4;
         $halfFactor = $factor/2;

         $check1 >>= $halfFactor;
         $check1 = (($check1 >> $factor) & 0x3FFFFC0 ) | ($check1 & 0x3F);
         $check1 = (($check1 >> $factor) & 0x3FFC00 ) | ($check1 & 0x3FF);
         $check1 = (($check1 >> $factor) & 0x3C000 ) | ($check1 & 0x3FFF);

         $calc1 = (((($check1 & 0x3C0) << $factor) | ($check1 & 0x3C)) <<  $halfFactor ) | ($check2 & 0xF0F );
         $calc2 = (((($check1 & 0xFFFFC000) << $factor) | ($check1 & 0x3C00)) << 0xA) | ($check2 & 0xF0F0000 );

         return ($calc1 | $calc2);
     }

     // Create checksum for hash
     function checkHash($hashNumber){
         $check = 0;
         $flag = 0;

         $hashString = sprintf('%u', $hashNumber) ;
         $length = strlen($hashString);

         for ($i = $length - 1; $i >= 0; $i --) {
             $r = $hashString{$i};

             if(1 === ($flag % 2)) {
                 $r += $r;
                 $r = (int)($r / 10) + ($r % 10);
             }
             $check += $r;
             $flag ++;
         }

         $check %= 10;
         if(0 !== $check){
             $check = 10 - $check;

             if(1 === ($flag % 2) ) {
                 if(1 === ($check % 2)) {
                     $check += 9;
                 }
                 $check >>= 1;
             }
         }
         return '7'.$check.$hashString;
     }

     function check($page) {
         // Open a socket to the toolbarqueries address, used by Google Toolbar
         $socket = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);

         // If a connection can be established
         if($socket) {
             // Prep socket headers
             $out = "GET /search?client=navclient-auto&ch=".$this->checkHash($this->createHash($page))."&features=Rank&q=info:".$page."&num=100&filter=0 HTTP/1.1\r\n";
             $out .= "Host: toolbarqueries.google.com\r\n";
             $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n";
             $out .= "Connection: Close\r\n\r\n";

             // Write settings to the socket
             fwrite($socket, $out);

             // When a response is received...
             $result = "";
             while(!feof($socket)) {
                 $data = fgets($socket, 128);
                 $pos = strpos($data, "Rank_");
                 if($pos !== false){
                     $pagerank = substr($data, $pos + 9);
                     $result += $pagerank;
                 }
             }
             // Close the connection
             fclose($socket);

             // Return the rank!
             return $result;
         }
     }
}
?>


Este archivo los guardamos con el nombre GenerarPageRank.php
<? 

    include('pagerank.php');

    $pr = new GooglePageRankChecker();
    $rank = $pr->check("http://proyectosbeta.blogspot.com/");
    echo 'http://proyectosbeta.blogspot.com/ tiene: --> '.$rank ." de Page Rank";
?>


Ahora colocan estos dos archivos en su apache y ejecutan el archivo GenerarPageRank.php para que les salga el PR de mi blog. Pueden colocar cualquier sitio. Espero que les sirva. XD

Fuente & Imagen: David Walsh Blog

0 comentarios:

Publicar un comentario

Expresate y se crítico en tu vida. XD

Recibir Artículos Por Correo

Categorías

acertijos (1) adsense (1) adwords (1) AJAX (1) algoritmos (8) android (32) apple (5) autocad (1) base de datos (16) bash (1) becas (1) benchmark (1) blogger (2) blogs (27) bsd (1) buscadores (22) c# (1) CAD (1) camaras digitales (1) casting (1) CentOS (9) certificados (1) ciencia (1) CLEI (5) cloud computing (3) codigo fuente (9) Compiladores (4) Concursos (14) conferencias (24) congresos (6) consolas (7) criptografia (1) css (6) curso online (10) cursos (14) debian (50) Diseño (11) edicion video (7) emuladores (3) encuestas (2) entrevistas (9) ERTIC (1) etico (1) eventos (87) extjs (2) facebook (18) flash (2) flicker (1) FLISOL (13) geek (6) geoserver (2) GIMP (8) gis (29) Google (48) hacking (1) Hardware (30) haskell (3) HTML 5 (20) humor (261) imagenes (238) Ingenieria (14) internet (1) iphone (3) Java (42) Javascript (14) JQuery (3) juegos (36) libros (5) Linux (248) MAC (1) manga (2) Manuales (10) mapquest (1) MapServer (5) matematica (2) Microsoft (26) Microsoft Windows (27) Moviles (16) musicas (7) mysql (3) navegadores (41) newsletters (1) nokia (2) Noticias cientificas (7) Noticias Informaticas (39) Noticias varias (14) nube (1) openlayers (13) openstreetmap (10) opiniones (1) oracle (9) Paraguay (102) photoshop (1) Php (12) podcast (1) postgres (7) Programacion (135) prolog (1) proyectos (10) python (3) radio (6) Recursos (112) redes (10) Redes Sociales (62) resumenes (1) Revistas (57) ruby (2) seguridad (23) seminarios (6) sencha (2) SEO (3) Series (1) Silverlight (1) Sistema Operativo (27) smartphone (1) Software Libre (198) sun (2) tablet (19) tecnologia (24) tecnoPyensis (6) Testing (5) Trabajo (6) trucos (22) Twitter (29) Ubuntu (152) varios (113) videos (173) virtualizacion (14) visual basic net (2) web (86) wikipedia (1) Windows 7 (23) windows 8 (1) Windows XP (2) wordpress (5) xml (1)

Entradas Aleatorias

Seguidores

Últimos Comentarios

Archivos del Blog