Algorithme de calcul du checksum Google a jour ?

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 602
Inscription: 2 Mar 2005

Algorithme de calcul du checksum Google a jour ?

Message le Mer Nov 26, 2008 11:31

Je me trompe peut-être, mais j'ai l'impression que l'ensemble des scripts php que l'on peut trouver sur le net, fournissant le calcul du pagerank n'ont pas le checksum a jour.

A titre d'exemple, pour une même page, le checksum calculé par la toolbarquery est 8a3a6d4e7 alors que celui que me retourne le script est 774097479781.

Ca fonctionne quand le PageRank est supérieur ou égal a 0, mais si le pagerank est nul, ca retourne une erreur 403. Impossible donc de savoir si le script est blacklisté ou si la page n'est pas rankée.

Est-ce que quelqu'un a une idée sur ou trouver cet algo a jour ? et si possible prédéveloppé en PHP ? (je sais, je demande la lune...).

merci a tous !

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Algorithme de calcul du checksum Google a jour ?

Message le Mer Nov 26, 2008 12:28

Kaliiii a écrit:Est-ce que quelqu'un a une idée sur ou trouver cet algo a jour ?

Dans la toolbar ? lol faut analyser son code source...


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 602
Inscription: 2 Mar 2005

Message le Mer Nov 26, 2008 13:44

je m'attendais a cette réponse ^^ :p

personne n'a une autre idée sur un script php a jour ?


fra_arf
WRInaute impliqué
WRInaute impliqué
 
Messages: 508
Inscription: 22 Nov 2005

Message le Mer Nov 26, 2008 15:36

Le checksum peut varier et oui :)
Selon le type de serveur 32 ou 64bits par exemple...

Après voilà une classe qui fonctionne parfaitement.
Je te laisse te débrouiller pour l'adapter à ton utilisation propre car j'ai pas le temps

Code: Tout sélectionner
<?php

class GooglePageRanker
{
    public $googleDomains = Array("toolbarqueries.google.com","www.google.com","toolbarqueries.google.com.tr","www.google.com.tr","toolbarqueries.google.de","www.google.de", "64.233.187.99", "72.14.207.99");
    public $GOOGLE_MAGIC = 0xE6359A60;
    public $PageRank = -1;
    public $cacheExpired = false;
    public $debug = false;
   
    function getPageRank($url, $additionalServerUrl = false)
    {
        $pageRank = 0;
        $url = ((substr(strtolower($url),0,7)!="http://") ? "http://".$url : $url);
        $queryUrl = "http://".$this->googleDomains[mt_rand(0,count($this->googleDomains)-1)];
        $queryUrl .= sprintf("/search?client=navclient-auto&ch=6%s&features=Rank&q=info:%s",
                            $this->googleCh($this->strord("info:".$url)),
                            urlencode($url));

        $httpClient = new HttpClient();
       
        if($additionalServerUrl)
        {
            $httpClient->additionalServerUrl = $additionalServerUrl;
        }
       
        $content = $httpClient->getSiteContent($queryUrl, false);
       
        if($this->debug)
        {
            echo $content;
        }

        if(preg_match("#Rank_1:\d:(\d{1,2})#", $content, $matches))
        {
            $pageRank = $matches[1];
        }

        return $pageRank;

    }

    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 xor32($a, $b)
    {
        return $this->int32($a) ^ $this->int32($b);
    }
   
    function int32($x)
    {
        $z = hexdec(80000000);
        $y = (int) $x;
       
        if($y ==- $z && $x <- $z)
        {
            $y = (int) ((-1) * $x);
            $y = (-1) * $y;
        }
       
        return $y;
    }

    function mix($a,$b,$c)
    {
        $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,13));
        $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<8);
        $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,13));
        $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,12));
        $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<16);
        $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,5));
        $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,3));
        $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<10);
        $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,15));
        return array($a,$b,$c);
    }

    function googleCh($url, $length = null)
    {
        if(is_null($length))
        {
            $length = sizeof($url);
        }
       
        $a = $b = 0x9E3779B9;
        $c = $this->GOOGLE_MAGIC;
        $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 = $this->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 = $this->mix($a,$b,$c);

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

?>


Kaliiii
WRInaute impliqué
WRInaute impliqué
 
Messages: 602
Inscription: 2 Mar 2005

Message le Mer Nov 26, 2008 17:58

merci !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google TrustRank

  • Détection de pages dupliquées
    Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
  • Calcul du taux de backlinks vers pages internes
    Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
  • Calcul de l'indice de cooccurrence
    Cet outil vous permet de calculer l'indice de co-occurrence de 2 ou 3 termes, ainsi que le ratio E/F. L'indice de co-occurrence mesure le relation entre les termes : plus cet indice est élevé, plus les termes sont reliés. Concrètement, plus l'indice est élevé, plus il est fréquent de trouver des documents qui contiennent les différents termes.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité