C#获取Google PR代码

获取Google PR值一值都是从别人的网站上查到,在网上找了一个Google PageRank .net库 还有Checksum 算法源代码,帖上来共享一下(提供C#和VB.NET两个版本获取Google PR值源示,另附上Checksum 算法源代码),演示代码里已含有Google PageRank .net库,以下是运行效果图:

Checksum 算法源代码:

使用实例:

//得到Pagerank值
Console.WriteLine(PRCrack.PageRank.CheckPR("http://www.google.com"));
//得到pagerank checksum
Console.WriteLine(PRCrack.PageRank.OutputCheckSum("http://www.google.com",1));
包含函数:
//输出指定网址的pagerank checksum
//参数m_Version指定1,表示得到新版本checksum,Google Toolbar版本>>=2.0.114
//参数m_Version指定0,表示得到老版本checksum,Google Toolbar版本<2.0.114
public static string OutputCheckSum(string m_Url,int m_Version)
//输出制定网址的pagerank
public static string CheckPR(string m_Url)
Checksum 算法源代码请看详细内容
using System;
namespace PRCrack
{
/// <summary>
/// Google PageRank的Checksum算法。

/// </summary>
class CheckSum
{
public CheckSum()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
uint GOOGLE_MAGIC=0xE6359A60;
private uint zeroFill(uint a, int b)
{
checked
{
uint z = 0x80000000;
if (Convert.ToBoolean(z & a))
{
a = (a>>1);
a &= (~z);
a |= 0x40000000;
a = (a>>(b-1));
}
else
{
a = (a>>b);
}
}
return a;
}
private uint[] mix(uint a,uint b,uint c)
{
a -= b; a -= c; a ^= (uint)(zeroFill(c,13));
b -= c; b -= a; b ^= (uint)(a<<8);
c -= a; c -= b; c ^= (uint)(zeroFill(b,13));
a -= b; a -= c; a ^= (uint)(zeroFill(c,12));
b -= c; b -= a; b ^= (uint)(a<<16);
c -= a; c -= b; c ^= (uint)(zeroFill(b,5));
a -= b; a -= c; a ^= (uint)(zeroFill(c,3));
b -= c; b -= a; b ^= (uint)(a<<10);
c -= a; c -= b; c ^= (uint)(zeroFill(b,15));
return new uint[3]{a,b,c};
}
private uint GoogleCH(uint[] url, uint length, uint init)
{
if(length==0)
{
length = (uint)url.Length;
}
uint a ,b;
a=b= 0x9E3779B9;
uint c = init;
int k = 0;
uint len = length;
uint[] m_mix=new uint[3];
while(len >= 12)
{
a += (uint)(url[k+0] +(url[k+1]<<8) +(url[k+2]<<16) +(url[k+3]<<24));
b += (uint)(url[k+4] +(url[k+5]<<8) +(url[k+6]<<16) +(url[k+7]<<24));
c += (uint)(url[k+8] +(url[k+9]<<8) +(url[k+10]<<16)+(url[k+11]<<24));
m_mix = mix(a,b,c);
a = m_mix[0]; b = m_mix[1]; c = m_mix[2];
k += 12;
len -= 12;
}
c += length;
switch(len) /* all the case statements fall through */
{
case 11:
{
c+=(uint)(url[k+10]<<24);
c+=(uint)(url[k+9]<<16);
c+=(uint)(url[k+8]<<8);
b+=(uint)(url[k+7]<<24);
b+=(uint)(url[k+6]<<16);
b+=(uint)(url[k+5]<<8);
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 10:
{
c+=(uint)(url[k+9]<<16);
c+=(uint)(url[k+8]<<8);
b+=(uint)(url[k+7]<<24);
b+=(uint)(url[k+6]<<16);
b+=(uint)(url[k+5]<<8);
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 9 :
{
c+=(uint)(url[k+8]<<8);
b+=(uint)(url[k+7]<<24);
b+=(uint)(url[k+6]<<16);
b+=(uint)(url[k+5]<<8);
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
/* the first byte of c is reserved for the length */
case 8 :
{
b+=(uint)(url[k+7]<<24);
b+=(uint)(url[k+6]<<16);
b+=(uint)(url[k+5]<<8);
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 7 :
{
b+=(uint)(url[k+6]<<16);
b+=(uint)(url[k+5]<<8);
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 6 :
{
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 5 :
{
b+=(uint)(url[k+4]);
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 4 :
{
a+=(uint)(url[k+3]<<24);
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 3 :
{
a+=(uint)(url[k+2]<<16);
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 2 :
{
a+=(uint)(url[k+1]<<8);
a+=(uint)(url[k+0]);
break;
}
case 1 :
{
a+=(uint)(url[k+0]);
break;
}
/* case 0: nothing left to add */
}
m_mix = mix(a,b,c);
/*-------------------------------------------- report the result */
return m_mix[2];
}
private uint GoogleCH(string url, uint length)
{
uint[] m_urluint=new uint[url.Length];
for(int i=0;i<url.Length;i++)
{
m_urluint[i]=url[i];
}
return GoogleCH(m_urluint,length,GOOGLE_MAGIC);
}
private uint GoogleCH(string sURL)
{
return GoogleCH(sURL,0);
}
private uint GoogleCH(uint[] url, uint length)
{
return GoogleCH(url, length, GOOGLE_MAGIC);
}
private uint[] c32to8bit(uint[] arr32)
{
uint[] arr8=new uint[arr32.GetLength(0)*4+3];
for(int i=0;i<arr32.GetLength(0);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)
{ 
uint ch=GoogleCH("info:" + sURL);
ch = (((ch/7) << 2) | (((uint)(ch%13))&7));
uint[] prbuf = new uint[20];
prbuf[0] = ch;
for(int I = 1; I < 20; i++) {
prbuf[i] = prbuf[i-1]-9;
}
ch = GoogleCH(c32to8bit(prbuf), 80);
return string.Format("6{0}",ch);
}
//老算法,ToolBar 版本<2.0.114
public string CalculateChecksumOld(string sURL)
{ 
uint ch=GoogleCH("info:" + sURL);
string CalculateChecksum = "6" + Convert.ToString((ch));
return CalculateChecksum;
}
}
}

时间: 2024-05-19 15:02:56

C#获取Google PR代码的相关文章

php获取google pr 值的代码

/* *功能:对URL进行编码 *参数说明:$web_url 网站URL,不包含"http://",例如111cn.net *来源:http://111cn.net */  代码如下 复制代码 function HashURL($url){ $SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer."; $Result = 0x010

获取Google PR值Checksum算法部分ASP版

<script language="javascript" runat="server"> /* -- Checksum 算法ASP源代码 -- */ /* -- http://www.eliuzd.com/pr/ -- */ /* -- 挑战者工作组倾情奉献! 作者:刘志丹 -- */ /* -- 2006-3-20 Eliuzd.com E-mail:eliuzd@gmail.com -- */ /* -- 使用方法:checksum值 = GetP

最新Google PR查询工具GoogleCH函数核心代码

取自国外编程开发技术论坛里的代码,最新Google PR查询工具GoogleCH函数核心代码,获取最新的GOOGLE PR值. 代码如下. [code]<?php define('GOOGLE_MAGIC', 0xE6359A60); function obtainPR($data) {      $ret = array();      $parser = xml_parser_create();      xml_parser_set_option($parser,XML_OPTION_CA

获得Google PR值的PHP代码_php实例

今天更新blog程序后,突然发现google工具条上的PR条增加了一点,不过一直以来Google工具条上的PR因为缓冲问题,使得当前显示的PR值并不一定是目前页面的PR值,因此去查了下,发现blog站点(http://mlsx.xplore.cn/)的PR值上升到了3,但是首页 (http://mlsx.xplore.cn)还是2.霍霍,庆贺一下. 不过glemir今天上午告诉我他的blog早已经到了3,使我有点嫉妒,连带想起了Rachel的blog ,他们更新都没有我勤快,但是他们的PR基本上

asp google pr查询代码_应用技巧

复制代码 代码如下: <%@LANGUAGE="JAVASCRIPT"%> <title>Google PR值查询 asp程序</title> <% function hexdec(str) { return parseInt(str,16); } function zeroFill(a,b) { var z = hexdec(80000000); if (z & a) { a = a>>1; a &= ~z; a

asp google pr查询代码

复制代码 代码如下: <%@LANGUAGE="JAVASCRIPT"%> <title>Google PR值查询 asp程序</title> <% function hexdec(str) { return parseInt(str,16); } function zeroFill(a,b) { var z = hexdec(80000000); if (z & a) { a = a>>1; a &= ~z; a

php实现获取网站PR值功能

最近一直在忙友链,也乘机学习一下PR值相关知识,试着用PHP实现PR查询. Google PR值是什么在此不做过多的介绍,简单的说就是你的PR值越高代表的你网站越重要越受欢迎,不过这个值最高为10,下面这个代码可以获得一个网站的PR值. 用PHP脚本程序获取网站的PR值的主要代码如下: 程序如下:<?php $googlehost="toolbarqueries.google.com"; $googleua="Mozilla/5.0 (Windows; U; Windo

Python实现获取网站PR及百度权重_python

上一次我用requests库写的一个抓取页面中链接的简单代码,延伸一下,我们还可以利用它来获取我们网站的PR以及百度权重.原理差不多.最后我们甚至可以写一个循环批量查询网站的相关信息. 先说说GooglePR,全称PageRank.它是Google官方给出的评定一个网站SEO的评级,这个大家应该不陌生.既然是官方给出的,当然有一个官方的接口去获取它.我们这里就利用官方的接口获取谷歌PR. 复制代码 代码如下: GPR_HASH_SEED ="Mining PageRank is AGAINST

在自己的网页页面上实现Google PR值的显示

google|pr值|网页|显示|页面 Google本身提供了查询指定的url的PageRank值的接口,知道了这个接口,就可以很容易编写脚本在页面上实现这一功能,而无需再依赖google toolbar才能进行查询.本文提供了一个用PHP实现的pr查询接口. 使用很简单,只要在需要的地方 〈?php include_once("./pr.inc.php"); echo getPR($urlToQuery); ?〉 即可显示出指定url的PageRank的数值.知道了这个数值再在其基础