Нужен кому-нибудь код получения PR на C# ?

12
A2
На сайте с 10.12.2005
Offline
8
1562

Оригинальный скрипт на php - http://gofman.name/pr/code.php

Код на C#

	

public class GooglePageRankGetter
{
private readonly uint _googleMagic = 0xE6359A60;

public GooglePageRankGetter()
{
}

public int GetPageRank(string url)
{
if (url.ToLower().StartsWith("http://") == false)
url = "http://" + url;

url = "info:" + url;
uint checksum = GetChecksum(url);
string googleUrl = "http://www.google.com/search?client=navclient-auto&ch=6" +
checksum + "&features=Rank&q=" + url;

string pageText = GetResponseText(googleUrl);

string pageRankString = "0";
Regex re = new Regex(":(?<1>\\d+)\\n", RegexOptions.Singleline | RegexOptions.IgnoreCase);
Match m = re.Match(pageText);
if (m.Success) pageRankString = m.Groups[1].ToString();

int pageRank = int.Parse(pageRankString);
return pageRank;
}

private uint GetChecksum(string url)
{
long a = 0x9E3779B9;
long b = a;
long c = _googleMagic;
int k = 0;
int len = url.Length;

while (len >= 12)
{
a += ((int) url[k + 0] + ((int) url[k + 1] << 8) + ((int) url[k + 2] << 16) + ((int) url[k + 3] << 24));
b += ((int) url[k + 4] + ((int) url[k + 5] << 8) + ((int) url[k + 6] << 16) + ((int) url[k + 7] << 24));
c += ((int) url[k + 8] + ((int) url[k + 9] << 8) + ((int) url[k + 10] << 16) + ((int) url[k + 11] << 24));

List<long> mix = Mix(a, b, c);
a = mix[0];
b = mix[1];
c = mix[2];
k += 12;
len -= 12;
}
c += url.Length;

switch (len)
{
case 11: c += ((int) url[k + 10] << 24); goto case 10;
case 10: c += ((int) url[k + 9] << 16); goto case 9;
case 9: c += ((int) url[k + 8] << 8); goto case 8;
case 8: b += ((int) url[k + 7] << 24); goto case 7;
case 7: b += ((int) url[k + 6] << 16); goto case 6;
case 6: b += ((int) url[k + 5] << 8); goto case 5;
case 5: b += ((int) url[k + 4]); goto case 4;
case 4: a += ((int) url[k + 3] << 24); goto case 3;
case 3: a += ((int) url[k + 2] << 16); goto case 2;
case 2: a += ((int) url[k + 1] << 8); goto case 1;
case 1: a += ((int) url[k + 0]); break;
}

List<long> mixx = Mix(a, b, c);
return (uint) mixx[2];
}

private List<long> Mix(long a, long b, long c)
{
a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 13));
b -= c; b -= a; b ^= (int) a << 8;
c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 13));
a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 12));
b -= c; b -= a; b ^= (int) a << 16;
c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 5));
a -= b; a -= c; a = (int) a ^ (ZeroFill(c, 3));
b -= c; b -= a; b ^= (int) a << 10;
c -= a; c -= b; c = (int) c ^ (ZeroFill(b, 15));

List<long> arr = new List<long>();
arr.Add(a);
arr.Add(b);
arr.Add(c);
return arr;
}

private long ZeroFill(long a, int b)
{
long z = 2147483648;
if ((z & a) > 0)
{
a = (int) a >> 1;
a = (int) a & (~z);
a = (int) a | 0x40000000;
a = (int) a >> (b - 1);
}
else
a = (int) a >> b;
return a;
}

private string GetResponseText(string url)
{
string pageText = "";

HttpWebRequest request = null;
WebResponse response = null;
System.IO.Stream stream = null;
System.IO.StreamReader reader = null;
try
{
request = (HttpWebRequest) WebRequest.Create(url);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
request.Timeout = 4 * 1000;

response = request.GetResponse();

stream = response.GetResponseStream();
reader = new System.IO.StreamReader(
stream, System.Text.Encoding.GetEncoding(1251));
pageText = reader.ReadToEnd();
reader.Close();
response.Close();
}
catch (WebException) // Ошибка соединения, либо у Гугла нет информации о странице
{
}
finally
{
if (response != null) response.Close();
if (stream != null) stream.Close();
if (reader != null) reader.Close();
}
return pageText;
}
}
m1kola
На сайте с 10.06.2006
Offline
48
#1

лажа это всё... гугль только знает его... а те кто знает своей репутацией я думаю дорожат... да и там люди работают законопослушные...

A
На сайте с 06.12.2005
Offline
36
#2

Причём тут лажа или не лажа - PR берётся фактический. Прямо с гугла. Спасибо за код.

Дневничок моей страны (http://protest.ru) и Рейтинг сообщений из блогов чиновников (http://GosBlogi.ru)
РожденныйОсенью
На сайте с 05.01.2006
Offline
77
#3

Спасибо, еще десятка два сервисов и уйду на Linux :)

Проблемы зоны РФ (http://www.yaoptimizator.ru/2008/09/06/kirillicheskie-domeny/) Как заставить пользователей подписываться на RSS? (http://www.yaoptimizator.ru/2008/10/22/istoriya-sozdaniya-rss-kartinki/)
threak
На сайте с 02.03.2006
Offline
31
#4
РожденныйОсенью:
Спасибо, еще десятка два сервисов и уйду на Linux :)

Эээ, а как связаны линух и c#? Или тебя не удовлетворяет качество сервисов?

пис: автор молодец, спасибо

Куплю хорошие площадки под статьи ссылки с внутренних Промышленность/Строительство.
РожденныйОсенью
На сайте с 05.01.2006
Offline
77
#5
threak:
Эээ, а как связаны линух и c#?

Неотемлемо :)

threak:
Или тебя не удовлетворяет качество сервисов?

Не понял вопроса, каких сервисисов, под какую ОС?

m1kola
На сайте с 10.06.2006
Offline
48
#6

Кстати, я этот код уже писал ;)

!kt0
На сайте с 28.06.2006
Offline
46
#7

Есть тоже самое на ПХП. Постить или все и так знают?

http://seorepa.com/ (http://seorepa.com/) - блог был там, пока не запилили mchost
[Удален]
#8

да скинь на пхп

ST
На сайте с 29.10.2005
Offline
46
SvT
#9

так вот http://gofman.name/pr/code.php на пхп

Биатлон (http://biathlon.net.ru/)
Dervish
На сайте с 11.05.2005
Offline
186
#10

На С писал очень давно и все забыл. Кто-то, растолкуйте пожалуйста, что конкретно делает код?

Пингвин под микроскопом. (http://ac-u.ru/arts/pingvin-pod-mikroskopom/) Особенности продвижения Интернет-магазинов. (http://ac-u.ru/arts/osobennosti-prodvizhenija-internet-magazinov-bytovojj-ili-kompjuternojj-tekhniki-s-interesnymi-primerami-i-zabavnymi-kartinkami/) Копирайтинг. Качественно. (/ru/forum/725909)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий