«

PHP获取网站的PR值代码

时间:2024-1-22 14:24     作者:韩俊     分类: PHP


下面是本人搜集整理的一个利用PHP获取网站的google PR值的代码的方法,特贡献出来分享一下,完整代码如下:

<?php
$url='www.maopiaopiao.com';
define('G_PR_GET_TYPE_FILE', 1);
define('G_PR_GET_TYPE_SOCKET', 2);

echo getGooglePR($url);//获取http://www.maopiaopiao.com的PR值

function getGooglePR($_url,$gettype=G_PR_GET_TYPE_SOCKET){
    $url='info:'.$_url;
    $ch=GCH(strord($url));
    $ch=NewGCH($ch);
    $url=str_replace("_","%5F",'info:'.urlencode($_url));
    $googlePRUrl="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=6".$ch."&ie=UTF-8&oe=UTF-8&features=Rank&q=".$url;
    $pr_str=retrieveURLContent($googlePRUrl,$gettype);
    return substr($pr_str,strrpos($pr_str, ":")+1);
}
function zeroFill($a, $b){
    $z=hexdec('8'.implode('',array_fill(0,PHP_INT_SIZE*2-1,'0')));
    if($z&$a){
    $a=($a>>1);
    $a &=(~$z);
    $a |=hexdec('4'.implode('',array_fill(0,PHP_INT_SIZE*2-1,'0')));
    $a=($a>>($b-1));
    }else{
    $a=($a>>$b);
    }
    return $a;
}
function trunkbitForce32bit($n){
    if(PHP_INT_SIZE<=4){
        settype($n,'float');
        if($n<0){
            $n+=4294967296;
        }
        return $n;
    }else{
        $clearbit='';
        for($i=0;$i<PHP_INT_SIZE-4;$i++){
            $clearbit.='00';
        }
        for($i=0;$i<4;$i++){
            $clearbit.='ff';
        }
        return ($n&hexdec($clearbit));
    }
}
function bigxor($m,$n){
    return $m ^ $n;
}
function mix($a,$b,$c){
    $a=trunkbitForce32bit($a);
    $b=trunkbitForce32bit($b);
    $c=trunkbitForce32bit($c);
    $a-=$b;
    $a=trunkbitForce32bit($a);
    $a-=$c;
    $a=trunkbitForce32bit($a);
    $a=bigxor($a,(zeroFill($c,13)));
    $a=trunkbitForce32bit($a);
    $b-=$c;
    $b=trunkbitForce32bit($b);
    $b-=$a;
    $b=trunkbitForce32bit($b);
    $b=bigxor($b,trunkbitForce32bit($a<<8));
    $b=trunkbitForce32bit($b);
    $c-=$a;
    $c=trunkbitForce32bit($c);
    $c-=$b;
    $c=trunkbitForce32bit($c);
    $c=bigxor($c,(zeroFill($b,13)));
    $c=trunkbitForce32bit($c);
    $a-=$b;
    $a=trunkbitForce32bit($a);
    $a-=$c;
    $a=trunkbitForce32bit($a);
    $a=bigxor($a,(zeroFill($c,12)));
    $a=trunkbitForce32bit($a);
    $b-=$c;
    $b=trunkbitForce32bit($b);
    $b-=$a;
    $b=trunkbitForce32bit($b);
    $b=bigxor($b,trunkbitForce32bit($a<<16));
    $c-=$a;
    $c=trunkbitForce32bit($c);
    $c-=$b;
    $c=trunkbitForce32bit($c);
    $c=bigxor($c,(zeroFill($b,5)));
    $c=trunkbitForce32bit($c);
    $a-=$b;
    $a=trunkbitForce32bit($a);
    $a-=$c;
    $a=trunkbitForce32bit($a);
    $a=bigxor($a,(zeroFill($c,3)));
    $a=trunkbitForce32bit($a);
    $b-=$c;
    $b=trunkbitForce32bit($b);
    $b-=$a;
    $b=trunkbitForce32bit($b);
    $b=bigxor($b,trunkbitForce32bit($a<<10));
    $c-=$a;
    $c=trunkbitForce32bit($c);
    $c-=$b;
    $c=trunkbitForce32bit($c);
    $c=bigxor($c,(zeroFill($b,15)));
    $c=trunkbitForce32bit($c);
    return array($a,$b,$c);
}
function NewGCH($ch){
    $ch=(trunkbitForce32bit(($ch/7 )<<2)|((myfmod($ch,13))&7));
    $prbuf=array();
    $prbuf[0]=$ch;
    for($i=1;$i<20;$i++){
        $prbuf[$i]=$prbuf[$i-1] - 9;
    }
    $ch=GCH(c32to8bit($prbuf));
    return $ch;
}
function myfmod($x,$y){
    $i=floor($x/$y );
    return ($x - $i * $y );
}
function c32to8bit($arr32){
    $arr8=array();
    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 GCH($url, $length=null){
    if(is_null($length)){
        $length=sizeof($url);
    }
    $init=0xE6359A60;
    $a=0x9E3779B9;
    $b=0x9E3779B9;
    $c=0xE6359A60;
    $k=0;
    $len=$length;
    $mixo=array();
    while($len >=12){
        $a+=($url[$k+0] +trunkbitForce32bit($url[$k+1]<<8)+trunkbitForce32bit($url[$k+2]<<16)+trunkbitForce32bit($url[$k+3]<<24));
        $b+=($url[$k+4] +trunkbitForce32bit($url[$k+5]<<8)
        +trunkbitForce32bit($url[$k+6]<<16)
        +trunkbitForce32bit($url[$k+7]<<24));
        $c+=($url[$k+8] +trunkbitForce32bit($url[$k+9]<<8)
        +trunkbitForce32bit($url[$k+10]<<16)
        +trunkbitForce32bit($url[$k+11]<<24));
        $mixo=mix($a,$b,$c);
        $a=$mixo[0];$b=$mixo[1];$c=$mixo[2];
        $k+=12;
        $len-=12;
    }
    $c+=$length;
    switch($len){
    case 11:
    $c+=trunkbitForce32bit($url[$k+10]<<24);
    case 10:
    $c+=trunkbitForce32bit($url[$k+9]<<16);
    case 9 :
    $c+=trunkbitForce32bit($url[$k+8]<<8);
    case 8 :
    $b+=trunkbitForce32bit($url[$k+7]<<24);
    case 7 :
    $b+=trunkbitForce32bit($url[$k+6]<<16);
    case 6 :
    $b+=trunkbitForce32bit($url[$k+5]<<8);
    case 5 :
    $b+=trunkbitForce32bit($url[$k+4]);
    case 4 :
    $a+=trunkbitForce32bit($url[$k+3]<<24);
    case 3 :
    $a+=trunkbitForce32bit($url[$k+2]<<16);
    case 2 :
    $a+=trunkbitForce32bit($url[$k+1]<<8);
    case 1 :
    $a+=trunkbitForce32bit($url[$k+0]);
    }
    $mixo=mix($a, $b, $c );
    $mixo[2]=trunkbitForce32bit($mixo[2]);
    if($mixo[2]<0){
    return (hexdec('1'.implode('',array_fill(0,PHP_INT_SIZE*2,'0'))) + $mixo[2] );
    }else{
    return $mixo[2];
    }
}
function strord($string){
    for($i=0;$i<strlen($string);$i++){
        $result[$i]=ord($string{$i});
    }
    return $result;
}
function retrieveURLContent($url,$gettype){
    switch($gettype){
        case G_PR_GET_TYPE_FILE:
            return retrieveURLContentByFile($url);
        break;
        default:
            return retrieveURLContentBySocket($url);
        break;
    }
}
function retrieveURLContentByFile($url){
    $fd=@fopen($url,"r");
    if(!$fd){
        return false;
    }
    $result="";
    while($buffer=fgets($fd, 4096)){
        $result.=$buffer;
    }
    fclose($fd);
    return $result;
}
function retrieveURLContentBySocket($url,$host="",$port=80,$timeout=30){
    if($host ==""){
        if(!($pos=strpos($url,'://'))){return false;}
        $host=substr($url,
        $pos+3,
        strpos($url,'/',$pos+3) - $pos - 3);
        $uri=substr($url,strpos($url,'/',$pos+3));
    }else{
        $uri=$url;
    }
    $request="GET ".$uri." HTTP/1.0\r\n"."Host: ".$host."\r\n"."Accept: */*\r\n"."User-Agent: ZealGet\r\n"."\r\n";
    $sHnd=@fsockopen ($host, $port, $errno, $errstr, $timeout);
    if(!$sHnd){
        return false;
    }
    @fputs($sHnd, $request);
    $result='';
    while (!feof($sHnd)){
        $result.=fgets($sHnd,4096);
    }
    fclose($sHnd);
    $headerend=strpos($result,"\r\n\r\n");
    if(is_bool($headerend)){
        return $result;
    }else{
        return substr($result,$headerend+4);
    }
}

标签: php php教程

热门推荐