Блог по программированию в среде Delphi

Поиск по блогу

Есть идея по созданию интересной программы?

Опиши тут и я по возможности постараюсь это реализовать специально для тебя! Без $ ))

воскресенье, 27 февраля 2011 г.

Функция получения PageRank (Delphi)


Ни так давно захотел определить PR блога без SEO сервисов с помощью Delphi.
Все оказалось ни так просто, как на Yandex'e при определении ТИЦ'а. Чтобы получить ТИЦ для тех, кто не знает или просто ни когда об этом, ни задумывался, необходимо выполнить запрос такого вида:
http://search.yaca.yandex.ru/yca/cy/ch/[URL сайта без http:\\]/

Пример:
http://search.yaca.yandex.ru/yca/cy/ch/nmdsoft.blogspot.com/
 

и немного распарсить страницу и получим искомый нами ТИЦ

У google все оказалось на много запущение (скорее всего это было сделано для того, чтобы пользователи устанавливали предоставляемый Google тулбар), для того чтобы получить PageRang нашего блога или сайта неважно)) нам необходимо выполнить запрос следующего вида:
http://www.google.com/search?client=navclient-auto&ch=[CHECKSUMM]&features=Rank&q=info:[адрес сайта с http:\\]

Пример:
http://www.google.com/search?client=navclient-auto&ch=86C47EA7D&features=Rank&q=info:http://nmdsoft.blogspot.com/

CHECKSUMM-это как раз, что мешает получить PageRang сайта без программного кода простым выполнением запроса.

Для вычисления контрольной суммы используем вот эту функцию, которая после ввода URL сайта нам в ответ возвращает готовую ссылку перейдя по которой мы можем получить PR сайта (парсинга там требуется еще меньше чем в яндексе так, как там кроме надписи Rank_1:1:XX ни чего нет))

Код функции для Delphi
function Check_PR(aUrl: string): string;
const
  seed='Mining PageRank is AGAINST GOOGLE'#39'S TERMS OF SERVICE. Yes, I'#39'm talking to you, scammer.';
var
  i,urllen,seedlen,key: DWORD;
begin
  key:=16909125;
  seedlen:= Length(seed)+1;
  urllen:= Length(aUrl);
  for i:=1 to urllen do
  begin
    key:= key xor (Ord(seed[i mod seedlen]) xor Ord(aUrl[i]));
    key:= key shr 23 or key shl 9;
  end;
  result:='http://www.google.com/search?client=navclient-auto&ch=8'+IntToHex(key,8)+'&features=Rank&q=info:'+aUrl;
end;

Данная функция хороша тем от готовых компонентов, что вы сами можете выбрать, чем вы будете выполнять запросы, будь то Indy или Synapse ну или ICS.
Функцию нашел путем поиска в гугле seed='Mining PageRank is AGAINST GOOGLE так, что я не первый и не последний)) 
Кого интересует код на других языках программирования можете посмотреть home.zhiwei.li/pagerank

10 комментариев:

  1. Анонимный7 марта 2011 г., 8:03

    "URL сайта без http:\\" - это называется домен. И правильно было бы http://

    А вообще спасибо за статью, откуда алгоритм вычисления CHECKSUMM?

    ОтветитьУдалить
  2. вы правы
    не за, что))
    сначала нашел тут home.zhiwei.li/pagerank
    а потом уже по seed='Mining PageRank is AGAINST в GOOGLE нашел то что надо))

    ОтветитьУдалить
  3. А Гугл разрешает получение информации не его "методами"?

    ОтветитьУдалить
  4. Если я правильно понимаю то, о чём идёт речь, то в заголовке у вас ошибка. PageRank...

    ОтветитьУдалить
  5. А Гугл разрешает получение информации не его "методами"? этот метод они используют в тулбаре своем. вы же не собираетесь нарушать работу сервиса

    ОтветитьУдалить
  6. хм..странно, но не все сайты правильно определяет :(

    ОтветитьУдалить
  7. seotrancer
    тестировал, но небольшое количество сайтов и все вроде норм было.

    ОтветитьУдалить
  8. Протестил - работает! спс за статью.

    ОтветитьУдалить
  9. Анонимный4 марта 2012 г., 9:24

    Помоему уже не работает.

    ОтветитьУдалить