Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PR Prüfsumme

Hier können Sie Ihre Fragen zum Thema Suchmaschinenoptimierung (SEO) / Positionierung stellen
Neues Thema Antworten
Fluidum
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 18.12.2005, 18:09

Beitrag von Fluidum » 09.08.2007, 01:07

Guten Abend,

ich habe lange nicht mehr mein Script zum prüfen des PageRanks benutzt
und nun hab ich das Problem, dass dieses nicht mehr funktioniert.

Sowie es aussieht, hat Google den String bzw. die Prüfsumme geändert -
leider passt die alte Prüfsumme mit den neuen nicht überwein...

Jemand ne Ahnung wo ich eine aktuelle Variante finde?

Eine PN oder so wäre Klasse - Danke!

---
Edit:

Kann es an der PHP Version liegen, dass diese eine andere Prüfsumme bilder?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


To-Bi-As
PostRank 6
PostRank 6
Beiträge: 443
Registriert: 08.10.2006, 02:20

Beitrag von To-Bi-As » 09.08.2007, 02:16

HI,

also das hier funktioniert bei mir ohne Probleme:

Code: Alles auswählen

<?
define &#40;'GOOGLE_MAGIC', 0xE6359A60&#41;;

   //This class should work on most servers
   function zeroFill&#40;$a, $b&#41;
   &#123;
      $z = hexdec &#40;80000000&#41;;
      if &#40;$z & $a&#41;
      &#123;
         $a = &#40;$a>>1&#41;;
         $a &= &#40;~$z&#41;;
         $a |= 0x40000000;
         $a = &#40;$a>>&#40;$b-1&#41;&#41;;
       &#125;
       else
       &#123;
         $a = &#40;$a>>$b&#41;;
       &#125;

       return $a;
    &#125;

   function xor32&#40;$a, $b&#41;
   &#123;
      return int32&#40;$a&#41; ^ int32&#40;$b&#41;;
   &#125;

   //return least significant 32 bits
   //works by telling unserialize to create an integer even though we provide a double value
   function int32&#40;$x&#41;
   &#123;
      return unserialize &#40;"i&#58;$x;"&#41;;
      //return intval&#40;$x&#41;; // This line doesn't work on all servers.
   &#125;

   function mix&#40;$a,$b,$c&#41;
   &#123;
      $a -= $b; $a -= $c; $a = xor32&#40;$a,zeroFill&#40;$c,13&#41;&#41;;
      $b -= $c; $b -= $a; $b = xor32&#40;$b,$a<<8&#41;;
      $c -= $a; $c -= $b; $c = xor32&#40;$c,zeroFill&#40;$b,13&#41;&#41;;
      $a -= $b; $a -= $c; $a = xor32&#40;$a,zeroFill&#40;$c,12&#41;&#41;;
      $b -= $c; $b -= $a; $b = xor32&#40;$b,$a<<16&#41;;
      $c -= $a; $c -= $b; $c = xor32&#40;$c,zeroFill&#40;$b,5&#41;&#41;;
      $a -= $b; $a -= $c; $a = xor32&#40;$a,zeroFill&#40;$c,3&#41;&#41;;
      $b -= $c; $b -= $a; $b = xor32&#40;$b,$a<<10&#41;;
      $c -= $a; $c -= $b; $c = xor32&#40;$c,zeroFill&#40;$b,15&#41;&#41;;

      return array&#40;$a,$b,$c&#41;;
   &#125;

   function GoogleCH&#40;$url, $length=null, $init=GOOGLE_MAGIC&#41;
   &#123;
      if &#40;is_null &#40;$length&#41;&#41;
      &#123;
         $length = sizeof &#40;$url&#41;;
      &#125;
      $a = $b = 0x9E3779B9;
      $c = $init;
      $k = 0;
      $len = $length;

      while &#40;$len >= 12&#41;
      &#123;
         $a += &#40;$url&#91;$k+0&#93; +&#40;$url&#91;$k+1&#93;<<8&#41; +&#40;$url&#91;$k+2&#93;<<16&#41; +&#40;$url&#91;$k+3&#93;<<24&#41;&#41;;
         $b += &#40;$url&#91;$k+4&#93; +&#40;$url&#91;$k+5&#93;<<8&#41; +&#40;$url&#91;$k+6&#93;<<16&#41; +&#40;$url&#91;$k+7&#93;<<24&#41;&#41;;
         $c += &#40;$url&#91;$k+8&#93; +&#40;$url&#91;$k+9&#93;<<8&#41; +&#40;$url&#91;$k+10&#93;<<16&#41;+&#40;$url&#91;$k+11&#93;<<24&#41;&#41;;
         $mix = mix&#40;$a,$b,$c&#41;;
         $a = $mix&#91;0&#93;; $b = $mix&#91;1&#93;; $c = $mix&#91;2&#93;;
         $k += 12;
         $len -= 12;
     &#125;
     $c += $length;
     switch &#40;$len&#41;
     &#123;
         case 11&#58; $c+=&#40;$url&#91;$k+10&#93;<<24&#41;;
         case 10&#58; $c+=&#40;$url&#91;$k+9&#93;<<16&#41;;
         case 9 &#58; $c+=&#40;$url&#91;$k+8&#93;<<8&#41;;
         /* the first byte of c is reserved for the length */
         case 8 &#58; $b+=&#40;$url&#91;$k+7&#93;<<24&#41;;
         case 7 &#58; $b+=&#40;$url&#91;$k+6&#93;<<16&#41;;
         case 6 &#58; $b+=&#40;$url&#91;$k+5&#93;<<8&#41;;
         case 5 &#58; $b+=&#40;$url&#91;$k+4&#93;&#41;;
         case 4 &#58; $a+=&#40;$url&#91;$k+3&#93;<<24&#41;;
         case 3 &#58; $a+=&#40;$url&#91;$k+2&#93;<<16&#41;;
         case 2 &#58; $a+=&#40;$url&#91;$k+1&#93;<<8&#41;;
         case 1 &#58; $a+=&#40;$url&#91;$k+0&#93;&#41;;
      &#125;
      $mix = mix&#40;$a,$b,$c&#41;;
      /* report the result */
      return $mix&#91;2&#93;;
   &#125;

   //converts a string into an array of integers containing the numeric value of the char
   function strord&#40;$string&#41;
   &#123;
      for &#40;$i=0; $i < strlen &#40;$string&#41;; $i++&#41;
      &#123;
            $result&#91;$i&#93; = ord &#40;$string&#123;$i&#125;&#41;;
      &#125;
      return $result;
   &#125;

   //returns -1 if no page rank was found
   function get_page_rank&#40;$url&#41;
   &#123;
        $ch = "6".GoogleCH&#40;strord&#40;"info&#58;" . $url&#41;&#41;;

        $pagerank = -1;
        $fp = @ fsockopen &#40;"www.google.com", 80, $errno, $errstr, 10&#41;;
        if &#40;!$fp&#41;
        &#123;
            echo "$errstr &#40;$errno&#41;<br />\n";
        &#125;
        else
        &#123;
            $out  = "GET /search?client=navclient-auto&ch=" . $ch .  "&features=Rank&q=info&#58;" . $url . " HTTP/1.1\r\n" ;
            $out .= "Host&#58; www.google.com\r\n" ;
            $out .= "Connection&#58; Close\r\n\r\n" ;
            @ fwrite &#40;$fp, $out&#41;;

            while &#40;!feof &#40;$fp&#41;&#41;
            &#123;
                $data = @ fgets &#40;$fp, 128&#41;;
                $pos  = strpos &#40;$data, "Rank_"&#41;;

                if &#40;$pos !== false&#41;
                &#123;
                  $pagerank = trim &#40;substr &#40;$data, $pos + 9&#41;&#41;;
                &#125;
            &#125;
            @ fclose &#40;$fp&#41;;
        &#125;
        return $pagerank;
    &#125;
?>
Gruß, Ingo

Fluidum
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 18.12.2005, 18:09

Beitrag von Fluidum » 09.08.2007, 07:37

Hallo Ingo,

das Script habe ich auch bisher immer verwendet - funktioniert irgendwie aber nicht
mehr bei mir!

Welche Form hat bei dir die $url??? $url = 'https://www.xyzdomain.de'; ???

P.S.: Ich denke das es eventuell etwas mit meiner PHP-Version zu tun hat...

myli
PostRank 3
PostRank 3
Beiträge: 81
Registriert: 09.08.2007, 07:45

Beitrag von myli » 09.08.2007, 07:48

Der Grund hierfür kann an deiner Architektur liegen. Wenn du eine 64bit Maschine hast, dann wird's mit dem skript nicht gehen. Zutun hat dies mit Little Endian und Big endian. Das Skript wurde konzeptiert für Little Endian da ein Integer wert nur 32bit anstatt 64bit hat.

Im Netz sollte es für 64bit Systeme mittlweile schon überarbeitete Skripte geben. Soweit ich weiß, gibt es aber auch ein "Hack" mit dem es möglich ist den Integer-Maximalwert auf 32bit zu setzen.

Liebe Grüße

Fluidum
PostRank 5
PostRank 5
Beiträge: 258
Registriert: 18.12.2005, 18:09

Beitrag von Fluidum » 09.08.2007, 13:47

Hi myli,

ist auch ne 64Bit-Maschine - dann muss ich wohl nach einer entsprechenden
Version suchen!

Danke für die Info!

Antworten