Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : CALCULER SON PAGE RANK GOOGLE [ Archives / Trucs et astuces ] (malik7934)

samedi 6 août 2005 à 11:30:40 | CALCULER SON PAGE RANK GOOGLE

malik7934

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



samedi 6 août 2005 à 11:42:54 | Re : CALCULER SON PAGE RANK GOOGLE

malik7934

PS: parfois, cela ne marche pas... je vais pas tout révéler et vous laisser comprendre pourquoi

samedi 6 août 2005 à 11:51:10 | Re : CALCULER SON PAGE RANK GOOGLE

Mizuka

Membre Club
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

samedi 6 août 2005 à 12:15:57 | Re : CALCULER SON PAGE RANK GOOGLE

Mizuka

Membre Club
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 '

samedi 6 août 2005 à 13:01:34 | Re : CALCULER SON PAGE RANK GOOGLE

neolien

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 :

[ Lien ]
[ Lien ]
[ Lien ]
[ Lien ]
[ Lien ]
[ Lien ]
[ Lien ]

ou un outil très bien fait et gratuit

[ Lien ]

@ Bientôt Malik

Au fait oui j'utilise plusieurs pseudo suivant mes recherches


dimanche 7 août 2005 à 14:38:28 | Re : CALCULER SON PAGE RANK GOOGLE

malik7934

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


dimanche 7 août 2005 à 16:28:44 | Re : CALCULER SON PAGE RANK GOOGLE

neolien

Ok malik,

Regarde à cette adresse, un script complet et fonctionnel :

[ Lien ]

Bon week-end


dimanche 7 août 2005 à 16:54:19 | Re : CALCULER SON PAGE RANK GOOGLE

malik7934

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>
<PARAM name="client" value="navclient-auto" original_value="navclient-auto"/>
<PARAM name="ch" value="62400035933" original_value="62400035933"/>
<PARAM name="feature" value="Rank" original_value="Rank"/>
<PARAM name="q" value="info:http://www.phpcs.com" original_value="info:http://www.phpcs.com"/>
-
    <RES SN="1" EN="1">
<M>1</M>
<XT/>
-
    <R N="1">
<U>http://www.phpcs.com/</U>
<UE>http://www.phpcs.com/</UE>
-
    <T>
PHPCS.com | PHP CodeS SourceS | 1842 sources PHP, Source, Code <b>...</b>
</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&ch=318925651&feature=Rank&q=info:http://www.phpcs.com

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...


dimanche 7 août 2005 à 18:44:26 | Re : CALCULER SON PAGE RANK GOOGLE

neolien

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


dimanche 7 août 2005 à 18:57:37 | Re : CALCULER SON PAGE RANK GOOGLE

malik7934

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, ++



1 2

Cette discussion est classé dans : page, case, url, rank, mix


Répondre à ce message

Sujets en rapport avec ce message

stopper le chargement de la page [ par fabiin ] Salutje voudrai connaitre l'equvalent de response.enden phpen grospour arrêter l'execution du code@+Fabs12W url précédente [ par eax ] juste une petite question: est-il possible à partir d'une page php de connaitre l'url de la page précédente qui a envoyé le visiteur ici? (sur le meme recuperer l'url de la page ou je me trouve [ par Alexnancy ] salut,comment puis-je recuperer l'url de la page ou je me trouve ??j'ai essaye $HTTP_REFERER, mais ca recupere l'url de la page ou je viens, c pas pra coment incrementer 1 $variable dans une url ??? [ par bencha ] Bon voila :- apres un clic sur le lien "page suivante" - je voudrais incrementer une variable "$id"- et inversement sur le lien "page précédente".Alor derniere page [ par mathieumg ] Comment fait-on pour aller chercher la valeur de la derniere page visitée ???Merci beaucoupMathieu M-G http://www.maxicom.ca.tc Crypté ou coder une url. [ par bricethenetman ] Slt a tous, j'utilise actuellement les pseudo-frames pour organiser mon site mais url sont donc du type : mondomaine/index.php?rubrique=1&page=1. J'ai simplement appeler une page ... [ par michelvernet2 ] bonjour,comment je fais pour appeler une page suite à une fonction IF:if ..... aller à l'url pepe.phpelse... aller à l'url meme.phpMERCI Recuperation de données d'une URL [ par twiems ] TwiemsJe souhaite vivement une solution pour me permettre de récupérer des données d'une page que je met dans un lien et ensuite utiliser ces données pseudo frame [ par DocteurVB ] je voudrais savoir comment on fait pour passer des paramètres d'une pages à l'autre via l'URLle pb :je voudrais faire un site avec des pseudo framedan


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.