Foro de Xeoweb Foro de Posicionamiento y Buscadores
Aprendiendo a Promocionar Páginas Web.
Xeoweb :: Sindicar
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   LoginLogin 
Congreso SEO para SEOs
Script PHP para controlar el pagerank.
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
jdurgell
¿Qué es SEO?


Registrado: 22 Oct 2005
Mensajes: 9
Ubicación: Madrid

MensajePublicado: Sab Oct 22, 2005 2:51 am    Asunto: Script PHP para controlar el pagerank. Responder citando

¡Hola a todo el mundo!

Me presento: mi nombre es Jaume d'Urgell y soy ingeniero informático, si bien trabajo como escritor.

Aunque seguramente todos conocéis ya éste código fuente, me gustaría re-publicarlo de nuevo, porque creo que es muy interesante y puede seros de ayuda.

Se trata de un pequeño script que permite efectuar numerosas consultas sobre el PageRank de uno o varios sitios web, bien apra ir controlando de cerca la evolución de una página, bien para ubicarlo dentro de un JS cliente para condicionar ciertos contenidos en función del PageRank, o para lo que se os ocurra.

Si alguien desea verlo en funcionamiento, en real, lo tenéis en las siguiente dirección web:

http://www.durgell.com/pagerank/

Y para familiarizarnos con los parámetros, ahí os pongo algunos ejemplos de uso:

http://www.durgell.com/pagerank/?url=www.xeoweb.com

http://www.durgell.com/pagerank/?url=www.xeoweb.com&type=number


Bueno, sin más, ahí va el código fuente, que de todos modos podéis bajaros desde la siguiente dirección:

http://www.durgell.com/pagerank/script.zip



Código:
<?php

set_time_limit(0);

//header("Content-Type: text/html; charset=utf-8");
define('GOOGLE_MAGIC', 0xE6359A60);

//unsigned shift right
function zeroFill($a, $b)
{
$z = hexdec(80000000);
if ($z & $a)
{
$a = ($a>>1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
}
else
{
$a = ($a>>$b);
}
return $a;
}

function mix($a,$b,$c) {
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
 $b -= $c; $b -= $a; $b ^= ($a<<8);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
 $b -= $c; $b -= $a; $b ^= ($a<<16);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
 $a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
 $b -= $c; $b -= $a; $b ^= ($a<<10);
 $c -= $a; $c -= $b; $c ^= (zeroFill($b,15));

 return array($a,$b,$c);
}


function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
 if(is_null($length)) {
  $length = sizeof($url);
 }
 $a = $b = 0x9E3779B9;
 $c = $init;
 $k = 0;
 $len = $length;
 while($len >= 12) {
  $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
  $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
  $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
  $mix = mix($a,$b,$c);
  $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
  $k += 12;
  $len -= 12;
 }
 $c += $length;
 switch($len) {
  case 11: $c+=($url[$k+10]<<24);
  case 10: $c+=($url[$k+9]<<16);
  case 9 : $c+=($url[$k+8]<<8);
  case 8 : $b+=($url[$k+7]<<24);
  case 7 : $b+=($url[$k+6]<<16);
  case 6 : $b+=($url[$k+5]<<8);
  case 5 : $b+=($url[$k+4]);
  case 4 : $a+=($url[$k+3]<<24);
  case 3 : $a+=($url[$k+2]<<16);
  case 2 : $a+=($url[$k+1]<<8);
  case 1 : $a+=($url[$k+0]);
 }
 $mix = mix($a,$b,$c);
 return $mix[2];
}


function strord($string) {
 for($i=0;$i<strlen($string);$i++) {
  $result[$i] = ord($string{$i});
 }
 return $result;
}

function getExactNumber($url) {
$result = GoogleCH(strord('info:'.$url));
$result = file("http://www.google.com/search?client=navclient-auto&ch=6".$result."&features=Rank&q=info:".$url);
$result = explode (':', $result[2]);
$result = $result[2];
return ($result);
}

function getNumber($url) {
$result = GoogleCH(strord('info:'.$url));
$result = file("http://www.google.com/search?client=navclient-auto&ch=6".$result."&features=Rank&q=info:".$url);
$result = explode (':', $result[2]);
$result = $result[2];
return abs($result);
}

function getString($url) {
$result = GoogleCH(strord('info:'.$url));
$result = file("http://www.google.com/search?client=navclient-auto&ch=6".$result."&features=Rank&q=info:".$url);
$result = explode (':', $result[2]);
$number[0] = 'cero';
$number[1] = 'uno';
$number[2] = 'dos';
$number[3] = 'tres';
$number[4] = 'cuatro';
$number[5] = 'cinco';
$number[6] = 'seis';
$number[7] = 'siete';
$number[8] = 'ocho';
$number[9] = 'nueve';
$number[10] = 'diez';
$result = $number[abs($result[2])];
return $result;
}

function getGraph($url) {
$result = GoogleCH(strord('info:'.$url));
$result = file("http://www.google.com/search?client=navclient-auto&ch=6".$result."&features=Rank&q=info:".$url);
$result = explode (':', $result[2]);
$result = "<span title='El Google Page Rank™ de ".$url." es ".getString($url).".' style='border: 1px gray solid'><span style='background: green; width:" . abs($result[2]) * 4 . "px; height:5px;'><div style='display:none;'>.</div></span><span style='background: white; width:" . (10 - abs($result[2])) * 4 . "px; height:5px;'><div style='display:none;'>.</div></span></span>";
return $result;
}

function getFull($url) {
echo "<font face=Arial size=1>Según <a href=http://www.google.com/ style='text-decoration:none;'><font color=blue>G</font><font color=red>o</font><font color=orange>o</font><font color=blue>g</font><font color=green>l</font><font color=red>e</font></a>™, el sitio <a href=http://$url>$url</a> tiene un índice de importancia equivalente a <b title='Google Page Rank = ".getNumber($url)."'>".getString($url)."</b> en una escala de 0 a 10. PageRank™ gráfico: </font>".getGraph($url);
}

function reportBegin() {
echo "<table border=0 cellspacing=1 cellpadding=2 bgcolor=gray>";
echo "<tr>";
}

function reportEntry($url) {
echo "<td bgcolor=white>".$url."</td>";
echo "<td bgcolor=white>".getNumber($url)."</td>";
echo "<td bgcolor=white>".getGraph($url)."</td>";
}

function reportGap() {
echo "</tr>";
echo "<tr>";
}

function reportInter() {
echo "<td>";
echo "</td>";
}

function reportClose() {
echo "</tr>";
echo "</table>";
}

function fullInfo($url) {
echo "<font face=Arial size=1>Según <a href=http://www.google.com/ style='text-decoration:none;'><font color=blue>G</font><font color=red>o</font><font color=orange>o</font><font color=blue>g</font><font color=green>l</font><font color=red>e</font></a>™, este sitio tiene un índice de importancia equivalente a <b title='Google Page Rank = ".getNumber($url)."'>".getString($url)."</b> en una escala de 0 a 10. PageRank™ gráfico: </font>".getGraph($url);
}

if ($_GET['site']=='') {

 if ($_GET['url']<>'') {

 if ($_GET['type']=='exact') echo getExactNumber($_GET['url']);
 if ($_GET['type']=='number') echo getNumber($_GET['url']);
 if ($_GET['type']=='string') echo getString($_GET['url']);
 if ($_GET['type']=='graphic') echo getGraph($_GET['url']);
 if ($_GET['type']=='graph') echo getGraph($_GET['url']);
 if ($_GET['type']=='full') echo getFull($_GET['url']);
 if ($_GET['type']=='all') echo getFull($_GET['url']);

 if ($_GET['type']=='exacto') echo getExactNumber($_GET['url']);
 if ($_GET['tipo']=='numero') echo getNumber($_GET['url']);
 if ($_GET['tipo']=='letra') echo getString($_GET['url']);
 if ($_GET['tipo']=='letras') echo getString($_GET['url']);
 if ($_GET['tipo']=='grafico') echo getGraph($_GET['url']);
 if ($_GET['tipo']=='todo') echo getFull($_GET['url']);

 if ($_GET['type']=='' & $_GET['tipo']=='') getFull($_GET['url']);

 }

 if ($_GET['url']=='') {

 if ($_SERVER['HTTP_REFERER']=='') {

echo 'Modo de uso: <code><font color=gray>http://www.durgell.com/pagerank?url=www.ejemplo.com&type=graph</font></code>, donde <code><font color=gray>type</font></code> puede ser: <code><font color=gray>numero</font></code>, <code><font color=gray>letra</font></code>, <code><font color=gray>grafico</font></code> o <code><font color=gray>todo</font></code>. (autor: Jaume d\'Urgell, <a href="mailto:jaume@durgell.com">jaume@durgell.com</a>).';

 } else {

if ($_GET['type']=='javascript') {

echo 'infoPageRankExactNumber="'.getExactNumber($_SERVER['HTTP_REFERER']).'";';
echo 'infoPageRankNumber="'.getNumber($_SERVER['HTTP_REFERER']).'";';
echo 'infoPageRankString="'.getString($_SERVER['HTTP_REFERER']).'";';
echo 'infoPageRankGraph="'.getGraph($_SERVER['HTTP_REFERER']).'";';
echo 'infoURL="'.$_SERVER['HTTP_REFERER'].'";';
echo 'infoIP="'.$_SERVER['REMOTE_ADDR'].'";';

}

if ($_GET['type']=='exact') echo 'infoPageRankExactNumber="'.getExactNumber($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='number') echo 'infoPageRankNumber="'.getNumber($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='string') echo 'infoPageRankString="'.getString($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='graphic') echo 'infoPageRankGraph="'.getGraph($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='graph') echo 'infoPageRankGraph="'.getGraph($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='full') echo 'infoPageRankFull="'.getFull($_SERVER['HTTP_REFERER']).'";';
if ($_GET['type']=='all') echo 'infoPageRankFull="'.getFull($_SERVER['HTTP_REFERER']).'";';

if ($_GET['type']=='exacto') echo 'infoPageRankExactNumber="'.getExactNumber($_SERVER['HTTP_REFERER']).'";';
if ($_GET['tipo']=='numero') echo 'infoPageRankNumber="'.getNumber($_SERVER['HTTP_REFERER']).'";';
if ($_GET['tipo']=='letra') echo 'infoPageRankGraph="'.getString($_SERVER['HTTP_REFERER']).'";';
if ($_GET['tipo']=='letras') echo 'infoPageRankGraph="'.getString($_SERVER['HTTP_REFERER']).'";';
if ($_GET['tipo']=='grafico') echo 'infoPageRankGraph="'.getGraph($_SERVER['HTTP_REFERER']).'";';
if ($_GET['tipo']=='todo') echo 'infoPageRankFull="'.getFull($_SERVER['HTTP_REFERER']).'";';

if ($_GET['type']=='' & $_GET['tipo']=='') 'infoPageRankFull="'.getFull($_SERVER['HTTP_REFERER']).'";';

 }

 }

}

else

if ($_GET['site']=='durgell.com') {
 reportBegin();
 reportEntry("www.durgell.com"); reportInter();
 reportEntry("durgell.com");
 reportGap();
 reportEntry("www.durgell.com/"); reportInter();
 reportEntry("durgell.com/");
 reportGap();
 reportEntry("www.durgell.com/index.php"); reportInter();
 reportEntry("durgell.com/index.php");
 reportGap();
 reportEntry("www.durgell.com/index.html"); reportInter();
 reportEntry("durgell.com/index.html");
 reportGap();
 reportEntry("www.durgell.com/index.htm"); reportInter();
 reportEntry("durgell.com/index.htm");
 reportGap();
 reportEntry("www.durgell.com/letras"); reportInter();
 reportEntry("durgell.com/poemas");
 reportGap();
 reportEntry("www.durgell.com/letras/"); reportInter();
 reportEntry("durgell.com/poemas/");
 reportGap();
 reportEntry("www.durgell.com/poemas"); reportInter();
 reportEntry("durgell.com/poemas");
 reportGap();
 reportEntry("www.durgell.com/poemas/"); reportInter();
 reportEntry("durgell.com/poemas/");
 reportGap();
 reportEntry("www.durgell.com/pagerank"); reportInter();
 reportEntry("durgell.com/pagerank");
 reportGap();
 reportEntry("www.durgell.com/metrica.es.php"); reportInter();
 reportEntry("durgell.com/metrica.es.php");
 reportClose();
}

?>




Como se puede deducir a la vista del código, es perfectamente posible y muy fácil adaptar cierta parte de hardcoding a nuestras necesidades particulares.

Bueno, espero que sea de vuestro interés.

Sin otro particular, recibid un cordial saludo,



Jaume d'Urgell
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Philippe
Yo uso Google


Registrado: 16 May 2004
Mensajes: 1008
Ubicación: La Paloma, Uruguay

MensajePublicado: Sab Oct 22, 2005 4:09 am    Asunto: Responder citando

Parece no funcionar, al menos a mí me muestra todos los sitios con PageRank 0.
_________________
Participa en el foro de jovenes y haz amigos.
Visita blogs de calidad en La Gran Red. Blogs de literatura, internet, viajes y más.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
cocososo
Olé sí que era un buen buscador


Registrado: 19 Dic 2004
Mensajes: 40
Ubicación: La Verneda, Rio Besós, Mar Mediterraneo.

MensajePublicado: Sab Oct 22, 2005 9:38 am    Asunto: Responder citando

A mi me funciona.
_________________
Antonio Román
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
jdurgell
¿Qué es SEO?


Registrado: 22 Oct 2005
Mensajes: 9
Ubicación: Madrid

MensajePublicado: Sab Oct 22, 2005 1:57 pm    Asunto: Responder citando

Siempre que se publica un código fuente, y más aún si éste tiene más de 25 líneas, siempre hay personas que lamentablemente encuentran dificultades a la hora de implementarlo, no obstante, en este caso, a parte de publicar el código, he facilitado un enlace para descargárselo (en ZIP), y un vínculo a una versión completamente operativa.

El código funciona, eso es una verdad incontrovertible.

Si en lugar de un "no funciona", podéis hacer una pregunta más concreta, trataré de ayudaros en lo que pueda.

Un saludo,
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Philippe
Yo uso Google


Registrado: 16 May 2004
Mensajes: 1008
Ubicación: La Paloma, Uruguay

MensajePublicado: Sab Oct 22, 2005 2:23 pm    Asunto: Responder citando

jdurgell escribió:
Siempre que se publica un código fuente, y más aún si éste tiene más de 25 líneas, siempre hay personas que lamentablemente encuentran dificultades a la hora de implementarlo, no obstante, en este caso, a parte de publicar el código, he facilitado un enlace para descargárselo (en ZIP), y un vínculo a una versión completamente operativa.

El código funciona, eso es una verdad incontrovertible.

Si en lugar de un "no funciona", podéis hacer una pregunta más concreta, trataré de ayudaros en lo que pueda.

Un saludo,


Ya ví que sí funciona, es que parece que en Firefox no se muestra correctamente el gráfico del PageRank... y me refiero a la versión que tienes corriendo online en tu servidor. Ahora lo miré en IE y se ve bien, debe ser un error o incompatibilidad en el código para mostrar el gráfico.
_________________
Participa en el foro de jovenes y haz amigos.
Visita blogs de calidad en La Gran Red. Blogs de literatura, internet, viajes y más.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
jdurgell
¿Qué es SEO?


Registrado: 22 Oct 2005
Mensajes: 9
Ubicación: Madrid

MensajePublicado: Sab Oct 22, 2005 2:58 pm    Asunto: Responder citando

Hummm... curioso. Voy a ver si puedo ponerle solución.

Un saludo y gracias por comunicarlo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Davilac
Soy de Yahoo!


Registrado: 26 Dic 2004
Mensajes: 836
Ubicación: BCN

MensajePublicado: Sab Oct 22, 2005 3:30 pm    Asunto: Responder citando

Tampoco se ve en Opera.
_________________
Servicios profesionales SEO Davilac Internet Marketing
Actualidad Motor
iPhone
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
cocososo
Olé sí que era un buen buscador


Registrado: 19 Dic 2004
Mensajes: 40
Ubicación: La Verneda, Rio Besós, Mar Mediterraneo.

MensajePublicado: Sab Oct 22, 2005 3:31 pm    Asunto: Responder citando

jdurgell escribió:

El código funciona, eso es una verdad incontrovertible.


Laughing Laughing Laughing Pos va ser que no!

Te veo un poquitin estirao.
_________________
Antonio Román
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
jdurgell
¿Qué es SEO?


Registrado: 22 Oct 2005
Mensajes: 9
Ubicación: Madrid

MensajePublicado: Sab Oct 22, 2005 3:53 pm    Asunto: Responder citando

¿Y no es un poquitín de estirao, llamar estirao a otro?

¿Me mostraría menos estirao aceptar que no funciona, algo que sí funciona?

¿Se puede llamar error a un defecto de visualización?

¿Tiene algo que ver la forma en la que un cliente HTTP visualiza -o mejor dicho, no visualiza- el resultado de un programa en servidor, para afirmar que el programa no funciona?

Este script tiene varios modos de funcionamiento en los que no muestra gráfico alguno, sino una mera salida de texto. ¿eso también depende del cliente?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
cocososo
Olé sí que era un buen buscador


Registrado: 19 Dic 2004
Mensajes: 40
Ubicación: La Verneda, Rio Besós, Mar Mediterraneo.

MensajePublicado: Sab Oct 22, 2005 5:14 pm    Asunto: Responder citando

Empezare por el principio:

Gracias por dar a conocer el codigo, siempre me gusta chafardear el trabajo de alguien que sabe mas que yo.

No hacia falta que pegases el codigo en el foro, con el enlace es suficiente.

A tus preguntas: Si, Si, Si, Si, No entiendo.
_________________
Antonio Román
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Davilac
Soy de Yahoo!


Registrado: 26 Dic 2004
Mensajes: 836
Ubicación: BCN

MensajePublicado: Sab Oct 22, 2005 6:10 pm    Asunto: Responder citando

Una sugerencia: quizá le puedas poner la opción de usar una API key.

Sólo una duda: para usar una Api de Google sólo hay que añadirla con &key= a la petición no?
_________________
Servicios profesionales SEO Davilac Internet Marketing
Actualidad Motor
iPhone
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
JustMe
Vivo en Xeoweb


Registrado: 27 Sep 2005
Mensajes: 3070
Ubicación: Por ahí....

MensajePublicado: Dom Oct 23, 2005 1:05 am    Asunto: Responder citando

cocososo escribió:
jdurgell escribió:

El código funciona, eso es una verdad incontrovertible.


Laughing Laughing Laughing Pos va ser que no!

Te veo un poquitin estirao.


Es uno estirao por hacer un uso correcto del lenguaje? Ya quisiera yo escribir como lo hace Jaume.
_________________
PHP Data uri fier
Blog Gratis
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
war
Soy de Yahoo!


Registrado: 29 Sep 2005
Mensajes: 745
Ubicación: Nicaragua

MensajePublicado: Lun Oct 24, 2005 1:25 am    Asunto: Responder citando

@TODOS:

Jajaja, este tema resulto interesante, por lo menos a mi me sirvió-...

Cita:
Sólo una duda: para usar una Api de Google sólo hay que añadirla con &key= a la petición no?


Solo una preguntita, y un comentario :

1. Yo tengo un Api de Google, pero en realidad no se ni para qué, porque no le encontrado funcioanlidad alguna mas que para el Sitemap. Reconozco que me falta leer mas para terminar de comprender esto de Api, agradecería cualquier orientacion al respecto.

2. jdurdell: A mi me funcionó muy bien desde la primera, uso IE.
_________________
Tutoriales de Photoshop
Diseño Web
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
jdurgell
¿Qué es SEO?


Registrado: 22 Oct 2005
Mensajes: 9
Ubicación: Madrid

MensajePublicado: Lun Oct 24, 2005 1:46 am    Asunto: Disculpas por el tono. Responder citando

Hola a todos, de nuevo,

Lamento sinceramente que en ocasiones, un exceso de corrección escrita pueda ser interpretado como comportamiento altivo. Nada más lejos de mi voluntad.

Cuando llegué a Madrid, estaba acostumbrado a tratar a todo el mundo de Usted, supongo que eso era el resultado de tres años en el ejército, más los estudios y un ambiente familiar un tanto peculiar... y me pasaba lo mismo: resultaba incomprensible e involuntariamente hostil.

Lo dicho: disculpa si a alguien le molestó mi tono. No pretendía molestar a nadie.

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
war
Soy de Yahoo!


Registrado: 29 Sep 2005
Mensajes: 745
Ubicación: Nicaragua

MensajePublicado: Lun Oct 24, 2005 2:01 am    Asunto: Responder citando

sin problemas por mi parte. TRanquilo y gracias nuevamente por el script Very Happy
_________________
Tutoriales de Photoshop
Diseño Web
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web Todas las horas son GMT
Ir a página 1, 2  Siguiente
Respuesta Rápida y Acciones
 

 

Página 1 de 2


Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro

 


Logo diseñado por iLevante
Powered by phpBB © 2001, 2009 phpBB Group