C# Google PR checker

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 284
Благодарностей
2 728
Баллы
113
some magic ))
how to get Google PR of the page? the most hard part is to calculate hash of the URL.
Everything other is very simple.
This code generates URL to request Google Page Rank
C#:
var url = project.Variables["url"].Value;
var myUri = new Uri(url);
string srUrl = myUri.AbsoluteUri;
// calc Google hash
string urlToHash = srUrl;
urlToHash = string.Format("info:{0}", urlToHash);

int length = urlToHash.Length;

UInt32 a, b;
UInt32 c = 0xE6359A60;

int k = 0;
int len = length;

a = b = 0x9E3779B9;

while (len >= 12)
{
    a += (UInt32)(urlToHash[k + 0] + (urlToHash[k + 1] << 8) + (urlToHash[k + 2] << 16) + (urlToHash[k + 3] << 24));
    b += (UInt32)(urlToHash[k + 4] + (urlToHash[k + 5] << 8) + (urlToHash[k + 6] << 16) + (urlToHash[k + 7] << 24));
    c += (UInt32)(urlToHash[k + 8] + (urlToHash[k + 9] << 8) + (urlToHash[k + 10] << 16) + (urlToHash[k + 11] << 24));
    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;
    k += 12;
    len -= 12;
}
c += (UInt32)length;
switch (len)
{
    case 11:
        c += (UInt32)(urlToHash[k + 10] << 24);
        goto case 10;
    case 10:
        c += (UInt32)(urlToHash[k + 9] << 16);
        goto case 9;
    case 9:
        c += (UInt32)(urlToHash[k + 8] << 8);
        goto case 8;
    case 8:
        b += (UInt32)(urlToHash[k + 7] << 24);
        goto case 7;
    case 7:
        b += (UInt32)(urlToHash[k + 6] << 16);
        goto case 6;
    case 6:
        b += (UInt32)(urlToHash[k + 5] << 8);
        goto case 5;
    case 5:
        b += urlToHash[k + 4];
        goto case 4;
    case 4:
        a += (UInt32)(urlToHash[k + 3] << 24);
        goto case 3;
    case 3:
        a += (UInt32)(urlToHash[k + 2] << 16);
        goto case 2;
    case 2:
        a += (UInt32)(urlToHash[k + 1] << 8);
        goto case 1;
    case 1:
        a += urlToHash[k + 0];
        break;
}

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;
var checksum = string.Format("6{0}", c);
// generate Query URL
return string.Format("http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&ch={0}&features=Rank&q=info:{1}", checksum, System.Web.HttpUtility.UrlEncode(srUrl));
 

Вложения

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
681
Баллы
113
Awesome dude! Thanks for taking the time to do this for us.
 

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 769
Благодарностей
1 179
Баллы
113
I'm not sure is this google return fault or something but PR 0 not shows up. Basically in return is nothing. Same as PR N/A - so you can not know it is PR N/A or PR 0

Thanks
 

Svyat

Client
Регистрация
10.04.2012
Сообщения
97
Благодарностей
8
Баллы
8
some magic ))
how to get Google PR of the page? the most hard part is to calculate hash of the URL.
Everything other is very simple.
This code generates URL to request Google Page Rank
C#:
var url = project.Variables["url"].Value;
var myUri = new Uri(url);
string srUrl = myUri.AbsoluteUri;
// calc Google hash
string urlToHash = srUrl;
urlToHash = string.Format("info:{0}", urlToHash);

int length = urlToHash.Length;

UInt32 a, b;
UInt32 c = 0xE6359A60;

int k = 0;
int len = length;

a = b = 0x9E3779B9;

while (len >= 12)
{
    a += (UInt32)(urlToHash[k + 0] + (urlToHash[k + 1] << 8) + (urlToHash[k + 2] << 16) + (urlToHash[k + 3] << 24));
    b += (UInt32)(urlToHash[k + 4] + (urlToHash[k + 5] << 8) + (urlToHash[k + 6] << 16) + (urlToHash[k + 7] << 24));
    c += (UInt32)(urlToHash[k + 8] + (urlToHash[k + 9] << 8) + (urlToHash[k + 10] << 16) + (urlToHash[k + 11] << 24));
    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;
    k += 12;
    len -= 12;
}
c += (UInt32)length;
switch (len)
{
    case 11:
        c += (UInt32)(urlToHash[k + 10] << 24);
        goto case 10;
    case 10:
        c += (UInt32)(urlToHash[k + 9] << 16);
        goto case 9;
    case 9:
        c += (UInt32)(urlToHash[k + 8] << 8);
        goto case 8;
    case 8:
        b += (UInt32)(urlToHash[k + 7] << 24);
        goto case 7;
    case 7:
        b += (UInt32)(urlToHash[k + 6] << 16);
        goto case 6;
    case 6:
        b += (UInt32)(urlToHash[k + 5] << 8);
        goto case 5;
    case 5:
        b += urlToHash[k + 4];
        goto case 4;
    case 4:
        a += (UInt32)(urlToHash[k + 3] << 24);
        goto case 3;
    case 3:
        a += (UInt32)(urlToHash[k + 2] << 16);
        goto case 2;
    case 2:
        a += (UInt32)(urlToHash[k + 1] << 8);
        goto case 1;
    case 1:
        a += urlToHash[k + 0];
        break;
}

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;
var checksum = string.Format("6{0}", c);
// generate Query URL
return string.Format("http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&ch={0}&features=Rank&q=info:{1}", checksum, System.Web.HttpUtility.UrlEncode(srUrl));

Привет, что то скрипт данные не работает. Хотя логика провильная. Можешь подсказать что за ошибка вылетает?
 

Вложения

Svyat

Client
Регистрация
10.04.2012
Сообщения
97
Благодарностей
8
Баллы
8
Можеть получится через Java Script сделать ? Как думаешь ?

Вот код я нашел.
Код:
    <script type="text/javascript">
   
    // Программисты Google явно с юмором :)
    var HASH_SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. "+
                     "Yes, I'm talking to you, scammer.";
   
    // Расчет хэша строки запроса
    awesomeHash = function(a) {
        var b = 16909125;
        for (c = 0; c < a.length; c++) {
            b ^= HASH_SEED.charCodeAt(c % HASH_SEED.length) ^ a.charCodeAt(c);
            b = b >>> 23 | b << 9;
        }  
        return '8'+hexEncodeU32(b);
    };
   
    // Перевод числа в HEX-значение
    hexEncodeU32 = function(a) {
        var b = toHex8(a >>> 24);
        b += toHex8(a >>> 16 & 255);
        b += toHex8(a >>> 8 & 255);
        return b + toHex8(a & 255)
    };
    toHex8 = function(a) {
        return (a < 16 ? "0": "") + a.toString(16)
    };
   
    // Функция получения ссылки для запроса Google PR
    getPageRankLink = function(a) {
        return 'http://toolbarqueries.google.ru/tbr?features=Rank'+
               '&client=navclient-auto-ff&ch='+awesomeHash(a)+'&q=info:'+
               encodeURIComponent(a);
    }
    </script>



    <script type="text/javascript">
   
    // Пример использования
    st='http://www.manhunter.ru/'
    alert(getPageRankLink(st));
   
    </script>
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 284
Благодарностей
2 728
Баллы
113
для тех у кого не работает, попробуйте это вариант
 

Вложения

  • Спасибо
Реакции: Svyat

nomarketing

Client
Регистрация
01.11.2013
Сообщения
907
Благодарностей
178
Баллы
43
Он уже не актуален.. этот пр :-)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 705
Баллы
113
Ну, кому-то надо.
 

Svyat

Client
Регистрация
10.04.2012
Сообщения
97
Благодарностей
8
Баллы
8
Вопрос решен! Спасибо Darkdiver!
 

YrKa

Client
Регистрация
20.04.2015
Сообщения
220
Благодарностей
112
Баллы
43
а подскажите как игнорировать редирект с www на без www? т.е. если мы ставим в настройках Редирект 1, то есть вероятность, что будет вести на другой юрл; если без редиректа, то даст ПР с www, но больше возможно ПР будет у без www.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)