`
gcgmh
  • 浏览: 349369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pr值的获取

阅读更多
package com.sodao;

/// <summary>
/// Google PageRank的Checksum算法。
/// 
/// 
/// 
/// </summary>
public class CheckSum {

  public CheckSum()
  {
  }

  long GOOGLE_MAGIC = 0xE6359A60l;

  private long zeroFill(long a, long b)
  {
	  long z = 0x80000000l;
      if ((z & a)!=0)
      {
          a = (a >> 1);
          a &= (~z);
          a |= 0x40000000;
          a = (a >> (b - 1));
      }
      else
      {
          a = (a >> b);
      }
      
      return a;
  }

  private long[] mix(long a, long b, long c)
  {
	  a -= b;
	  a &= 0xFFFFFFFFl;
	  a -= c;
	  a &= 0xFFFFFFFFl;
	
	  a ^= (zeroFill(c, 13));

      b -= c; 
      b &= 0xFFFFFFFFl;
      b -= a;
      b &= 0xFFFFFFFFl;
      b ^= (a << 8);
      b &= 0xFFFFFFFFl;
      
      c -= a; 
      c &= 0xFFFFFFFFl;
      c -= b; 
      c &= 0xFFFFFFFFl;
      c ^= (zeroFill(b, 13));
      
      a -= b;
      a &= 0xFFFFFFFFl;
      a -= c; 
      a &= 0xFFFFFFFFl;
      a ^= (zeroFill(c, 12));
      
      b -= c;
      b &= 0xFFFFFFFFl;
      b -= a;
      b &= 0xFFFFFFFFl;
      b ^= (a << 16);
      b &= 0xFFFFFFFFl;
      
      c -= a;
      c &= 0xFFFFFFFFl;
      c -= b; 
      c &= 0xFFFFFFFFl;
      c ^= (zeroFill(b, 5));
      
      a -= b;
      a &= 0xFFFFFFFFl;
      a -= c;
      a &= 0xFFFFFFFFl;
      a ^= (zeroFill(c, 3));
      
      b -= c;
      b &= 0xFFFFFFFFl;
      b -= a;
      b &= 0xFFFFFFFFl;
      b ^= (a << 10);
      b &= 0xFFFFFFFFl;
      
      c -= a;
      c &= 0xFFFFFFFFl;
      c -= b;
      c &= 0xFFFFFFFFl;
      c ^= (zeroFill(b, 15));
    
//      a &= 0xFFFFFFFFl;
//	  b &= 0xFFFFFFFFl;
//	  c &= 0xFFFFFFFFl;
//	  System.out.println("a:@" + a);
//	  System.out.println("b:@" + b);
//	  System.out.println("c:@" + c);
      long[] ret = { a, b, c };
      return(ret) ;
  }

  private long GoogleCH(long[] url, int length, long init)
  {
      if (length == 0)
      {
          length = (int)url.length;
      }
      long a, b;
      a = b = 0x9E3779B9l;
      long c = init;


      int k = 0;
      int len = length;
      long[] m_mix = new long[3];
      

//      System.out.println("a:"+a);
//      System.out.println("b:"+b);
//      System.out.println("c:"+c);
      
      
      while (len >= 12)
      {
          a += url[k + 0];
          //System.out.println("a1:"+a);
          a += ((long)url[k + 1]) << 8 ;
          //System.out.println("a2:"+a);

          a += (((long)url[k + 2]) << 16);
          //System.out.println("a3:"+a);
          a += (((long)url[k + 3]) << 24);
          //System.out.println("a4:"+a);
          a &= 0xFFFFFFFFl;
          b += (url[k + 4] + (long)(url[k + 5] << 8) + (long)(url[k + 6] << 16) + (long)(url[k + 7] << 24));
          c += (url[k + 8] + (long)(url[k + 9] << 8) + (long)(url[k + 10] << 16) + (long)(url[k + 11] << 24));
          
          b &= 0xFFFFFFFFl;
          c &= 0xFFFFFFFFl;
          
//          System.out.println("a:"+a);
//          System.out.println("b:"+b);
//          System.out.println("c:"+c);
          
          m_mix = mix(a, b, c);
          a = m_mix[0]; b = m_mix[1]; c = m_mix[2];
//          a &= 0xFFFFFFFFl;
//    	  b &= 0xFFFFFFFFl;
//    	  c &= 0xFFFFFFFFl;
          k += 12;
          len -= 12;

      }

      //System.out.println("a:"+a);
      //System.out.println("b:"+b);
      //System.out.println("c:"+c);

      c += length;

      //System.out.println("len:"+len);
      switch (len)              /* all the case statements fall through */
      {
          case 11:
              {
                  c += (long)(url[k + 10] << 24);
                  c &= 0xFFFFFFFFl;
                  c += (long)(url[k + 9] << 16);
                  c &= 0xFFFFFFFFl;
                  c += (long)(url[k + 8] << 8);
                  c &= 0xFFFFFFFFl;
                  b += (long)(url[k + 7] << 24);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 6] << 16);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 10:
              {
                  c += (long)(url[k + 9] << 16);
                  c &= 0xFFFFFFFFl;
                  c += (long)(url[k + 8] << 8);
                  c &= 0xFFFFFFFFl;
                  b += (long)(url[k + 7] << 24);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 6] << 16);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 9:
              {
                  c += (long)(url[k + 8] << 8);
                  c &= 0xFFFFFFFFl;
                  b += (long)(url[k + 7] << 24);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 6] << 16);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;                  
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          /* the first byte of c is reserved for the length */
          case 8:
              {
                  b += (long)(url[k + 7] << 24);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 6] << 16);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 7:
              {
                  b += (long)(url[k + 6] << 16);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 6:
              {
                  b += (long)(url[k + 5] << 8);
                  b &= 0xFFFFFFFFl;
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 5:
              {
                  b += (long)(url[k + 4]);
                  b &= 0xFFFFFFFFl;
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 4:
              {
                  a += (long)(url[k + 3] << 24);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 3:
              {
                  a += (long)(url[k + 2] << 16);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  //System.out.println("a:!!!!"+a);
                  break;
              }
          case 2:
              {
                  a += (long)(url[k + 1] << 8);
                  a &= 0xFFFFFFFFl;
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          case 1:
              {
                  a += (long)(url[k + 0]);
                  a &= 0xFFFFFFFFl;
                  break;
              }
          /* case 0: nothing left to add */
      }
      m_mix = mix(a, b, c);
      /*-------------------------------------------- report the result */
      return m_mix[2];
  }

  private long GoogleCH(String url, int length)
  {
      long[] m_urlint = new long[url.length()];
      
      for (int i = 0; i < url.length(); i++)
      {
          m_urlint[i] = url.charAt(i);
          //System.out.println("m_urlint[i]:"+m_urlint[i]);
      }
      return GoogleCH(m_urlint, length, GOOGLE_MAGIC);
  }

  private long GoogleCH(String sURL)
  {
      return GoogleCH(sURL, 0);
  }
  private long GoogleCH(long[] url, int length)
  {
      return GoogleCH(url, length, GOOGLE_MAGIC);
  }

  private long[] c32to8bit(long[] arr32)
  {
      long[] arr8 = new long[arr32.length * 4 + 3];

      for (int i = 0; i < arr32.length; i++)
      {
          for (int bitOrder = i * 4; bitOrder <= i * 4 + 3; bitOrder++)
          {
              arr8[bitOrder] = arr32[i] & 255;
              arr32[i] = zeroFill(arr32[i], 8);
          }
      }
      return arr8;
  }

  //新算法,ToolBar 版本>>=2.0.114
  public String CalculateChecksum(String sURL)
  {
      long ch = GoogleCH("info:" + sURL);
      //System.out.println("ch:"+ch);
      
      ch = (((ch / 7) << 2) | (((int)(ch % 13)) & 7));
      //System.out.println("ch2:"+ch);
      long[] prbuf = new long[20];
      prbuf[0] = ch;
      for (int i = 1; i < 20; i++)
      {
          prbuf[i] = prbuf[i - 1] - 9;
          //System.out.println("prbuf[i]:"+prbuf[i]);
      }
      
      ch = GoogleCH(c32to8bit(prbuf), 80);
      return "6"+ch;
  }

  //老算法,ToolBar 版本<2.0.114
  /*public String CalculateChecksumOld(String sURL)
  {
      int ch = GoogleCH("info:" + sURL);

      String CalculateChecksum = "6" + ((ch));
      return CalculateChecksum;
  }*/
}




package com.sodao;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class PageRank {
	/*
	 * public static void main(String[] args)throws Exception { String url =
	 * "http://www.safe-drive.com/";
	 * 
	 * System.out.println(getPageRank(url)); }
	 */

	public static String getPageRank(String url) {
		String responseFromServer = "";
		CheckSum cs = new CheckSum();
		String s = cs.CalculateChecksum(url);

		try {
			URL openurl = new URL(
					"http://www.google.cn/search?client=navclient-auto&features=Rank:&q=info:"
							+ url + "&ch=" + s);
			URLConnection HttpWReq = openurl.openConnection();

			HttpWReq.setRequestProperty("Accept", "*/*");
			HttpWReq.setRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)");

			BufferedReader r = new BufferedReader(new InputStreamReader(
					HttpWReq.getInputStream()));

			while ((s = r.readLine()) != null) {
				// System.out.println(s);
				responseFromServer = s;
			}
			r.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		String[] sp = responseFromServer.split(":");
		String lbValue = null;
		if (sp.length == 3)
			lbValue = "查询成功! PR = " + sp[2].toString();
		else
			lbValue = "查询失败!";
		return (lbValue);
	}

	public static void main(String[] args) {
		System.out.println(new PageRank().getPageRank("http://sports.sina.com.cn"));
	}
}

分享到:
评论

相关推荐

    获取指定页面的Google PR值的PHP程序代码

    获取指定页面的Google PR值的PHP程序代码。由5个函数组成,用getPR($url)的方式就可以获取变量$url链接的PR值。注:查询PR值不仅是网站的首页,网站的每个页面都有PR值的。

    最新用php获取谷歌PR值算法,附上php查询PR值代码示例

    用php程序怎么获取谷歌PR值,已经有好几个人问我php查询PR值怎么实现的,于是现在就把php查询PR值法算法附上,大家可以直接使用下面的代码去测试php查询PR值

    获取google pagerank的最新PHP函数 绝对可用

    最新获取谷歌PR值的函数,绝对可用,windows/linux皆可。 最新的查询谷歌PR值函数(接口),CH值最新算法,绝对准确。 使用方法: include 'googlepr.php'; echo getPR('http://yanglu.org'); ?&gt; 显示结果...

    PHP查询网站的PR值

    PR值是google衡量网站的重要标准之一,根据google提供的结果获取pr值,如:http://toolbarqueries.google.com.hk/tbr?client=navclient-auto&features=Rank:&q=info:phpddt.com&ch=8fabc62ea复制代码 代码如下:&lt;...

    获取google pagerank的最新PHP函数方法

    最新获取谷歌PR值的函数,绝对可用,windows/linux皆可。 最新的查询谷歌PR值函数(接口),CH值最新算法,绝对准确。 使用方法: include 'googlepr.php'; echo getPR('http://yanglu.org'); ?&gt; 显示结果为PR数值

    网站记录器 v1.2

    网站记录器主要特点有:防止重复添加网站,网站可分类储存,并且在用户输入网址后,软件会自行获取“PR值”、“百度收录”、“谷歌收录”、“百度反链”和“雅虎反链”等。数据可导入和导出,导入导出的格式可自定义...

    pspr电脑开机密码破解

    进入PE下,打开它,获取HALC值,解密

    VB实现的网络查询程序.rar

    VB实现的网络查询程序,获取Google PR值,是一个连接网络进行某项数据查询的程序,用到采集的部分功能,本实例是用来查询PR值的,不过现在PR值都不更新了,但查询程序的原理可通过本源码了解下,可用于编写同类程序...

    在线友情链接监测管理 v1.0.rar

    6.获取对方网址的PR值 7.当网络繁忙导致某一项得不出结果时,可以重新检测 程序文件主要有三个: check.php : 检测时的主体PHP文件 checkServer.php : 检测时运行在后台的PHP文件 selSite.js : 建立xmlhttp...

    解决vue组件props传值对象获取不到的问题

    先说问题,父组件利用props向子组件传值,浏览器 console 有这个值,但是获取不到内部的属性,困了我3个小时,真的** personal console 以下为原代码 1、home.vue(父组件)–personal是被传的参数 &lt;!--子组件...

    nodejs使用express获取get和post传值及session验证的方法

    比如,前面传入了一个id的值,nodejs获取就可以req.body.id即可 express的session验证 第一步安装cookie和session的模块,并引入 var session = require('express-session'); var cookieParser = require

    网站推广SEO技巧

    很好的SEO资料,包含怎样优化网页,怎样获取外链,怎样提高PR值

    wordpress获取自定义字段值函数:get_post_meta()

    用$post-&gt;ID获取文章编号。 默认值:None $key (字符)(必需)字符,字符中含有希望的meta值的名称。 默认值:None $single (布尔值)(可选)如果默认值设为true,函数返回单个字符形式的结果。如果为false或为...

    vue中子组件的methods中获取到props中的值方法

    父子组件通信 这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可 例如: 父组件中 &lt;head-top&gt;&lt;/head-top&gt; 数据统计 &lt;el xs=24 sm=12 md=6 lg=6&gt;&...div class=g

    DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值

    本文实例展示了DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值的方法,具体如下所示: 主要功能代码如下: /// /// 根据rowIndex和visibleColumnsIndex来获取单元格可见值 /// /// ...

    jquery 获取自定义属性(attr和prop)的实现代码

    1. attr(属性名) //获取属性的值(取得第一个匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性,则返回 undefined ) 2. attr(属性名, 属性值) //设置属性的值 ...

    DOM XPATH获取img src值的query

    复制代码 代码如下:$nodes = @$xpath-&gt;query(“//*[@id=’main_pr’]/img/@src”);$prurl = $nodes-&gt;item(0)-&gt;nodeValue; 您可能感兴趣的文章:c#通过xpath读取xml示例java使用xpath解析xml示例分享java使用xpath和...

    几款Firefox的SEO插件

    1. Search Status,这款插件将获取PR和...5. SEOpen,检测外部链接和PR值的一款插件。还有一些常用的比如Alexa查询。但感觉这款不如Search Status来的方便。 个人觉得1,3组合非常棒,这也是我在使用的两款SEO插件。

    js获取会话框prompt的返回值的方法

    本文实例讲述了js获取会话框prompt的返回值的方法。分享给大家供大家参考。具体分析如下: 获取会话框prompt的返回值,见例子: 代码如下:&lt;html&gt; &lt;head&gt; [removed] if(prompt&#40;“请输入密码”,””&...

    9大搜索引擎收录查询代码

    九大搜索引擎收录查询包括:百度,Google,Yahoo,有道,搜狗,搜搜,...------- 盗链网网站PR值查询系统 3.0 免费版 程序更新说明------- 1、修正了有道搜索升级为2010版后的结果错误! 2、修正了查询中Google无法获取数据

Global site tag (gtag.js) - Google Analytics