查看文章
 
c# asp.net获取google pr值源代码
2009年10月21日 星期三 14:03

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Net;

using System.IO;

namespace BLL

{

    /// <summary>

    /// GooglePR 的摘要说明

    /// </summary>

    public class GooglePR

    {

        public static string GetPageRank(string strUrl)

        {

            string sURL = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + GetPR(strUrl) + "&ie=UTF-8&oe=UTF-8&features=Rank&q=info:" + System.Web.HttpUtility.UrlEncode(strUrl);

            string result = Net.GetHtml(sURL);

            if (result != null)

            {

                result = result.Trim();

                if (result.IndexOf(':') > 0)

                {

                    string[] pr = result.Split(':');

                    if (pr.Length == 3)

                        return pr[2].ToString();

                }

            }

            return "0";

        }

        private static string GetPR(string url)

        {

            url = "info:" + url;

            string ch = GoogleCH(str_asc(url)).ToString();

            ch = "6" + ch;

            return ch;

        }

        private static int[] str_asc(string str)

        {

            if (str == null || str == string.Empty)

                return null;

            int[] result = new int[str.Length];

            for (int i = 0; i < str.Length; i++)

            {

                result[i] = (int)str[i];

            }

            return result;

        }

        private static long yiweitwo(long a, long b)

        {

            long z = 0x80000000;

            if ((z & a) != 0)

            {

                a = (a >> 1);

                a &= (~z);

                a |= 0x40000000;

                a = ((int)a >> (int)(b - 1));

            }

            else

            {

                a = ((int)a >> (int)b);

            }

            return a;

        }

        private static int[] yiwei(long a, long b, long c)

        {

            a -= b; a -= c; a ^= (yiweitwo(c, 13));

            b -= c; b -= a; b ^= (a << 8);

            c -= a; c -= b; c ^= (yiweitwo(b, 13));

            a -= b; a -= c; a ^= (yiweitwo(c, 12));

            b -= c; b -= a; b ^= (a << 16);

            c -= a; c -= b; c ^= (yiweitwo(b, 5));

            a -= b; a -= c; a ^= (yiweitwo(c, 3));

            b -= c; b -= a; b ^= (a << 10);

            c -= a; c -= b; c ^= (yiweitwo(b, 15));

            return new int[] { (int)a, (int)b, (int)c };

        }

        private static int GoogleCH(int[] url)

        {

            int length = url.Length;

            long a = 0x9E3779B9;

            long b = 0x9E3779B9;

            long c = 0xE6359A60;

            int k = 0;

            int len = length;

            int[] mid;

            while (len >= 12)

            {

                a += (url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));

                b += (url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k + 7] << 24));

                c += (url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k + 11] << 24));

                mid = yiwei(a, b, c);

                a = mid[0]; b = mid[1]; c = mid[2];

                k += 12;

                len -= 12;

            }

            c += length;

            switch (len)

            {

                case 11:

                    {

                        c += (url[k + 10] << 24);

                        c += (url[k + 9] << 16);

                        c += (url[k + 8] << 8);

                        b += (url[k + 7] << 24);

                        b += (url[k + 6] << 16);

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 10:

                    {

                        c += (url[k + 9] << 16);

                        c += (url[k + 8] << 8);

                        b += (url[k + 7] << 24);

                        b += (url[k + 6] << 16);

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 9:

                    {

                        c += (url[k + 8] << 8);

                        b += (url[k + 7] << 24);

                        b += (url[k + 6] << 16);

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 8:

                    {

                        b += (url[k + 7] << 24);

                        b += (url[k + 6] << 16);

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 7:

                    {

                        b += (url[k + 6] << 16);

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 6:

                    {

                        b += (url[k + 5] << 8);

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 5:

                    {

                        b += (url[k + 4]);

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 4:

                    {

                        a += (url[k + 3] << 24);

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 3:

                    {

                        a += (url[k + 2] << 16);

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 2:

                    {

                        a += (url[k + 1] << 8);

                        a += (url[k + 0]);

                        break;

                    }

                case 1:

                    {

                        a += (url[k + 0]);

                        break;

                    }

            }

            mid = yiwei(a, b, c);

            return mid[2];

        }

    }

}

友情链接:网址大全 网址导航 网址导航大全 最好的网址导航大全 易品商城 赛博汇通 中国最好的网址导航站 505笑话大全 2345网址导航大全 qq表情大全


类别:Net| |分享到i贴吧|浏览(452)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu