首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 實作 Google PageRank 查詢:Checksum 演算法完整原始碼

     編輯:關於C#

背景

Google Toolbar 曾提供 PageRank (PR) 值查詢,其核心是對 URL 計算一個 Checksum (檢查和),再向 Google 伺服器請求。本文提供完整 C# 實作(含舊/新版演算法)。

核心類別:PRCrack.PageRank

// 使用範例
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

Checksum 演算法核心邏輯 (CheckSum 類別)

  1. GoogleCH:核心雜湊函式,對 URL 字元陣列進行多輪混合運算(類似 Jenkins hash)。
  2. mix / zeroFill:位元級混合與無號右移輔助函式。
  3. c32to8bit:將 32-bit 整數陣列展開為 8-bit 位元組陣列。
  4. CalculateChecksum (新版,Toolbar ≥ 2.0.114):
    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;
  5. CalculateChecksumOld (舊版,Toolbar < 2.0.114):
    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) { ... }   // 舊版
    }
}

注意事項

  • Google 已於 2016 年正式關閉公開 PR API,此碼僅供教學/歷史研究。
  • 演算法屬逆向工程結果,非官方文件,可能隨時失效。
  • 大量查詢會被 Google 封鎖 IP,請自行加入延遲與 Proxy。

執行效果示意

PR 查詢執行畫面

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved