View Single Post
Old 06-15-2006, 09:12 AM   #270
Gagget
Junior Member
Gagget began at the beginning.
 
Posts: 2
Karma: 10
Join Date: Apr 2006
Sorry, I have completly forgotten to post my code here. Itīs tested by some people now and it works very fine.
To make it easier to update existing scripts, i commented the changes.
PHP Code:
/* 
        Written and contributed by 
        Alex Stapleton, 
        Andy Doctorow, 
        Tarakan, 
        Bill Zeller, 
        Vijay "Cyberax" Bhatter 
        traB 
    This code is released into the public domain 
*/ 
define('GOOGLE_MAGIC'0x00000000E6359A60); // CHANGED (64Bit)

//unsigned shift right 
function zeroFill($a$b
{   
        
$z 0x0000000080000000;  // CHANGED (64Bit)
        
$a $a 0x00000000FFFFFFFF;  // ADDED (64Bit)
        
        
if ($z $a
        {     
            
$a = ($a>>1); 
            
$a &= (~$z); 
            
$a |= 0x0000000040000000;  // CHANGED (64Bit)
            
$a = ($a>>($b-1)); 
        } 
        else 
        {     
$a = ($a>>$b);    
        } 
        return 
$a

  
  
function 
mix($a,$b,$c) { 
    
  
$a $a 0x00000000FFFFFFFF;  // ADDED (64Bit)
  
$b $b 0x00000000FFFFFFFF;  // ADDED (64Bit)
  
$c $c 0x00000000FFFFFFFF;  // ADDED (64Bit)
  
  
$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 0x000000009E3779B9;  // CHANGED (64Bit)
    
    
$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


// converts an array of 32 bit integers into an array with 8 bit values. Equivalent to (BYTE *)arr32 
function c32to8bit($arr32) { 
    for(
$i=0;$i<count($arr32);$i++) { 
        for (
$bitOrder=$i*4;$bitOrder<=$i*4+3;$bitOrder++) { 
            
$arr8[$bitOrder]=$arr32[$i]&255
            
$arr32[$i]=zeroFill($arr32[$i], 8); 
        }     
    } 
    return 
$arr8



function 
GoogleCHNew($ch){
    
$ch=sprintf("%u"$ch); 
    
$ch = ((($ch/7) << 2) | (((int)fmod($ch,13))&7)); 
    
$prbuf = array(); 
    
$prbuf[0] = $ch
    for(
$i 1$i 20$i++) { 
      
$prbuf[$i] = $prbuf[$i-1]-9
    } 
    
$ch GoogleCH(c32to8bit($prbuf), 80); 
    return 
sprintf("%u"$ch);
}


function 
get_page_rank($url){
    
$url preg_replace('/\?.*$/','?',$url);
    
$reqgr "info:".$url;
    
$reqgre "info:".urlencode($url);
    
$gch GoogleCH(strord($reqgr));
    
    
$gch "6".GoogleCHNew($gch);
    

  
    
$patern '/^http:/';
    
$patern2 '/^http:\/\/.*google\..*\/(search|images|groups|news).*/';
    
$patern3 '/^http:\/\/localhost.*/';
    
$patern4 '/^http:\/\/(127\.|10\.|172\.16|192\.168).*/'//local ip
    
if(!preg_match($patern$url) || preg_match($patern2$url) ||
       
preg_match($patern3$url) || preg_match($patern4$url)){
           return -
1;
    }else{
        
// BEGIN CHANGES (fsockopen to request PR) 
        
        
$fsock fsockopen('toolbarqueries.google.com'80$errno$errstr);
        if ( !
$fsock ){  
            return -
1;
        }
        
$base_get "/search?client=navclient-auto&ch=".$gch."&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=".$reqgre;
        
fputs($fsock"GET $base_get HTTP/1.1\r\n");
        
fputs($fsock"HOST: toolbarqueries.google.com\r\n");
        
fputs($fsock"User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n");
        
fputs($fsock"Connection: close\r\n\r\n");
        while(!
feof($fsock)){ 
            
$res['content'] .= fread($fsock1024);
        }
        
fclose($fsock);

        
// END CHANGES (fsockopen to request PR)
    
        
if(preg_match('/Rank_.*?:.*?:(\d+)/i'$res['content'], $m)){    
            return 
$m[1];
        }else{    
            return -
1;
        }      
    }

?> 
Gagget is offline   Reply With Quote