Php版的google pr值查询接口
作者:admin 日期:2013-09-02
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代码
- <?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溢出问题,可用如下代码解决:
PHP代码
- 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));
- }
- }
评论: 0 | 引用: 0 | 查看次数: 2143
发表评论
广告位