• google pr值查询接口


    PR(全称PageRank)是Google衡量一个网站的重要标准之一,从而影响Google搜索结果排名。Google官方提供了查询PR的API,如本站PR值:
    http://toolbarqueries.google.com.hk/tbr?client=navclient-auto&features=Rank:&q=info:phpddt.com&ch=8fabc62ea
    Google PR值查询原理及其简单,只要获取如上接口返回的值处理下就OK了:

    <?php
     
    /*
    *功能:对URL进行编码
    *参数说明:$web_url 网站URL,不包含"http://"
    */
    function HashURL($url)
    {   
        $SEED = "Mining PageRank is AGAINST GOOGLE’S TERMS OF SERVICE. Yes, I’m talking to you, scammer.";
        $Result = 0x01020345;
        for ($i=0; $i<strlen($url); $i++) 
        {
            $Result ^= ord($SEED{$i%87}) ^ ord($url{$i});
            $Result = (($Result >> 23) & 0x1FF) | $Result << 9;
        }
        return sprintf("8%x", $Result);
    }
     
    /*
    *功能:根据google提供的pr查询接口获取pagerank
    *参数说明:$domain 网站域名,不包含"http://"
    */
    function pagerank($domain)
    {    
        $StartURL = "http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank:&q=info:";
        $GoogleURL = $StartURL.$domain. '&ch='.HashURL($domain);
        echo $GoogleURL.'<br>';
        $fcontents = file_get_contents("$GoogleURL");
        $pagerank = substr($fcontents,9);
        if (!$pagerank) return "0";else return $pagerank;
    }
    echo pagerank("phpddt.com");
    ?>

    值得注意的是该接口需要获取一个ch的值,已有HashURL()解决,但是该代码传到服务器Linux 64上出现了int overflow溢出问题,可用如下代码解决:

        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));
        }
    }

    查看演示

  • 相关阅读:
    c++ --> 虚函数
    Algorithm --> 全排列
    Algorithm --> 矩阵链乘法
    STL --> set用法
    STL --> list用法
    Algorithm --> 最长公共子序列(LCS)
    Zookeeper使用实例——服务节点管理
    Zookeeper使用实例——分布式共享锁
    Zookeeper初探
    Java设计模式应用——备忘录模式
  • 原文地址:https://www.cnblogs.com/phpddt/p/3291183.html
Copyright © 2020-2023  润新知