Altenide a dit:euh au pif google toolbar ?
j'ai regardé un peu, ça a l'air space quand même. C'est la seule partie à laquelle je n'ai pas touché. Sauf à enlever l'automatisation de la requête, qui n'est plus faite qu'à la demande maintenant.NextGeneration a dit:l'annuaire mydir récupere le pr de chaque site inscrit. donc dans le code source, on doit trouver une function() qui permet cela. Je vais regarder cette semaine, pour trouver le bout qui t'intéresse
j'ai regardé un peu, ça a l'air space quand même. C'est la seule partie à laquelle je n'ai pas touché. Sauf à enlever l'automatisation de la requête, qui n'est plus faite qu'à la demande maintenant.
// Calcul PR
define('GMAG', 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 GCH($adress, $length=null, $init=GMAG) {
if(is_null($length)) {
$length = sizeof($adress);
}
$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;
while($len >= 12) {
$a += ($adress[$k+0] +($adress[$k+1]<<8) +($adress[$k+2]<<16)
+($adress[$k+3]<<24));
$b += ($adress[$k+4] +($adress[$k+5]<<8) +($adress[$k+6]<<16)
+($adress[$k+7]<<24));
$c += ($adress[$k+8] +($adress[$k+9]<<8)
+($adress[$k+10]<<16)+($adress[$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+=($adress[$k+10]<<24);
case 10: $c+=($adress[$k+9]<<16);
case 9 : $c+=($adress[$k+8]<<8);
/* the first byte of c is reserved for the length */
case 8 : $b+=($adress[$k+7]<<24);
case 7 : $b+=($adress[$k+6]<<16);
case 6 : $b+=($adress[$k+5]<<8);
case 5 : $b+=($adress[$k+4]);
case 4 : $a+=($adress[$k+3]<<24);
case 3 : $a+=($adress[$k+2]<<16);
case 2 : $a+=($adress[$k+1]<<8);
case 1 : $a+=($adress[$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;
}
function getPR($_url) {
$adress = 'info:'.$_url;
$ch = GCH(strord($adress));
$adress='info:'.urlencode($_url);
$pr =@file("https://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$adress");
$pr_str = @implode("", $pr);
return substr($pr_str,strrpos($pr_str, ":")+1);
}
Comment peut-on récupérer le PR d'une URL, facilement ?
(Sans passer par les sites spécialisés qui s'offrent un BL à chaque affichage d'un PR).
Code:<?php // powered by anyone //Definie la constante "GOOGLE_MAGIC" define("GOOGLE_MAGIC", 0xE6359A60); 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; } //Cette fonction est utilisée pour le calcul du checksum de Google 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); } // Calcul le checksum de Google pour une URL donnée 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) /* Toute les cases retournent vraie */ { case 11: $c+=($url[$k+10]<<24); case 10: $c+=($url[$k+9]<<16); case 9 : $c+=($url[$k+8]<<8); /* Le premier byte de c est réservé pour la longueur */ 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: rien à additionner */ } $mix = mix($a,$b,$c); return $mix[2]; } // Converti une chaine dans le tableau d'entiers // contenant une valeur numérique de caractères function strord($string) { for($i=0;$i<strlen($string);$i++) { $result[$i] = ord($string{$i}); } return $result; } // Fonction utilisée pour obtenir la valeur du PageRank. function getrank($url, $prefix="info:", $datacenter="www.google.com") { //Si $prefix est "info:", alors la Toolbar pagerank sera retourné. $url = $prefix.$url; //Prend le checksum de Google pour $url utilisant la fonction GoogleCH. $ch = GoogleCH(strord($url)); $file="http://$datacenter/search?client=navclient-auto"; $file.="&ch=6$ch&features=Rank&q=$url"; // si le rank n'existe pas renvoi n/A $oldlevel = error_reporting(0); $data = file($file); error_reporting($oldlevel); if(!$data || preg_match("/(.*)\.(.*)/i", $url)==0) return "N/A"; $rankarray = explode (":", $data[2]); $rank = trim($rankarray[2]); //Renvoie N/A si il n'y a pas de rank. if($rank=="") return "N/A"; return $rank; } // on récupère l'url courante. function url_actuelle() { return $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } $url = url_actuelle(); // Affiche le PageRank echo $url." a pour PR : ".getrank($url); ?>
// on récupère l'url courante.
//function url_actuelle()
//{
// return $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
//}
$url = "http://www.thewindpower.net/";
// Affiche le PageRank
echo $url." a pour PR : ".getrank($url);
// on récupère l'url courante.
//function url_actuelle()
//{
// return $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
//}