怎么根据一个网站地址获取到该网站的PR值?
或者说可以提供一个查询PR值的网站,我可以编写代码后台获取他的PR值,
但是现在查询网站PR值的网站查询出来的数据都是使用JS实现的,我后台察看他的网页源代码就看不到这个数据!
或者说可以提供一个查询PR值的网站,我可以编写代码后台获取他的PR值,
但是现在查询网站PR值的网站查询出来的数据都是使用JS实现的,我后台察看他的网页源代码就看不到这个数据!
解决方案 »
- TAG标签如何使用索引优化
- 弱弱一问? JS打印问题!
- 如果循环播放图片?asp.net
- 关于上传功能代码
- 我在看LoveCherry的书《ASP.NET第一步》,书中的代码 用按钮取gridview某行数据,为什么第一页是对的,换到第二页以后就错了。
- 网页跳转延迟如何实现
- 紧急 连接虚拟主机 SQL SEVER 问题?
- mssccprj.scc说是个Source Code Control file,怎么用,怎么打开工程的时候说找不到该文件但是明明有的!??
- 帮帮我呀。。解决不了我就要自杀了
- 我想买本最新的书,是关于.net beta2的?
- 在线的朋友,帮我个忙,五一前看能不能解决 分页问题
- 自己做的CMS,找出漏洞的送高分!!!
新建页面:Default.aspx
在该页面上添加控件:TextBox1 及 Button1 Label1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string responseFromServer = "";
CheckSum cs = new CheckSum();
string s = cs.CalculateChecksum(TextBox1.Text);
HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(@"http://www.google.cn/search?client=navclient-auto&features=Rank:&q=info:" + TextBox1.Text + "&ch=" + s);
HttpWReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)";
HttpWReq.Accept = @"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*";
HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
Stream dataStream = HttpWResp.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.GetEncoding("GB2312"));
responseFromServer = reader.ReadToEnd();
string[] sp = responseFromServer.Split(':');
if (sp.Length == 3)
Label1.Text = "查询成功! PR = " + sp[2].ToString();
else
Label1.Text = "查询失败!";
}
}
新建类:CheckSum.cs
using System;
public 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 + 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 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;
}
}