En el post anterior básicamente conté que esto de hacer peticiones cross-domain tiene muuuuchos problemas y que aún con los problemas que hay hoy iba a poner la solución para obtener el PageRank usando sólo javascript.
Claramente os tomé el pelo ;p
Que noooooooo!! A ver, todo lo que conté ayer es verdad. No se puede obtener el valor de las peticiones cross-domain a no ser que se usen algunos trucos (lo del proxy PHP, …), por lo que estrictamente hablando el código que obtiene el PageRank sigue sin saber cual es el Page Rank, sin embargo, sí puede mostrar ese PageRank adecuadamente, y eso es lo que hace el script.
Por no andarme con rodeos, a continuación teneis un iframe donde podeis poner la web que querais y os mostrará su PageRank. Os prometo que sólo utiliza javascript (mas abajo el código).
Ver la demo en una ventana nueva
Básicamente lo que hace el script es calcular una serie de checksums de la página web introducida, actualizar unos campos en un formulario y enviar ese mismo formulario usando GET, y cargando el resultado devuelto por Google en un iframe. Ese iframe no se puede manipular de ninguna de las maneras, y si en vez de usar lo del iframe, se hace con AJAX, el resultado es el mismo.
El truco, hack, chapuza o como lo querais llamar, es que el PageRank aparece después de una cadena (que por los tests realizados es “Rank_1:1:”). Lo que hace el script es calcular (mas o menos) donde estará el número de PR en esa cadena y mueve el iframe para que sólo salga ese último número.
Debo reconocer que hacer esto con javascript es bastante chapuza, aunque la ventaja es que se sigue viendo el PR de una web, y todas las peticiones a Google corren a cargo de los propios navegadores web. Tampoco descarto que algunas personas puedan tener algún problema al visualizar el PR en su navegador, en tal caso el script necesitaría algunas adaptaciones y sois totalmente libres de hacerlas.
A continuación teneis el código de getpagerank.js, el script que calcula los checksums y obtiene el Page Rank de Google. Podeis echar un vistazo al código de pagerank.html para ver como funciona todo.
Finalmente, por si alguien quiere embeder la página en su web, el código es el siguiente
Bueno, ¿Que os ha parecido? ¿os ha gustado? ¿estais decepcionados? ¿lo veis demasiado chapuza?
Proximamente en CodigoManso explicaré como hacer peticiones cross-domain con javascript y pasar información de unos servidores a otros (esto ya no será en plan chapuza, lo prometo).
English
22/01/2009 at 8:21 am Permalink
Nice but do you know it’s kind of illegal to get PR information like this?
22/01/2009 at 8:54 am Permalink
Really? Uhm… I didn’t know it was illegal.
Could you provide a link from Google for reading more about this?
25/01/2009 at 12:01 am Permalink
Hola,
Este script es un trabajo fenomenal. Me parece increíble que puedan hacerse estas cosas con javascript. En mi caso, el único problema es que me aparece el iframe delante del PageRank en Internet Explorer. En Firexfox funciona perfectamente. ¿Habrá alguna manera de esconder el iframe en el Explorer?
Saludos y enhorabuena por tu trabajo.
25/01/2009 at 5:00 am Permalink
El caso es que yo lo he probado en FF3, Opera, Safari 3.1 en Windows, y IE7. Y he adaptado un poco la posición de la cadena devuelta por Google según el navegador para que saliera bien en todos ellos. Obviamente era posible y probable que según la configuración del ordenador de cada uno no salga bien.
Si le echas un vistazo al código HTML de la demo (en este enlace), verás el siguiente fragmento de código:
var topadd = 0, leftadd = 0;
if ($.browser.msie) { topadd = 2; leftadd = 12; }
else if ($.browser.mozilla) { topadd = 0; leftadd = 7; }
else if ($.browser.opera) { topadd = -3; leftadd = 4; }
else if ($.browser.safari) { topadd = 0; leftadd = 8; }
Básicamente el código de arriba es para saber cuanto tiene que desplazar el iframe donde sale el PageRank para que salga perfectamente, según cada navegador. Puedes tratar de cambiar el topadd y el leftadd para el IE hasta que se vea bien, o si se te ocurre alguna otra forma de hacerlo, bienvenida sea, porque esta, todo sea dicho, es un poco chapuza
Un saludo y gracias por el comentario.
04/04/2009 at 5:40 pm Permalink
hey thx a lot for this solution!!! I think i will integrate it in my site! until today I didn’t know a reliable solution for getting the actual PR of websites. This is for the most webmaster a really important information. (not for all
) . it’s only for me an indicator not more. hey and for those who say it’s illegal ,.. are you stupid robots without brain? do you really think everything google does was right? brave sheep do your job and eat gras and don’t disturb us anymore.
again thx for this great chance to struggle the force of google and his approach don’t be evil.
bronco.
22/10/2009 at 1:22 pm Permalink
And it also helps these young people understand some of the ways they might improve their community. ,
22/10/2009 at 1:28 pm Permalink
Mass Effect and a simple game like pong or snake, but they are all games. ,
28/02/2010 at 3:22 am Permalink
Hola,
Este script es un trabajo excelente. Me parece fantástico que puedan hacerse este tipo de cosas con javascript. En mi caso, ya lo uso en mi sitio y trabaja perfectamente.
Saludos y enhorabuena por tu trabajo.
28/02/2010 at 5:47 am Permalink
Hola,
Este script es un trabajo excelente. Me parece fantástico que puedan hacerse este tipo de cosas con javascript. En mi caso, ya lo uso en mi sitio y trabaja perfectamente.
service webmaster SEO
usuarios de este sitio que deseen ver como trabaja el código de manso pueden seguir el enlace anterior.
Saludos y enhorabuena por tu trabajo.
06/03/2010 at 12:04 am Permalink
Gracias
08/03/2010 at 12:50 am Permalink
Amigo mio nada tienes que agradecer tu trabajo es bueno, sigue haciendo cosas como esta, y si quieres en mi web siempre habrá un espacio para tus programas, solo envíame un correo con tu ultima novedad y lo publicaré en mi web.
04/09/2010 at 9:35 am Permalink
Excelente trabajo, no cabe duda que te gusta lo que haces.
Saludos cordiales
27/12/2010 at 3:41 pm Permalink
Este javascript es una maravilla. Justo lo que estaba buscando. Enhorabuena