CALCULER SON PAGE RANK GOOGLE

Signaler
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
-
Messages postés
63
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
4 février 2007
-
Hello,



J'étais vraiment curieux de savoir comment on calcule un page rank. Du
coup je suis parti fouiner sur le web et j'avoue avoir eu une peine
énorme pour trouver comment faire! Le problème est de chopper
l'algorithme qui calcul le checksum de la page désirée sans lequel
google refuse de fournir le page rank... c'est chose faite :)



Ce post est à titre INDICATIF, c'est pour la curiosité
intellectuelle. Si les admins considèrent qu'il s'apparente trop à du
hack, qu'il soit enlevé sans autre!



Ceci dit, je vous livre mes investigations du matin...



En exécutant le code suivant (qui n'est pas de moi) avec l'url désirée
en paramètres (par exemple
"http://tonsite.com/pagerank.php/url'http://www.phpcs.com)



<?php

/*

Written and contributed by

Alex Stapleton,

Andy Doctorow,

Tarakan,

Bill Zeller,

Vijay "Cyberax" Bhatter

traB

This code is released into the public domain

*/

header("Content-Type: text/plain; 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)
/* all the case statements fall through */

{

case 11: $c+=($url[$k+10]<<24);

case 10: $c+=($url[$k+9]<<16);

case 9 : $c+=($url[$k+8]<<8);

/* the first byte of c is reserved for the length */

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]);

/* case 0: nothing left to add */

}

$mix = mix($a,$b,$c);

/*-------------------------------------------- report the result */

return $mix[2];

}



//converts a string into an array of integers containing the numeric value of the char

function strord($string) {

for($i=0;$i<strlen($string);$i++) {

$result[$i] = ord($string{$i});

}

return $result;

}





// converts an array of 32 bit integers into an array with 8 bit values. Equivalent to (BYTE *)arr32



function c32to8bit($arr32) {

for($i=0;$i<count($arr32);$i++) {

for ($bitOrder=$i*4;$bitOrder<=$i*4+3;$bitOrder++) {

$arr8[$bitOrder]=$arr32[$i]&255;

$arr32[$i]=zeroFill($arr32[$i], 8);

}

}

return $arr8;

}





$url = 'info:'.$_GET['url'];

$ch = GoogleCH(strord($url));

$ch=sprintf("%u", $ch);

$ch = ((($ch/7) << 2) | (((int)fmod($ch,13))&7));



$prbuf = array();

$prbuf[0] = $ch;

for($i = 1; $i < 20; $i++) {

$prbuf[$i] = $prbuf[$i-1]-9;

}

$ch = GoogleCH(c32to8bit($prbuf), 80);



$ch = sprintf("6%u",$ch);

$url2 = 'http://www.google.com/search?client=navclient-auto&ch='.$ch.'&feature=Rank&q=info:'.$_GET['url'];

echo $url2;

?>



on obtient: http://www.google.com/search?client=navclient-auto&ch=62400035933&feature=Rank&q=info:http://www.phpcs.com



ou ch est le checksum de q.



Si on suit ce lien dans google, on arrive sur une page XML qui contient entre autre:







Tout le monde aura remarqué la balise <RK>...



Du coup, reste à récupérer ce RK:



$source = implode ('', file ("$url2"));

$source = strstr($source, '<RK>');

$sup = strstr($source, '</RK>');

$rank = str_replace("$sup","", $source);

$rank = str_replace("<RK>","", $rank);



echo 'Le page rank de '.$_GET['url'].' est de '.$rank;



La dernière ligne va afficher dans cet exemple:


Le page rank de http://www.phpcs.com est de 5


Voili voilà. En gros je trouve ça assez
inutile, je l'avoue mais le page rank semble être la grosse
préoccupation de beaucoup de monde!


Ce bout de code permet d'afficher son pagerank sur son site par exemple, ce qui est sympa. Sans plus



Sur ce, bonne journée à tous, c'est le week-end et je vais essayer de faire autre chose que de l'ordi



Enjoy, ++

Malik7934

10 réponses

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
PS: parfois, cela ne marche pas... je vais pas tout révéler et vous laisser comprendre pourquoi
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

C'est vrai que beaucoup s'y intéresse dans le sens où ils considèrent ça comme les sites du genre weborama et autres classement de site. Le but étant d'être le premier :D

Je ne m'y intéressais pas. Mais j'ai relevé quand même. Merci de nous faire profiter de tes efforts

Mizuka
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

En effet j'ai un soucis.
Le rank de l'url que je donne ne s'affiche pas.
J'ai 'Le rank de ... est de '
Messages postés
63
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
4 février 2007

Salut Makik,

Je vois que tu t'intéresse aux problématiques du référencement depuis mon post sur le cloacking....

Quand à tes inquiétudes sur une "source de hack", je te rassure affiché son vraie PR sur son site n'en n'est pas du tout !!

Mais si la tâche est louable, il existe pléthore de bon site qui le propose avec un logo visuelle :

http://rankit.free.fr/
http://www.mon-pagerank.com/
http://www.xooref.com/
http://www.seochat.com/seo-tools/future-pagerank/
http://www.markhorrell.com/seo/pagerank.shtml
http://www.webmaster-hub.com/outils/backlinks.php
http://www.webmasterbrain.com/prog/

ou un outil très bien fait et gratuit

http://www.prweaver.fr/

@ Bientôt Malik

Au fait oui j'utilise plusieurs pseudo suivant mes recherches
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello neolien,



Mon but dans cette investigation était justement de ne pas passer par
des outils sur d'autres sites, mais directement chez soit. Je n'aime
pas trop les dépendances
Messages postés
63
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
4 février 2007

Ok malik,

Regarde à cette adresse, un script complet et fonctionnel :

http://www.googlecommunity.com/scripts/pagerank-source.phps

Bon week-end
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Complet et fonctionnel... tu me decois un peu sur ce coup



Si j'utilise "mon" script pour phpcs je reçois comme réponse:

<GSP VER= "3.2">

<TM>0.084299</TM>

<Q>info:http://www.phpcs.com</Q>









-

<RES SN="1" EN="1">

<M>1</M>

<XT/>

-

<R N= "1">

http://www.phpcs.com/

http://www.phpcs.com/

-

<T>

PHPCS.com | PHP CodeS SourceS | 1842 sources PHP, Source, Code ...

</T>

<RK>5</RK>



...

Si j'utilise le script que tu proposes:

Forbidden

Your client does not have permission to get URL
/search?client  =navclient-auto&amp;ch=318925651&amp;feature=Rank&amp;q=info:http://www.phpcs.com</code>




La raison? Le checksum... L'algo a changé et si ca marche pour certain
site (je crois que c'est le cas), cela n'est pas systématique.



Enjoy, ++



PS: j'ai testé ton site... peut-etre que tes tests de cloaking ont eu
des effetes négatifs car la réponse du script est étrange... plus de
PR...
Messages postés
63
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
4 février 2007

Avec quoi tu as testé mon site ?, le script dont tu nous a fais part ?

Pour l'instant, le PR est encore de 4, mais j'ai des contradictions avec certains outils :

Pour les datacenters de Google, le PR de l'index est de 4
Quand j'utilise l'outil en ligne de rankit, www.webdconseils.com ne ressort pas ou indique une redirection, par contre avec ce même outil l'url suivante www.webdconseils.com/PR10.php ressort avec un futur PR de 2 ??!!

Mouais !, il y a un décalage entre le PR affiché par la Toolbar de Google (qui devrait se mettre à jour que tous les trimestres maintenant !), le PR live et le futur PR après la prochaine "GoogleDance"..

C'est pas évident de s'y retrouver !

En tout cas si Google avait constater des problèmes de Cloacking sur mon site, j'aurais immédiatement subi soit :

. l'effet "Sandbox" ou
. l'effet "Bourbon" ou
. le blacklistage total du site.. ce qui n'est pas le cas pour toutes ces mauvaises surprises.

En tout les cas, si le script est véritablement fonctionnel, les résultats devraient arrivés vers le mois de septembre environ..

Pour le script complet et fonctionnel de la Google Community, c'est bizarre, tu es sur que le problème vient du checksum ?, car ce renvoi d'erreur me fait penser à un pbl de permission sur le serveur ?...enfin !!

Sur ce @ + Malik
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello,



Le checksum est la clé pour accéder au PR, s'il est faux, il y a un message d'erreur. Donc oui, le problème vient du checksum.



Google semble avoir changé l'algo il y a qq tps et toutes les sources sur le net ne sont pas à jour!



En ce qui concerne ton site, c'est vrai que


http://www.google.com/search?client=navclient-auto&ch=63033696244&feature=Rank&q=info:http://www.webdconseils.com


donne un page rank de 4 maintenant: dans l'après-midi, la page xml générée était différente... aucune idée pourquoi...



Enjoy, ++
Messages postés
63
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
4 février 2007

Ok Malik et merci pour ces infos à jour sur le calcul de l'algo du Page Rank.....

@ Bientôt sur la toile