SitePoint Sponsor

User Tag List

Results 1 to 6 of 6

Thread: Google PR API?

  1. #1
    Level 8 Chinese guy Archbob's Avatar
    Join Date
    Sep 2001
    Location
    Somewhere in this vast universe
    Posts
    3,741
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Google PR API?

    Hi, how do pages like this:
    http://www.mypagerank.net/googlecheck.html

    get data from google, does google have an API that they give developers?

    I've been wondering about this and those "submit your site to 100 search engines" things.

  2. #2
    Follow Me On Twitter: @djg gold trophysilver trophybronze trophy Dan Grossman's Avatar
    Join Date
    Aug 2000
    Location
    Philadephia, PA
    Posts
    20,580
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    AFAIK, there's no API for it, and sites like this probably aren't allowed to get the PR. Google seems to have stopped caring that they impersonate the Google Toolbar and send PR requests to the toolbar server (early on they would keep changing the checksum algorithm to stop these sites).

    Here's the current algorithm to compute the checksum and request the PR:
    PHP Code:
    define('GOOGLE_MAGIC'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 
    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 
    $c+=($url[$k+8]<<8);
              
    /* the first byte of c is reserved for the length */
            
    case $b+=($url[$k+7]<<24);
            case 
    $b+=($url[$k+6]<<16);
            case 
    $b+=($url[$k+5]<<8);
            case 
    $b+=($url[$k+4]);
            case 
    $a+=($url[$k+3]<<24);
            case 
    $a+=($url[$k+2]<<16);
            case 
    $a+=($url[$k+1]<<8);
            case 
    $a+=($url[$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 
    getrank($url) {
        
    $url 'info:'.$url;
        
    $ch GoogleCH(strord($url));
        
    $file "http://www.google.com/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url";
        
    $data file($file);
        
    $rankarray explode (':'$data[2]);
        
    $rank $rankarray[2];
        return 
    $rank;

    I use it for my PageRank Button tool.

  3. #3
    Level 8 Chinese guy Archbob's Avatar
    Join Date
    Sep 2001
    Location
    Somewhere in this vast universe
    Posts
    3,741
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks.

    Do they draw the separate PR bar images themselves or does that function automaticaly return it?


    I'm still wondering about those "submit to many search engine" form things.

  4. #4
    runat="server" Golgotha's Avatar
    Join Date
    Nov 2001
    Location
    Colorado
    Posts
    2,085
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I use that same script as Dan, but I do use a proxy domain just incase Google gets pissed

  5. #5
    Follow Me On Twitter: @djg gold trophysilver trophybronze trophy Dan Grossman's Avatar
    Join Date
    Aug 2000
    Location
    Philadephia, PA
    Posts
    20,580
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Archbob View Post
    Do they draw the separate PR bar images themselves or does that function automaticaly return it?
    You just get back a number (0-10), you'd have to do anything beyond that yourself.

  6. #6
    Level 8 Chinese guy Archbob's Avatar
    Join Date
    Sep 2001
    Location
    Somewhere in this vast universe
    Posts
    3,741
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Looks like I'll have to get seperate images then, screen paint is pretty nifty these days.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •