begin process at 2012 02 14 09:15:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > GOOGLE® PAGERANK® & CHECKSUM ALGORITHM

GOOGLE® PAGERANK® & CHECKSUM ALGORITHM


 Information sur la source

Note :
8,25 / 10 - par 4 personnes
8,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :pagerank, google, backlinks, checksum, pr Niveau :Initié Date de création :09/12/2006 Date de mise à jour :25/08/2007 14:50:59 Vu / téléchargé :19 169 / 275

Auteur : FloBaoti

Ecrire un message privé
Site perso
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

Ce script permet de récupérer directement sur les serveurs Google®, l'indice PageRank® d'une URL.

* Pour l'utiliser:

// inclure le code
$Google = new GooglePR();
$PageRank = $Google->PageRank('http://www.generatix.fr/');

// en spécifiant un datacenter Google 64.233.167.107:
$PageRank = $Google->PageRank('http://www.generatix.fr/', '64.233.167.107');

Source

  • <?php
  • /*
  • Google® PageRank® PHP Script & Google® PageRank® Checksum Algorithm
  • Remanié par: FloBaoti [ www.generatix.fr ]
  • Auteur original: http://pagerank.gamesaga.net/
  • Compatible PHP4 & PHP5 // support X86_64 CPU
  • Ce script permet de récupérer directement sur les serveurs Google,
  • l'indice PageRank d'une URL (cf http://www.webrankinfo.com/google/pagerank/index.php).
  • */
  • class GooglePR
  • {
  • /*
  • * convert a string to a 32-bit integer
  • */
  • function StrToNum($Str, $Check, $Magic)
  • {
  • $Int32Unit = 4294967296; // 2^32
  • $length = strlen($Str);
  • for ($i = 0; $i < $length; $i++)
  • {
  • $Check *= $Magic;
  • //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
  • // the result of converting to integer is undefined
  • // refer to http://www.php.net/manual/en/language.types.integer.php
  • if ($Check >= $Int32Unit)
  • {
  • $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
  • //if the check less than -2^31
  • $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
  • }
  • $Check += ord($Str{$i});
  • }
  • return $Check;
  • }
  • /*
  • * Genearate a hash for a url
  • */
  • function HashURL($String)
  • {
  • $Check1 = $this->StrToNum($String, 0x1505, 0x21);
  • $Check2 = $this->StrToNum($String, 0, 0x1003F);
  • $Check1 >>= 2;
  • $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
  • $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
  • $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
  • $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
  • $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
  • return ($T1 | $T2);
  • }
  • /*
  • * genearate a checksum for the hash string
  • */
  • function CheckHash($Hashnum)
  • {
  • $CheckByte = 0;
  • $Flag = 0;
  • $HashStr = sprintf('%u', $Hashnum) ;
  • $length = strlen($HashStr);
  • for ($i = $length - 1; $i >= 0; $i --)
  • {
  • $Re = $HashStr{$i};
  • if (1 === ($Flag % 2))
  • {
  • $Re += $Re;
  • $Re = (int)($Re / 10) + ($Re % 10);
  • }
  • $CheckByte += $Re;
  • $Flag ++;
  • }
  • $CheckByte %= 10;
  • if (0 !== $CheckByte)
  • {
  • $CheckByte = 10 - $CheckByte;
  • if (1 === ($Flag % 2) )
  • {
  • if (1 === ($CheckByte % 2))
  • {
  • $CheckByte += 9;
  • }
  • $CheckByte >>= 1;
  • }
  • }
  • return '7'.$CheckByte.$HashStr;
  • }
  • function PageRank($url, $dcgg = 'www.google.com')
  • {
  • $file = file('http://'.$dcgg.'/search?client=navclient-auto&ch='.$this->CheckHash($this->HashURL($url)).'&ie=UTF-8&oe=UTF-8&features=Rank&q=info:'.urlencode($url));
  • $file = implode("", $file);
  • return substr($file,strrpos($file, ":")+1);
  • }
  • }
  • ?>
<?php
/*
Google® PageRank® PHP Script & Google® PageRank® Checksum Algorithm
Remanié par: FloBaoti [ www.generatix.fr ]

Auteur original: http://pagerank.gamesaga.net/

Compatible PHP4 & PHP5 // support X86_64 CPU

Ce script permet de récupérer directement sur les serveurs Google,
l'indice PageRank d'une URL (cf http://www.webrankinfo.com/google/pagerank/index.php).
*/

class GooglePR
{
	/*
	 * convert a string to a 32-bit integer
	 */
	function StrToNum($Str, $Check, $Magic)
	{
	    $Int32Unit = 4294967296;  // 2^32
		
	    $length = strlen($Str);
	    for ($i = 0; $i < $length; $i++)
		{
	        $Check *= $Magic; 	
	        //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), 
	        //  the result of converting to integer is undefined
	        //  refer to http://www.php.net/manual/en/language.types.integer.php
	        if ($Check >= $Int32Unit)
			{
	            $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
	            //if the check less than -2^31
	            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
	        }
	        $Check += ord($Str{$i}); 
	    }
	    return $Check;
	}
	
	/* 
	 * Genearate a hash for a url
	 */
	function HashURL($String)
	{
	    $Check1 = $this->StrToNum($String, 0x1505, 0x21);
	    $Check2 = $this->StrToNum($String, 0, 0x1003F);
		
	    $Check1 >>= 2; 	
	    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
	    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
	    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);	
		
	    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
	    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
		
	    return ($T1 | $T2);
	}

	/* 
	 * genearate a checksum for the hash string
	 */
	function CheckHash($Hashnum)
	{
	    $CheckByte = 0;
	    $Flag = 0;
		
	    $HashStr = sprintf('%u', $Hashnum) ;
	    $length = strlen($HashStr);
		
	    for ($i = $length - 1;  $i >= 0;  $i --)
		{
	        $Re = $HashStr{$i};
	        if (1 === ($Flag % 2))
			{              
	            $Re += $Re;     
	            $Re = (int)($Re / 10) + ($Re % 10);
	        }
	        $CheckByte += $Re;
	        $Flag ++;	
	    }
		
	    $CheckByte %= 10;
	    if (0 !== $CheckByte)
		{
	        $CheckByte = 10 - $CheckByte;
	        if (1 === ($Flag % 2) )
			{
	            if (1 === ($CheckByte % 2))
				{
	                $CheckByte += 9;
	            }
	            $CheckByte >>= 1;
	        }
	    }
		
	    return '7'.$CheckByte.$HashStr;
	}

	function PageRank($url, $dcgg = 'www.google.com')
	{
		$file = file('http://'.$dcgg.'/search?client=navclient-auto&ch='.$this->CheckHash($this->HashURL($url)).'&ie=UTF-8&oe=UTF-8&features=Rank&q=info:'.urlencode($url));
		$file = implode("", $file);
		return substr($file,strrpos($file, ":")+1);
	}
}
?>

 Conclusion

Je mettrais à jour ici si nécessaire.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 décembre 2006 15:06:06 :
J'ai juste rajouter comment l'utiliser ;-)
09 décembre 2006 15:09:19 :
Quelques petits trucs ...
09 décembre 2006 15:20:10 :
Petits trucs ...
09 décembre 2006 17:55:54 :
Petite note pour rendre le script compatible avec PHP4.
09 décembre 2006 21:31:41 :
Vous pouvez maintenant spécifier le serveur (datacenter) Google à interroger dans les fonctions PageRank et BackLinks ;-) Par défaut: www.google.com
11 décembre 2006 10:08:17 :
Compatible PHP4
25 août 2007 14:50:59 :
Grosse mise à jour, basée sur un script existant. Fonctionne sur quasiment tous les serveurs.

 Sources de la même categorie

Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj
Source avec Zip MYGGL GOOGLE API CLASS FOR BEGINERZ par lezj
CLASSE WIKILOC par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SCRIPT D'ÉCHANGE DE LIENS EN DUR À VALIDATION AUTOMATIQUE V6... par bg62
Source avec Zip GDATA CLASS par darkis
Source avec Zip TRADUCTION DE FICHIERS DE LANGUE AVEC GOOGLE GTRANSLATE par madislak
Source avec une capture AFFICHAGE RESULTATS RECHERCHE TYPE GOOGLE par mdc888fr
DERNIÈRES NOUVELLES DE LA GOOGLE HACKING DATABASE (GHDB) par pifol

Commentaires et avis

Commentaire de LaurentKOogar le 11/12/2006 06:01:24

1° ca s'apel du spam indirect
2° Google a mis des flux XML sur des serveurs spéciaux aux services des webmasters.... pour éviter ces requêtes.
3° Combien y-til de serveur avec PHP5 en production en France => trés peu encore!!! c'est une maladie les classes chez vous ??? faite du Ruby dans ce cas ! Et vive le PHP facile car il va le redevenir pour se mettre à la portée d'un public plus large. Voir la beta de PHP6;)

Nix, soit kool ne supp pas mon mess

Commentaire de iow4 le 11/12/2006 06:46:16

>>>> 2° Google a mis des flux XML sur des serveurs spéciaux aux services des webmasters.... pour éviter ces requêtes


Tu veux parler des APIs Google ?

>>>> 3° Combien y-til de serveur avec PHP5 en production en France => trés peu encore!!!

C'est vrai c'est pour ça que j'ai proposé la convertion en PHP 4 qu'il serait bien de publier

Commentaire de LaurentKOogar le 11/12/2006 07:36:57

>> Tu veux parler des APIs Google ?

Non, c'est plus "chi..." que ca, je ne sais pas si c'est Google qui a demandé, mais déjà chez certain hébergeur comme OVH, tu ne peut plus passer ce genre de requete. De mon coté pour ne pas spammer, je prend toujours les dernieres IP de leur serveurs meme si l'alignement des datas n'est pas toujours à jour. ces serveurs ne sont pas du tout emcombré et il est conseillé de travailler avec pour ce genre de processus. Je descend avec 1 CRON les données en local, j'actualise avec GG en local uniquement pour cette fois ci ne pas mettre dans la "merd.." les hebergeurs et pour terminer j'ai 1 CRON pour remonter les mises à jour sur mes sites.  

Commentaire de malalam le 11/12/2006 09:26:17 administrateur CS

Hello,

si je suis entièrement d'accord avec LaurentKoogar concernant Google et la façon de procéder, je ne le suis pas concernant PHP5. Dis-moi plutôt combien de serveurs n'acceptent pas PHP5 aujourd'hui : très peu...et ce que tu sembles appeler "simplification", je l'appelle plutôt "structuration"; PHP5 propose un code bien plus propre, clair, et puissant que ne le propose PHP4.
Et PHP6 ne va rien changer à ceci, je ne vois pas de quoi tu parles concernant la beta de PHP6 : elle n'enlève rien à la POO PHP5, puisqu'il s'agit ici d'un code orienté objet.
Les classes permettent de bien mieux strucurer une application web. Alors quand on a 1 site personnel, ok, on peut s'en passer. Mais PHP ne se limite plus aux sites personnels...il permet de développer des applications web complexes qui ne peuvent pas se passer d'un modèle parfaitement structuré et orienté objet. Et dans ce cadre, proposer des classes plutôt que des codes fonctionnels nettement plus difficiles à placer dans une application structurée...je trouve ça très bien.

Commentaire de FloBaoti le 11/12/2006 10:06:56

Hey les gars faudra se calmer un peu là. Google est selon moi assez grand pour voir ce qui est du spam et ce qui n'en est pas. S'ils ne voulaient plus proposer cette méthode, ça fait un moment qu'ils auraient supprimé la fonctionnalité. De plus, si vous avez une meilleure solution pour faire ça, qu'est-ce qui vous empêche de la publier ici même ? Ce code est le seul proposant de faire ça.
Puisque certains ne connaissent pas PHP5, j'enlève les "private" et machins pour que ça passe en PHP4 ...

Commentaire de kankrelune le 11/12/2006 17:35:01

"Et vive le PHP facile car il va le redevenir pour se mettre à la portée d'un public plus large. Voir la beta de PHP6"

LOoOl... on a pas du voir les même compte rendu des conférence des dev de php... php 6 ne sera pas plus facile il sera moins permissif ce qui est très différent et aurait plutot tendance à aller dans le sens contraire... y en a qui vont pleurer avec leur vieille habitudes... .. .

@ tchaOo°

Commentaire de imaneflash le 12/12/2006 19:05:12

merci pour la doc, mais $url ça réfère à quoi

Commentaire de FloBaoti le 13/12/2006 08:46:14

$url c'est l'url dont tu souhaite connaitre le PageRank ou le nombre de BL (sans les http://, ce n'est pas nécessaire.)

Commentaire de malalam le 13/12/2006 09:13:39 administrateur CS

N'empêche, maintenant, ton appli ne fonctionne plus sur un serveur php5 configuré de manière stricte ;-)

Commentaire de FloBaoti le 13/12/2006 09:18:04

On va partir de l'hypothèse que les personnes qui utilisent un serveur PHP5 configuré de manière stricte savent ce qu'il faut rajouter ;-)

Commentaire de malalam le 13/12/2006 09:31:25 administrateur CS

1 point pour toi!

Commentaire de foliop le 15/01/2007 18:25:19

Il faudrait rajouter quoi ?

Commentaire de FloBaoti le 15/01/2007 18:33:15

Ce que certains m'ont fait enlevé, plus certainement des choses que je ne sais pas ...

Commentaire de foliop le 15/01/2007 19:45:15

POurrais tu rajouter ta version PHP5 stp ?

Commentaire de FloBaoti le 15/01/2007 20:02:14

Ben celle postée fonctionne avec PHP5!
J'avais rajouté des attributs public/private/protected sur les fonctions, c'est pas essentiel.

Commentaire de foliop le 15/01/2007 20:11:51

elle ne fonctionne pas chez moi

Commentaire de FloBaoti le 15/01/2007 20:20:06

Ca marche toujours chez moi, tu as bien la fonction file() activée ?

Commentaire de kankrelune le 15/01/2007 20:22:53

"ça marche pas" ne veut rien dire... tu as des messages d'erreur ?

met

error_reporting(E_ALL);

dans le script et dis nous si tu as des messages d'erreur... .. .

@ tchaOo°

Commentaire de foliop le 15/01/2007 20:27:26

Aucune erreur mais la page reste blanche en faisant un :
// Sur serveur GG 64.233.167.107:
$PageRank = $Google->PageRank('www.generatix.fr', '64.233.167.107');
echo $PageRank;

Commentaire de FloBaoti le 15/01/2007 20:31:31

Ba faut instancier la classe avant !

$Google = new GooglePR();

Commentaire de foliop le 15/01/2007 20:39:12

.... deja fait merci

// include le code
$Google = new GooglePR();
$PageRank = $Google->PageRank('www.free.fr');
$BackLinks = $Google->BackLinks('www.free.fr');

// Sur serveur GG 64.233.167.107:
$PageRank = $Google->PageRank('www.generatix.fr');
echo $PageRank;

Commentaire de vbguigui le 07/03/2007 21:00:18

J'ai découvert un truc... J'ai un serveur PHP sur lequel ca fonctionne, et voici le checksum: 6-1884983888

J'ai placé le même script sur un autre serveur (PHP5, lui) et la ca me fait: 6-1000188052

Le checksum n'est pas le même donc il y a un probleme au niveau du calcul du Checksum... quelqu'un peut aider ?

Commentaire de FloBaoti le 07/03/2007 21:31:15

vbguigui: tu calcules bien le checksum de la même page ? (un seul caractère différent peut tout changer)
Et le PageRank s'affiche-t-il dans les 2 cas ?

Commentaire de mitus77 le 20/04/2007 16:58:30

Bonjour,

Je confirme les dire de vbguigui en fonction de la configuration du serveur on obtiens pas les même checksum.

Lorsque j'effectue un test en local sur ma machine de dev avec XAMPP comme solution lamp tout fonctionne de manière impécable par contre dés que je passe en production sur mes serveurs a chaque fois j'obtiens un checksum erroné mais qui reste le même mais en erreur.

Par ailleur moi j'utilisais un autre scripts de calcul qui présentais les même problèmes J'ai pu localisé a peu préts à partir de qu'elle moment ça pose problème.

Le problème se situe au niveau de l'opérateur XOR pour la translation du binaire. Et de plus le problème apparait des que le nombre décimal a calculé est relativement élevé par contre si il est petit ca marche bien sur tous les serveurs

Commentaire de FloBaoti le 25/08/2007 14:52:41

Voilà une grosse mise à jour du code, qui fonctionne sur quasiment tous les serveurs.

N'hésitez pas à laisser vos feedbacks!

Commentaire de yazerty55 le 09/09/2007 19:19:09

Merci pour la mise à jour ! Plus moyen d'avoir les backlinks par contre maintenant :-?

Commentaire de FloBaoti le 09/09/2007 19:23:46

Je n'ai pas trouvé comment avoir les backlinks avec cette mise à jour. Si le code précédent fonctionnait sur vos serveurs, gardez-le.

Commentaire de yazerty55 le 09/09/2007 19:32:47

Merci pour ta réponse très rapide :) !

En fait je viens de découvrir ton script (avant-hier) et je n'utilisais pas de script pour avoir le PR / Backlinks avant.

Si l'ancien script est celui proposé par iow4 le 09/12/2006 17:52:09 alors il ne marche pas chez moi (mutualisé 1&1) :(. Tant pis, le PR c'est déjà très bien. Et les BL renvoyés par Google ne sont pas complet de toute façon (il ne les donne pas tous - ce quui ne veut pas dire qu'il ne les considère pas tous !).

Commentaire de jo_949 le 20/06/2008 16:44:20

Bjr,

Je suis chez ovh et voici l'erreur que j'ai :

Warning: file(http://www.google.com/search?client=navclient-auto&ch=733799013611&ie=UTF-8&oe=UTF-8&features=Rank&q=info:http%3A%2F%2Fwww.generatix.fr%2F) [function.file]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /home.2/mogwaite/www/referencement/meta/pagerank.php on line 102

Warning: implode() [function.implode]: Bad arguments. in /home.2/mogwaite/www/referencement/meta/pagerank.php on line 103

Commentaire de publespace le 25/08/2008 18:08:41

SUPER

MERCI POUR CE BOUT DE CODE, FONCTIONNE IMPECABLE

Commentaire de bg62 le 23/12/2008 11:47:51

pour une liste des ip des datas centers:
http://www.unesourisetmoi.info/referencer/articles.php?pg=art242
et il y en a encore ...
mais il ne sont pas aussi réactifs ou performants ...
voir le test :
http://www.unesourisetmoi.info/pages/multiple_PR_datas_centers.php
si question ou problèmes contact via le site (avec grand plaisir!)
@+ b g

Commentaire de rottweiler le 03/06/2011 18:46:15

excellent code, bien utile !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ifrance.com pr les nuls [ par AMP ] j'ai crée un ptit site genre page^perso où j'ai créer un lien vers un agenda personnalisé sous ifrance.com...mais le service ifrance n'a pas mis à la mail pr des Pros !!! [ par ckoo ] bonjour,j'ai un script qui envoie des mails au format HTML,cependant j'ai fait un "img src....." pr mettre des images dans le mail format HTML mais à Vérif du DELETE [ par nicolas66 ] Bonjour à tous,je voudrais savoir comen il faut faire pour savoir si une requete delete s'est bien déroulée, pcq là jvoi pas ! Par exemple pr une requ Rch script pr modifier contenu en ligne [ par oudjat ] bonjour, merci pour le site avec plein de bons scripts.Je suis à la recherche d'un debut de script pour inserer/modifier/supprimer du texte en provena sso (single sign on) pr identifaication avec base mysql [ par TedHi_tech ] je voudrais savoir comment faire pr ke le user d1 site intranet ne se connecte q1 fois pr toutes ses applications comme le fai le sso merci d'avance Aide pr la récup de données [ par super_toinou ] Bonjour, je commence le php et y a une erreur tte bete que j arrive pas a comprendre: sur tous les tutoriaux on dis qu on peut recup direct les varia Mail et anti-spam? [ par Varod ] Bonjour tout le monde,Dans une application de sondage en ligne, j'utilises la fonction mail pr envoyer un lien vers le site ou est hebergé mon applica Url bizarre ou...? [ par MAsterC ] Salut à tous!J'aimerai avoir une explication sur le URL de Google...http://www.google.ca/search?q=googlePourquoi, le fichier "search" n php et google ... ? [ par michelvernet2 ] bonjour,pour éviter un PB de session avec aol, je force la session dans l'adresse, voir : www.nouveauxobjets.com . Pour ceux qui ont la google barre, referencement google et PHP [ par michelvernet2 ] bonjour,pour éviter un PB de session avec aol, je force la session dans l'adresse, voir : www.nouveauxobjets.com . Pour ceux qui ont la google barre,


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales