Google Toolbar 曾提供 PageRank (PR) 值查詢,其核心是對 URL 計算一個 Checksum (檢查和),再向 Google 伺服器請求。本文提供完整 C# 實作(含舊/新版演算法)。
// 使用範例
Console.WriteLine(PRCrack.PageRank.CheckPR("https://www.google.com")); // 取得 PR 值
Console.WriteLine(PRCrack.PageRank.OutputCheckSum("https://www.google.com", 1)); // 新版 checksum
Console.WriteLine(PRCrack.PageRank.OutputCheckSum("https://www.google.com", 0)); // 舊版 checksum
ch = GoogleCH("info:" + url);
ch = ((ch/7) << 2) | ((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 "6" + ch;
ch = GoogleCH("info:" + url);
return "6" + ch;
namespace PRCrack
{
public class PageRank
{
public static string CheckPR(string url) { ... }
public static string OutputCheckSum(string url, int version) { ... }
}
internal class CheckSum
{
private const uint GOOGLE_MAGIC = 0xE6359A60;
private uint zeroFill(uint a, int b) { ... }
private uint[] mix(uint a, uint b, uint c) { ... }
private uint GoogleCH(uint[] url, uint length, uint init) { ... }
private uint GoogleCH(string url, uint length) { ... }
private uint GoogleCH(string url) { ... }
private uint GoogleCH(uint[] url, uint length) { ... }
private uint[] c32to8bit(uint[] arr32) { ... }
public string CalculateChecksum(string url) { ... } // 新版
public string CalculateChecksumOld(string url) { ... } // 舊版
}
}
