Zur Navigation

Pagerank in Verzeichnis einbauen

1 Christian

Salve,

Suchmaschine oder Script? Ich nehm mal Suchmaschine . .

Ich suche eine Möglichkeit, im webmaster directory (web-i-nfo.de) für jeden Eintrag den PR anzeigen zu lassen. Allerdings ist in den von mir genutzten Archiven kein Script vorhanden oder ich habe es nicht gefunden.

Habt Ihr einen Tipp?



En Gruess us dr Schwiz!

28.04.2006 09:03

3 Christian

Ciao

Das ist nicht was ich suche. ich möchte zu jedem Eintrag, der im Verzeichnis ist, automatisch den PR ausgeben lassen. Ich habe parktisch gleichzeitig mit der Nachricht über Deine Antwort ein solches Script gefunden, bin aber nicht ganz sicher wie einbauen. Evtl. komm ich noch einmal auf Euch zu . . ;-)


Danke einewäg für e Tipp!

En Gruess us dr Schwiz!

28.04.2006 10:45

4 Gustafsson

moin christian,

vielleicht teilst du uns mit was du gefunden hast und ob es funktioniert, es würde mich auch interessieren ;-))

gruß uwe

28.04.2006 13:09 | geändert: 28.04.2006 13:09

5 Christian

<?php

/*

    This code is released unto 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);
    //echo $z;

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

    //echo $mix[0];

    /*-------------------------------------------- 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;

}
// http://www.example.com/ - Checksum: 6540747202

$url = $_GET['url'];
//print("url:\t{$_GET['url']}\n");

$ch = "6" . GoogleCH(strord("info:" . $url));


$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET /search?client=navclient-auto&ch=". $ch .  "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n";
   $out .= "Host: www.google.com\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);

   //$pagerank = substr(fgets($fp, 128), 4);
   //echo $pagerank;
   while (!feof($fp)) {
        $data = fgets($fp, 128);
        $pos = strpos($data, "Rank_");
        if($pos === false){} else{
                $pagerank = substr($data, $pos + 9);
                echo $pagerank;
        }
   }
   fclose($fp);
}
//echo "ch: 6".$ch;

?>

Das ist der Code für die "Funktion", aber wie ich automatisch die URL des entsprechenden Eintrages reinbekomme . . . bin ich noch am suchen.

En Gruess us dr Schwiz!

28.04.2006 13:13

6 C)-(iLL@

Oh, ja - das Skript von gaijin (www.gaijin.at) habe ich auch - meins sieht etwas anders aus, ich habe es um die Funktion 'showpagerank' ergänzt.

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;
}

define('GOOGLE_MAGIC',0xE6359A60);

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){
    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=Mix($a,$b,$c);
  return $mix[2];
}

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


function showPageRank($target) { 
  if($target!=""){
    $server="www.google.com";
   /* Alternative Server
   $server="www.google.com";
   $server="toolbarqueries.google.com";
   $server="64.233.161.99";
   $server="64.233.161.104";
   $server="66.102.7.99";
   $server="66.102.7.104";
   $server="216.239.59.99";
   $server="216.239.59.104";
   $server="216.239.37.104";
   $server="216.239.39.99";
   $server="216.239.39.104";
   $server="66.102.11.99";
   $server="66.102.11.104";
   $server="216.239.57.99";
   $server="216.239.57.104";
   $server="66.102.9.99";
   $server="66.102.9.104";
   $server="216.239.53.99";
   $server="216.239.53.104";
  */
  
  $url="info:"."$target";
  $ch=trim(str_replace("-","",sprintf("6%u\n",GoogleCH(StringOrder($url)))));
  $res="http://$server/search?client=navclient-auto&ch=$ch&features=Rank&q=$url";
  $data=@fopen("$res",r);
  if($data){
     while($line = fgets($data,1024)) {
      if(substr($line,0,7)=="Rank_1:"){$rankline = $line;}
     }
     fclose($data);
     $pagerank = trim(substr($rankline,9,2));
     if($pagerank==""){$pagerank="0";}
		 echo "<table class=\"gpr\">";
		 for($i=1;$i<=$pagerank;$i++){$out.='<td class="high">'.$i.'</td>';}
		 for($i=$pagerank+1;$i<=10;$i++){$out.="<td>$i</td>";}
		 echo $out."</table>"
	 } else{
     echo "<strong>Error!</strong>";
   }
 }
}

Das wird aber teuflisch langsam, wenn man es für viele Seiten hintereinander macht.

28.04.2006 13:18

7 Christian

und was empfiehlst Du als Experte? Andere brauchen diese Variante ja auch, also muss es eine Möglichkeit geben.

En Gruess us dr Schwiz!

28.04.2006 14:05

8 Gustafsson

coole sache,
kann man das auch in eine html seite einbauen, also direkt hinter einen link ? dann würd ich das gerne hier www.im-media.de mal ausprobieren

gruß uwe

28.04.2006 18:33

9 Armin (Gast)

Ich bin nicht sicher, die Meinungen gehen hierbei auseinander, aber beachtet bitte das das automatische Auslesen des Pageranks nach oben genanntem Script seitens Google nicht erlaubt sein soll!
Ich könnte mir schon vorstellen das google das merkt wenn permanent von einem Server diese Anfragen kommen. Es ist ja auch verboten die google Suchmaschine als slave zu mißbrauchen (schließlich wollen die damit Geld verdienen).

Zudem ist fraglich wie lange das noch funktioniert, div. andere Methoden liefern ja schon nur noch einen 403!

Das wird aber teuflisch langsam, wenn man es für viele Seiten hintereinander macht.
Das bei jedem Aufruf aufs neue zu machen wäre ziemlich daneben, da sollte man das Ergebnis schon cachen!

09.06.2006 09:39

10 Bigi2

Hallo,

ich habe auch das Tool bei mir laufen. Nun habe ich meinen Server von PHP4 auf PHP5 umgestellt und nun geht das PR Tool nicht mehr.

Soweit ich das Problem eingekreist habe liegt es an den Datentypen oder den Operator ^= in der Funktion mix.

Hier wird ja die URL Prüfsumme berechnet und das klappt nicht mehr richtig. Die Funktion mix liefert unter PHP5 andere Ergebnisse zurück als unter PHP4.

Hat jemand hierfür schon ein Lösung oder Idee?

Grüße Bigi

31.10.2006 16:42