1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

PR没法查,处理一下吧

本帖由 扬子2005-11-29 发布。版面名称:站务管理

  1. 扬子

    扬子 Member

    注册:
    2005-09-05
    帖子:
    949
    赞:
    2
  2. noad

    noad New Member

    注册:
    2005-11-18
    帖子:
    25
    赞:
    0
    PHP:
    <?
    // Copyright 2005 Carmosa - All rights reserved 
    // Linkchecker 1.1
    // Do not distribute
    // Read the license agreement that accompanies this script.
    ?>
    <style>
    a {font-family:Verdana; font-size:11px; color:#0000FF; text-decoration:none}
    p {font-family:verdana; font-size:11px; color:black; text-decoration:none}
    td {font-family:verdana; font-size:11px; color:black; text-decoration:none}
    tr {font-family:verdana; font-size:11px; color:black; text-decoration:none}
    body {font-family:verdana; font-size:11px; color:black; text-decoration:none}
    h1 {font-family:verdana; font-size:18px; color:black; font-weight:bold; text-decoration:none}
    h2 {font-family:verdana; font-size:15px; color:black; font-weight:bold; text-decoration:none}
    </style>
    <center>
    <h1>Google Page Rank</h1>
    <form method="POST">
    Enter Web Site: <input name='url' value='<?=$_REQUEST['url']; ?>' size="20"><input type="submit" value="Get My Site Rank">
    </form>
    <hr>
    <?

    $website = $_REQUEST['url'];
    if( $website ){
        if( !strstr($website,"http://") && !strstr($website,"https://") ){
            $website = "http://".$website;
        }
        $linkedpages = linkcheck($website,'google');
        $indexedpages = GoogleLinks($website);
        
        $pr = GooglePageRank($website);
        $indexed = $indexedpages[google][0];
        $links = $linkedpages[google][0];

        $data = array();
        $target = trim(eregi_replace('http://', '', $website)); 
        // checking Google
        $source = 'http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=link%3A'.$target;
        $data['Google'] = array(fetch($source, 'of about', 9, 'linking', 'did not match any documents'), $source);
        // checking MSN Search
        $source = 'http://search.msn.com/results.aspx?FORM=MSNH&srch_type=0&q=link%3A'.$target;
        $data['MSN Search'] = array(fetch($source, 'web results1-', 18, 'containing', "couldn't find any sites containing"), $source);
        // checking Yahoo!
        $source = 'http://search.yahoo.com/search?p=linkdomain%3A'.$target.'&sm=Yahoo%21+Search&fr=FP-tab-web-t&toggle=1';
        $data['Yahoo!'] = array(fetch($source, 'of about', 9, 'for', "we didn't find any web pages"), $source);
        // checking AlltheWeb
        $source = 'http://www.alltheweb.com/search?cat=web&cs=utf8&q=link%3A'.$target.'&rys=0&_sb_lang=pref';
        $data['AlltheWeb'] = array(fetch($source, 'audio1 -', 14, 'results', "no web pagesfound that match your query"), $source);
        // checking AltaVista
        $source = 'http://www.altavista.com/web/results?itag=wrx&q=linkdomain%3A'.$target.'&kgs=1&kls=0';
        $data['AltaVista'] = array(fetch($source, 'altavista found', 15, 'results', "we found 0 results"), $source);

    ?>
        <table width='400' border='0' cellpadding='5' cellspacing='0'>
            <tr>
                <td align='left' colspan='2'><b>Retrieving info for <?=$website?>...</b></td>
            </tr>
            <tr>
                <td><strong>Website</strong></td><td><a href="<?=$website?>"><?=$website?></a></td>
            </tr>
            <tr>
                <td><strong>Page Rank</strong></td><td><?=$pr?> / 10</td>
            </tr>
            <tr>
                <td><strong>Indexed Pages</strong></td><td><a href="<?=$indexedpages[google][1]?>"><?=$indexed?></a></td>
            </tr>
            <tr>
                <td><strong>BackLinks</strong></td><td><a href="<?=$linkedpages[google][1]?>"><?=$links?></a></td>
            </tr>
        </table>
        <hr>
        <table width='400' border='0' cellpadding='5' cellspacing='0'>
            <tr>
                <td align='center' colspan='2'><h2>Link Popularity Report</h2></td>
            </tr>
            <tr>
                <td><strong>Search Engine</strong></td><td align='right'><strong>Indexed Links</strong></td>
            </tr>
            <?
            foreach($data as $engine => $result) {
            ?>
            <tr>
                <td><a href='<? echo $result[1]; ?>' target='_blank'><? echo $engine; ?></a></td>
                <td align='right'>
                <?
                if($result[0])
                    echo $result[0];
                else
                    echo 'Not Available';
                ?>
                </td>
            </tr>
            <?
            $total += ereg_replace("[[:punct:]]", '', $result[0]);
            }
            ?>
            <tr>
                <td><strong>Total</strong></td>
                <td align='right'><strong><? echo $total; ?></strong></td>
            </tr>
        </table>
    </center>
    <?
    }

    function fetch($source, $start, $smlen, $stop, $fail) {
        $data = @implode('', @file($source));
        $data = strip_tags($data);
        $data = strtolower($data);
        $data = str_replace("\n", '', $data);
        $data = str_replace("\r", '', $data);
        
        if(substr_count($data, $fail)) {
            return 0;
        } else {
            $data = substr($data, strpos($data, $start)+$smlen);
            $data = substr($data, 0, strpos($data, $stop));
            return trim($data);
        }
    }

    function linkcheck($url, $engine) {
        global $total;
        $arr = parse_url($url);
        $url = $arr['host'];
        $path = "http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=link%3A".$url;
        if(!file_exists($path)) {
            $data = strtolower(strip_tags(implode("", file($path))));
            $data = substr($data, strpos($data, "of about")+9, strlen($data));
            $data = substr($data, 0, strpos($data, " "));
            if(eregi("[[:alpha:]]", $data)) {
                $results[$engine] = array('0', $path);
            } else {
                $results[$engine] = array($data, $path);
                $total+=str_replace(',', '', $data);
            }
        } else {
            $results[$engine] = array('n/a', $path);
        }
        return $results;
    }
    function GoogleLinks($url){
        $arr = parse_url($url);
        $url = $arr['host'];
        $engine = 'google';
        $path = 'http://www.google.com/search?q=inurl:'.$url.'&hl=en&lr=&ie=UTF-8&filter=0';
        if(!file_exists($path)) {
            $data = str_replace('&nbsp;', ' ', strtolower(strip_tags(@implode('', @file($path))))); 
            if(!strpos($data, 'did not match any documents')) {
                $data = substr($data, strpos($data, 'web results')+12, strlen($data)); 
                $data = trim(substr($data, 0, strpos($data, 'for'))); //echo $data; // TEST
                $data = explode(' ', $data);
                $data = $data[(count($data)-1)];
                $results[$engine] = array($data, $path);
                $total+=str_replace(',', '', $data);
            } else {
                $results[$engine] = array('0', $path);
            }
        } else {
            $results[$engine] = array('n/a', $path);
        }
        return $results;
    }

    function GooglePageRank($url){
        $arr = parse_url($url);
        $url = $arr['host'];
        $url="info:".$url; $ch=GoogleCSum($url,0xE6359A60);
        $host="toolbarqueries.google.com"; $hostip=gethostbyname($host);
        $query ="GET /search?client=navclient-auto&ch=6".$ch."&ie=UTF-8&oe=UTF-8&features=Rank&q=".rawurlencode($url)." HTTP/1.0\r\n";
        $query.="Host: $host\r\n"; $rank=-1;
        $query.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
        $query.="Connection: Close\r\n\r\n";
        $fp=fsockopen($hostip,80,$errno,$errstr,30);
        if ($fp)
        { fputs($fp,$query); $data=""; while (!feof($fp)) $data.=fgets($fp,4096); fclose($fp);
        $data=explode("\n",$data);
        foreach ($data as $line)
        if (!is_bool(strpos($line,"Rank_1")))
        { $rank=explode(":",trim($line)); $rank=$rank[2]; break; } }
        return $rank; 
    }

    function GoogleCSum($s,$key){
        $v4=$len=strlen($s); $esi=$key; $ebx=$edi=0x9E3779B9; $p=0;
        if ($len>=12)
        for($i=0;$i<floor($len/12);$i++)
        { $edi=unsign($edi+ord($s[$p+4])+(ord($s[$p+5]) << 8)+(ord($s[$p+6]) << 16)+(ord($s[$p+7]) << 24));
        $esi=unsign($esi+ord($s[$p+8])+(ord($s[$p+9]) << 8)+(ord($s[$p+10]) << 16)+(ord($s[$p+11]) << 24));
        $edx=unsign(($ebx+ord($s[$p+0])+(ord($s[$p+1]) << 8)+(ord($s[$p+2]) << 16)+(ord($s[$p+3]) << 24)-$edi-$esi)^shr($esi,13));
        $edi=unsign(($edi-$esi-$edx)^($edx << 8));
        $esi=unsign(($esi-$edx-$edi)^shr($edi,13));
        $edx=unsign(($edx-$edi-$esi)^shr($esi,12));
        $edi=unsign(($edi-$esi-$edx)^($edx << 16));
        $esi=unsign(($esi-$edx-$edi)^shr($edi,5));
        $edx=unsign(($edx-$edi-$esi)^shr($esi,3)); $ebx=$edx;
        $edi=unsign(($edi-$esi-$ebx)^($ebx << 10));
        $esi=unsign(($esi-$ebx-$edi)^shr($edi,15));
        $v4-=12; $p+=12; }
        $esi=unsign($esi+$len);
        if ($v4>=11) $esi=unsign($esi+(ord($s[$p+10]) << 24));
        if ($v4>=10) $esi=unsign($esi+(ord($s[$p+9]) << 16));
        if ($v4>=9) $esi=unsign($esi+(ord($s[$p+8]) << 8));
        if ($v4>=8) $edi=unsign($edi+ord($s[$p+4])+(ord($s[$p+5]) << 8)+(ord($s[$p+6]) << 16)+(ord($s[$p+7]) << 24));
        else
        { if ($v4>=7) $edi=unsign($edi+(ord($s[$p+6]) << 16));
        if ($v4>=6) $edi=unsign($edi+(ord($s[$p+5]) << 8));
        if ($v4>=5) $edi=unsign($edi+ord($s[$p+4])); }
        if ($v4>=4) $ebx=unsign($ebx+ord($s[$p+0])+(ord($s[$p+1]) << 8)+(ord($s[$p+2]) << 16)+(ord($s[$p+3]) << 24));
        else
        { if ($v4>=3) $ebx=unsign($ebx+(ord($s[$p+2]) << 16));
        if ($v4>=2) $ebx=unsign($ebx+(ord($s[$p+1]) << 8));
        if ($v4>=1) $ebx=unsign($ebx+ord($s[$p+0])); }
        $ebx=unsign(($ebx-$edi-$esi)^shr($esi,13));
        $edi=unsign(($edi-$esi-$ebx)^($ebx << 8));
        $esi=unsign(($esi-$ebx-$edi)^shr($edi,13));
        $ebx=unsign(($ebx-$edi-$esi)^shr($esi,12));
        $edi=unsign(($edi-$esi-$ebx)^($ebx << 16));
        $esi=unsign(($esi-$ebx-$edi)^shr($edi,5));
        $ebx=unsign(($ebx-$edi-$esi)^shr($esi,3));
        $edi=unsign(($edi-$esi-$ebx)^($ebx << 10));
        $esi=unsign(($esi-$ebx-$edi)^shr($edi,15)); return $esi; 
    }
    function shr($x,$y) { 
        $x=unsign($x); 
        for($i=0;$i<$y;$i++) $x=floor($x/2); return $x; 
    }
    function unsign($l) { 
        $l=intval($l);
        if ($l>=0){
            return $l;
        }else{
            return 4294967296+$l;
        }
    }
    ?>
    自己慢慢查吧,要不要多给你几个查PR,其实都一样的了。