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)); } }
个人独立博客:www.phpddt.com,关注web开发,欢迎交流!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 使用TypeScript开发微信小程序(云开发)-入门篇
· 没几个人需要了解的JDK知识,我却花了3天时间研究
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持