数码鹭岛论坛

标题: 获取google pagerank值的研究 [打印本页]

作者: 翔子    时间: 2005-12-7 23:42
标题: 获取google pagerank值的研究
转自CSDN ,作者:david

  今天在网上看到有网站提供显示google pagerank值的功能,听说google已经取消了公开的pagerank显示,只有通过ie google toolbar获得,所以觉得挺有意思,就去研究了一下。

  我装上google toolbar抓了一下socket包,得到了如下信息:

  

  GET /search?client=navclient-auto&googleip=O;3812&ch=62544423920&freshness_check=

  4X0lThsX1_WR7cBSIbnl8&ie=UTF-8&oe=UTF-8&features=Rank&q=info:

  http%3A%2F%2Fblog%2Eiyi%2Ecn%2Fdavid%2F HTTP/1.1

  User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114.9-big; Windows 5.2)

  Host: toolbarqueries.google.com

  Cache-Control: no-cache

  Cookie: PREF=ID=3e46a681346bcce2:NW=1:TM=1099618786:LM=1104831026:TB=2:S=8oMV8rWWHE07ngDp

  

  测试了一下,发现只有GET后面的信息和host比较重要,其他的信息可以任意填写

  而这其中比较重要的信息是下面这几条:

  

  client=navclient-auto&

  ch=0123456789&

  features=Rank&

  q=info:http%3A%2F%2Fblog%2Eiyi%2Ecn%2Fdavid%2F

  

  client=navclient-auto表示客户端是google toolbar,如果没有这个参数得到的结果是在google中搜索这个网址的结果

  ch=0123456789是checksum值,关键中的关键,google对每个网址用特殊算法进行转换后得到这个checksum,google就是靠这个来对它的pagerank进行"加密"的。如果知道了这个算法,获取pagerank就轻而易举了。

  features=Rank获取的是pagerank值,我得到的结果是Rank_1:1:1其中最后一位是pagerank的值,如果忽略这个参数得到的是相关网页在google中的详细信息的xml,我得到的是下面的信息:

  

  <?xml version="1.0" encoding="GB2312" standalone="no" ?>

  <!DOCTYPE GSP (View Source for full doctype...)>

  - <GSP VER="3.2">

  <TM>0.124300</TM>

  <Q>info:http://blog.iyi.cn/david/</Q>

  <PARAM name="client" value="navclient-auto" original_value="navclient-auto" />

  <PARAM name="googleip" value="O;907" original_value="O;907" />

  <PARAM name="ch" value="62544423920" original_value="62544423920" />

  <PARAM name="q" value="/info:http://blog.iyi.cn/david/" original_value="in ... cn%2Fdavid%2F" />

  - <RES SN="1" EN="1">

  <M>1</M>

  <XT />

  - <R N="1" L="1" MIME="text/html">

  <U>http://blog.iyi.cn/david/</U>

  <UE>http://blog.iyi.cn/david/</UE>

  <T>泰然处之- 大卫's BLOG</T>

  <RK>1</RK>

  <S>泰然处之 - 大卫's BLOG. 2004年12月. 日, 一, 二, 三, 四, 五, 六. 1, 2, 3, 4. <b>...</b></S>

  <LANG>zh-CN</LANG>

  - <HAS>

  <L TAG="link:" />

  <C SZ="90k" CID="28N4KopQVykJ" TAG="cache:" />

  <RT TAG="related:" />

  </HAS>

  </R>

  </RES>

  </GSP>
  

  内容很容易看得明白,这里就不解释了。(难道我得blog被google惩罚了?好久没有更新了-_-)

  知道了原理,就来考虑如何解决了。其实google toolbar可以很容易的动态跟踪,懂得汇编的人可以很快的找出它的checksum算法,这当然是最好的解决之道。

  另外,如果你不懂得汇编,可以通过历史纪录获得向管链接的checksum值,可以从你的ie临时文件夹中找到。

  或者你也可以建立代理服务器,让google toolbar通过代理服务器来获取pagerank值,然后在代理服务器上运行相关程序来截取checksum值。

  另外,还找到这个pr值对照表:

  

  Toolbar PageRank Real PageRank

  0/10        0.15 - 0.9

  1/10        0.9 - 5.4

  2/10        5.4 - 32.4

  3/10        32.4 - 194.4

  4/10        194.4 - 1,166.4

  5/10        1,166.4 - 6,998.4

  6/10        6,998.4 - 41,990.4

  7/10        41,990.4 - 251,942.4

  8/10        251,942.4 - 1,511,654.4

  9/10        1,511,654.4 - 9,069,926.4

  10/10       9,069,926.4 - 0.85 × N + 0.15

  

  我觉得所谓的real pagerank可以估算为:Nd+(1-d)

  N是在google搜索到的链接到当前网页的网页数,d是google定义的阻尼值。

  比如在google中输入link:www.sohu.com得到的结果是:133,000 项,用上面的公式计算得到113050.15,刚好对应到pr值7,也可以根据各个数据段的百分比算出10以内的pr值小数位

  其实这样子很容易的到pr值,根本不用那个checksum加密算法.




欢迎光临 数码鹭岛论坛 (http://www.clore.net/forum/) Powered by Discuz! X3.2