Nói tới Google PageRank thì có lẽ là một thuật ngữ rất quen thuộc đối với các SEOer. Đây là hàm trả về Google PageRank được viết với ngôn ngữ C#.Net. Bạn có thể sử dụng nó để tích hợp vào website của mình phục vụ cho việc kiểm tra PageRank.

Để sử dụng, các bạn chỉ cần gọi hàm MyPR từ lớp GooglePR và truyền vào URL website cần check Google PageRank, kiểu trả ra của hàm MyPR là int tương ứng với chỉ số pagerank của website đã kiểm tra.

Visual C# Code:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Net;
  5. using System.IO;
  6. using System.Text.RegularExpressions;
  7.  
  8. /// <summary>
  9. /// Lop lay Google PageRank
  10. /// Scorpion (st)
  11. /// </summary>
  12. public class GooglePR
  13. {
  14.        private const UInt32 myConst = 0xE6359A60;
  15.         private static void _Hashing(ref UInt32 a, ref UInt32 b, ref UInt32 c)
  16.         {
  17.             a -= b; a -= c; a ^= c >> 13;
  18.             b -= c; b -= a; b ^= a << 8;
  19.             c -= a; c -= b; c ^= b >> 13;
  20.             a -= b; a -= c; a ^= c >> 12;
  21.             b -= c; b -= a; b ^= a << 16;
  22.             c -= a; c -= b; c ^= b >> 5;
  23.             a -= b; a -= c; a ^= c >> 3;
  24.             b -= c; b -= a; b ^= a << 10;
  25.             c -= a; c -= b; c ^= b >> 15;
  26.         }
  27.  
  28.         public static string PerfectHash(string theURL)
  29.         {
  30.             string url = string.Format("info:{0}", theURL);
  31.  
  32.             int length = url.Length;
  33.  
  34.             UInt32 a, b;
  35.             UInt32 c = myConst;
  36.  
  37.             int k = 0;
  38.             int len = length;
  39.  
  40.             a = b = 0x9E3779B9;
  41.  
  42.             while (len >= 12)
  43.             {
  44.                 a += (UInt32)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
  45.                 b += (UInt32)(url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k + 7] << 24));
  46.                 c += (UInt32)(url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k + 11] << 24));
  47.  
  48.                 _Hashing(ref a, ref b, ref c);
  49.                 k += 12;
  50.                 len -= 12;
  51.             }
  52.  
  53.             c += (UInt32)length;
  54.             switch (len)
  55.             {
  56.                 case 11:
  57.                     c += (UInt32)(url[k + 10] << 24);
  58.                     goto case 10;
  59.                 case 10:
  60.                     c += (UInt32)(url[k + 9] << 16);
  61.                     goto case 9;
  62.                 case 9:
  63.                     c += (UInt32)(url[k + 8] << 8);
  64.                     goto case 8;
  65.                 case 8:
  66.                     b += (UInt32)(url[k + 7] << 24);
  67.                     goto case 7;
  68.                 case 7:
  69.                     b += (UInt32)(url[k + 6] << 16);
  70.                     goto case 6;
  71.                 case 6:
  72.                     b += (UInt32)(url[k + 5] << 8);
  73.                     goto case 5;
  74.                 case 5:
  75.                     b += (UInt32)(url[k + 4]);
  76.                     goto case 4;
  77.                 case 4:
  78.                     a += (UInt32)(url[k + 3] << 24);
  79.                     goto case 3;
  80.                 case 3:
  81.                     a += (UInt32)(url[k + 2] << 16);
  82.                     goto case 2;
  83.                 case 2:
  84.                     a += (UInt32)(url[k + 1] << 8);
  85.                     goto case 1;
  86.                 case 1:
  87.                     a += (UInt32)(url[k + 0]);
  88.                     break;
  89.                 default:
  90.                     break;
  91.             }
  92.            
  93.             _Hashing(ref a, ref b, ref c);
  94.  
  95.             return string.Format("6{0}", c);
  96.         }
  97.  
  98.         public static int MyPR(string myURL)
  99.         {
  100.             string strDomainHash = PerfectHash(myURL);
  101.             string myRequestURL = string.Format("http://toolbarqueries.google.com/" + "search?client=navclient-auto&ch={0}&features=Rank&q=info:{1}",
  102.  
  103.             strDomainHash, myURL);
  104.  
  105.             try
  106.             {
  107.                 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(myRequestURL);
  108.                 string myResponse = new StreamReader(myRequest.GetResponse().GetResponseStream()).ReadToEnd();
  109.  
  110.                 if (myResponse.Length == 0)
  111.                     return 0;
  112.                 else
  113.                     return int.Parse(Regex.Match(myResponse, "Rank_1:[0-9]:([0-9]+)").Groups[1].Value);
  114.             }
  115.             catch (Exception)
  116.             {
  117.                 return -1;
  118.             }
  119.         }
  120. }

Chúc các bạn thành công!

Scorpion (st)

Nguồn http://lichsu.vn