pagerank.dcu — модуль для определения pagerank на delphi

pagerank.dcu - модуль для определения pagerank на delphi Модуль для определения google pagerank на delphi. Сам модуль и описание дальше.

Привет! Мне однажды потребовалось определить тИЦ и pagerank в одной программе на delphi. Полез в интернет, посмотрел, как происходит определение. Вот для тИЦ проблем нет — нужно всего лишь подставить адрес нужного сайта в запрос и пропарсить xml результат. С pagerank ситуация другая: google не хочет, чтобы каждый мог определить pr в своей программе :) Помимо адреса проверяемого сайта нужно передать контрольную сумму, которую нужно рассчитать. Думаю, это сделано против массовых проверок.
Порывшись в интернете, нашел работающий php-скрипт без копирайта (и 10 неработающих :) ), перевёл на delphi пересчёт контрольной суммы, добавил немного winsock’а и, вуаля, получился работающий модуль расчёта pagerank для delphi.

В модуле всего две функции:

  1. function GetPR(host: string; var res: integer): integer;
    Всё очень просто, передаём нужный нам адрес сайта и числовую переменную. Функция GetPR возвращает значение google pagerank от 0 до 10. В переменную res записывается ответ сервера, 200 в случае успеха. Если в res 0, значит ошибка загрузки, код можно узнать с помощью WSAGetLastError. Сайт можно писать как с http://, так и без. Впрочем, на правильность этот параметр проверяй сам, так как в случае написания в этот параметр какой-нибудь другой строки, функция вернёт 0, а ответ от сервера будет 403.
    Пример использования:

    program prparsers;
    
    uses pagerank, winsock;
    
    {$apptype console}
    
    var
      res, pr: integer;
    
    begin
      pr:=GetPR('parsers.info', res);
      if res=200 then
        writeln('pr: ', pr)
      else if res=0 then
        writeln('socket error #', WSAGetLastError)
      else
        writeln('error, HTTP ', res);
      readln;
    end.
    
  2. function GetCheckSum(url: string): string;
    Просто возвращает контрольную сумму. Это если хочешь сам составить запрос и парсить ответ.

Модуль для определения pagerank написан на чистом winapi и занимает меньше 3,5Кб. Сокет синхронный, при желании можно использовать в потоке.

Большие программы ведь тоже используют готовые модули, будь то стандартные или полученные из других источников (не упоминаю свои, конечно же). Это значительно упрощает жизнь. Правда, не стоит забывать о лицензиях, и если всё нормально, то можно, например, предоставлять услуги по установке системы r-keeper, предварительно написав такую систему или что-то посложнее.

Ссылка:
Скачать модуль pagerank.dcu и прилагающиеся файлы
Буду рад, если тебе пригодится, а также благодарен, если упомянешь старину Димаса :)
(c) crystalbit, http://parsers.info

И да, буду рад обменяться постовыми с незаброшенными блогами по программированию :)

53 ответа к «pagerank.dcu — модуль для определения pagerank на delphi»

  1. Как я понимаю, модуль для Delphi 7? А я всё для 2010 хочу найти))
    Нашел какой-то алгоритм, но почему-то он считает контрольную сумму далеко не для всех доменов верно(
    Подскажи, где бы добыть этот работающий скрипт :) Или хотя бы работающий алгоритм подсчета контрольной суммы :)

      1. Попробовал) dcu — это же компилированный pas. А если он скомпилирован в семерке, то в десятке не идет, говорит, что не может скомпилировать(

      2. Кстати, когда только начинал вести блог, пробовал написать такой вот модуль для Delphi 2010. И, что самое нехорошее и непонятное — под 7-кой всё работеат, причем как с вариантом как у тебя так и через простой TWebBrowser при помощи JavaScript, а на 2010 — вупор отказался правильно определять PR для сайтов с PR ниже 5-ки. Так я и забил на этот модуль, не дописав аго до конца

        1. Контрольную сумму у меня вроде и на 2010 правильно считает, а вот winsock функция getaddrinfo у Zdez Bil Ya (d2010 + vista) возвращает всегда host not found. Надеюсь, разберёмся :) Мб для 2010 перепишу под gethostbyname, хоть msdn его и не рекомендует

  2. Привет)
    Даже скомпилированный код довольно читабелен ;-)

    Zdez Bil Ya, в принципе можно любым снифером хттп посмотреть урл запроса к гуглу ;-)
    Собственно, как и к другим сервисам ;-)

    crystalbit, надеюсь не спалил тему ;-)

    Thank you.

    1. Привет! Там только константы, в принципе, читабельны :)
      Запрос подсмотреть можно, но сумму для каждого uri надо разную — google следит
      Еще планирую добавить проверку тИЦ, там всё просто, вот как только домучаю модуль для d2010 :)

      1. Хорошее дело ;-)

        Delphi 2k10 комплит в бинарный код сразу или управляемый байт код?

        Было бы хорошо использовать код и на других компилируемых языках ;-)

  3. Привет, crystalbit !

    Если хочешь спрятать алгоритм, то с DCU надо быть очень осторожным — он довольно легко декомпилируется, с полным восстановлением интерфейсных частей модуля.

    Кроме того, DCU воспринимается только тем компилятором. под которым собирался.

    Лучше компилить в голый код (DLL)

    1. Привет :) Спасибо за отзыв, я особо и не стремлюсь спрятать алгоритм, не я делал google :) Просто хочется сохранить авторство, пока что подобных модулей не встречал (с оговоркой на достаточно тяжёлый компонент)
      > только тем компилятором. под которым собирался.
      Разве? Я встречал модули, совместимые с разными версиями delphi.
      DLL скоро будет, единственное, что модуль иногда удобней, так как в результате у нас никакие файлы не болтаются вместе с программой. Поэтому постараюсь и для других версий delphi собрать, а может и просто исходник выложу — посмотрим :)

  4. Обращаюсь к автору! Я — идейный сторонник Линукса.
    Поэтому предлагаю автору блога несколько расширить тематику, охватив такой аспект как FreePascal и линуксовую среду Lazarus. Отличий от Delphi не так уж много, а вот привлечь большое количество программистов можно. Я бы и сам с удовольствием почитал…
    Так что: афтар пиши, а то мне самому придется еще блог делать!!! :)))

    1. Поставлю как-нибудь линукс, меня практически все к этому тянут, так что спасибо за идею, аспект будет рассмотрен обязательно, тем более уже есть некоторый материал :)
      А пока меня ждёшь, можешь почитать vlad‘а, он на lazarus как раз и пишет :)

    1. Чёрт, какое волнение, какое волнение, сам яндекс!
      тИЦ и yandex rang тоже скоро прикручу, не обойду тебя стороной, друг! Точнее уже прикрутил и скоро выложу всё в одном, да и dll в придачу :)

  5. Попробовал) dcu – это же компилированный pas. А если он скомпилирован в семерке, то в десятке не идет, говорит, что не может скомпилировать))))всем спасибо

        1. Интересный вопрос, подумаю ещё, но склоняюсь к тому, что ты действительно не понял :)
          > Я на его основе забацал программу
          Спали тему, это может быть интересно :)

        1. Странный у тебя гуглбар :)
          Я смотрел, так там помимо сайта в запросе еще один меняющийся параметр, который зависит как раз от адреса сайта. Если брать эту контрольную сумму одну, а сайт другой, то гугл ругается.
          Не покажешь сам запрос?

      1. Гуглу невыгодно часто менять алгоритм, так как у большого количества людей стоит гугл тулбар, который придётся заменять в таком случае

    1. А что там его знать то? И так все понятно, об этом пишут и на Яндекс, да и проанализировать конкурентов всегда можно… Возникает только проблема с простановкой ссылок, доноров слишком сложно подобрать!

  6. Классная функция, очень полезная при написании порграмм раскрутки и продвижения сайтов. Без определения Пейджранка осуществить прект не реально

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *