Google‘ın PageRank uygulaması, web sitelerinin Google tarafından önemini bulmakta kullanılan bir algoritmadır.
Wikipedia’daki şu adresten, PageRank algoritması ile ilgili ayrıntılı bilgiye erişebilirsiniz.
Siz de sitenizin PageRank değerini http://www.prchecker.info adresinden bulabilirsiniz.
Yazacağımız uygulama ile, sitenizin Google PageRank değerini programatik olarak buldurabileceğiz.
Google sitelerin PageRank değerlerini, http://toolbarqueries.google.com/search adresine gönderilen sorgulara cevap olarak verebiliyor. Fakat sonuç alabilmemiz için bu adrese doğru parametreleri vermemiz gerekiyor, aksi halde HTTP403 : Forbidden hatası alıyoruz.
Parametreler:
Yukarıdaki resimde görünen arayüzü hazırladıktan sonra, projemize GooglePageRank isminde static class ekliyoruz.
GooglePageRank static class’ı üç tane static method’dan oluşuyor.
private static void Mix(ref uint a, ref uint b, ref uint c) { a -= b; a -= c; a ^= c >> 13; b -= c; b -= a; b ^= a << 8; c -= a; c -= b; c ^= b >> 13; a -= b; a -= c; a ^= c >> 12; b -= c; b -= a; b ^= a << 16; c -= a; c -= b; c ^= b >> 5; a -= b; a -= c; a ^= c >> 3; b -= c; b -= a; b ^= a << 10; c -= a; c -= b; c ^= b >> 15; }</pre>
private static string GoogleChecksum(string url) { uint GoogleMagic = 0xE6359A60; uint a, b; uint c = GoogleMagic; a = b = 0x9E3779B9; int k = 0; int length = url.Length; while (length >= 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)); Mix(ref a, ref b, ref c); k += 12; length -= 12; } c += (uint)url.Length; switch (length) { case 11: c += (uint)(url[k + 10] << 24); goto case 10; case 10: c += (uint)(url[k + 9] << 16); goto case 9; case 9: c += (uint)(url[k + 8] << 8); goto case 8; case 8: b += (uint)(url[k + 7] << 24); goto case 7; case 7: b += (uint)(url[k + 6] << 16); goto case 6; case 6: b += (uint)(url[k + 5] << 8); goto case 5; case 5: b += (uint)(url[k + 4]); goto case 4; case 4: a += (uint)(url[k + 3] << 24); goto case 3; case 3: a += (uint)(url[k + 2] << 16); goto case 2; case 2: a += (uint)(url[k + 1] << 8); goto case 1; case 1: a += (uint)(url[k + 0]); break; default: break; } Mix(ref a, ref b, ref c); return string.Format("6{0}", c); }
public static string PageRankHesapla(string adres) { string checkSum = GoogleChecksum("info:" + adres); string url = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + checkSum + "&features=Rank&q=info:" + adres; try { WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); string data = reader.ReadToEnd(); reader.Close(); response.Close(); if (data.IndexOf(':') != -1) data = data.Substring(data.LastIndexOf(':') + 1); return data; } catch (Exception) { return "-1"; } } Şimdi yapmamız gereken, Butonun *Click* olayında, *GooglePageRank* static class'ının *PageRankHesapla* method'unu çağırmak ve dönen değeri Label'da göstermek. Uygulamanın çalışır halini bu adresten indirebilirsiniz.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484