pagerank.dcu — модуль для определения pagerank на delphi
Модуль для определения google pagerank на delphi. Сам модуль и описание дальше.
Привет! Мне однажды потребовалось определить тИЦ и pagerank в одной программе на delphi. Полез в интернет, посмотрел, как происходит определение. Вот для тИЦ проблем нет — нужно всего лишь подставить адрес нужного сайта в запрос и пропарсить xml результат. С pagerank ситуация другая: google не хочет, чтобы каждый мог определить pr в своей программе :) Помимо адреса проверяемого сайта нужно передать контрольную сумму, которую нужно рассчитать. Думаю, это сделано против массовых проверок.
Порывшись в интернете, нашел работающий php-скрипт без копирайта (и 10 неработающих :) ), перевёл на delphi пересчёт контрольной суммы, добавил немного winsock’а и, вуаля, получился работающий модуль расчёта pagerank для delphi.
В модуле всего две функции:
- 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.
- function GetCheckSum(url: string): string;
Просто возвращает контрольную сумму. Это если хочешь сам составить запрос и парсить ответ.
Модуль для определения pagerank написан на чистом winapi и занимает меньше 3,5Кб. Сокет синхронный, при желании можно использовать в потоке.
Большие программы ведь тоже используют готовые модули, будь то стандартные или полученные из других источников (не упоминаю свои, конечно же). Это значительно упрощает жизнь. Правда, не стоит забывать о лицензиях, и если всё нормально, то можно, например, предоставлять услуги по установке системы r-keeper, предварительно написав такую систему или что-то посложнее.
Ссылка:
Скачать модуль pagerank.dcu и прилагающиеся файлы
Буду рад, если тебе пригодится, а также благодарен, если упомянешь старину Димаса :)
(c) crystalbit, http://parsers.info
И да, буду рад обменяться постовыми с незаброшенными блогами по программированию :)
Как я понимаю, модуль для Delphi 7? А я всё для 2010 хочу найти))
Нашел какой-то алгоритм, но почему-то он считает контрольную сумму далеко не для всех доменов верно(
Подскажи, где бы добыть этот работающий скрипт :) Или хотя бы работающий алгоритм подсчета контрольной суммы :)
Написан на delphi 7, почему бы ему не работать и на 2010?
Мне всегда казалось, что совместимо, разве не работает? Попробуешь? :)
Попробовал) dcu — это же компилированный pas. А если он скомпилирован в семерке, то в десятке не идет, говорит, что не может скомпилировать(
Кстати, когда только начинал вести блог, пробовал написать такой вот модуль для Delphi 2010. И, что самое нехорошее и непонятное — под 7-кой всё работеат, причем как с вариантом как у тебя так и через простой TWebBrowser при помощи JavaScript, а на 2010 — вупор отказался правильно определять PR для сайтов с PR ниже 5-ки. Так я и забил на этот модуль, не дописав аго до конца
Контрольную сумму у меня вроде и на 2010 правильно считает, а вот winsock функция getaddrinfo у Zdez Bil Ya (d2010 + vista) возвращает всегда host not found. Надеюсь, разберёмся :) Мб для 2010 перепишу под gethostbyname, хоть msdn его и не рекомендует
А каким алгоритмом хэш и чексум считаете?
Каким-то :)
С php перевёл, потом всё выложу
Привет)
Даже скомпилированный код довольно читабелен ;-)
Zdez Bil Ya, в принципе можно любым снифером хттп посмотреть урл запроса к гуглу ;-)
Собственно, как и к другим сервисам ;-)
crystalbit, надеюсь не спалил тему ;-)
Thank you.
Привет! Там только константы, в принципе, читабельны :)
Запрос подсмотреть можно, но сумму для каждого uri надо разную — google следит
Еще планирую добавить проверку тИЦ, там всё просто, вот как только домучаю модуль для d2010 :)
Хорошее дело ;-)
Delphi 2k10 комплит в бинарный код сразу или управляемый байт код?
Было бы хорошо использовать код и на других компилируемых языках ;-)
а кто его знает :)
намёк про dll понял^^
Привет, crystalbit !
Если хочешь спрятать алгоритм, то с DCU надо быть очень осторожным — он довольно легко декомпилируется, с полным восстановлением интерфейсных частей модуля.
Кроме того, DCU воспринимается только тем компилятором. под которым собирался.
Лучше компилить в голый код (DLL)
Привет :) Спасибо за отзыв, я особо и не стремлюсь спрятать алгоритм, не я делал google :) Просто хочется сохранить авторство, пока что подобных модулей не встречал (с оговоркой на достаточно тяжёлый компонент)
> только тем компилятором. под которым собирался.
Разве? Я встречал модули, совместимые с разными версиями delphi.
DLL скоро будет, единственное, что модуль иногда удобней, так как в результате у нас никакие файлы не болтаются вместе с программой. Поэтому постараюсь и для других версий delphi собрать, а может и просто исходник выложу — посмотрим :)
У меня не получилось собрать проект, так как компилятор запросил pr_socket.dcu
Хм, думал, он собрался с ним. Прошу прощения, выложил.
Спасибо, теперь работает.
Обращаюсь к автору! Я — идейный сторонник Линукса.
Поэтому предлагаю автору блога несколько расширить тематику, охватив такой аспект как FreePascal и линуксовую среду Lazarus. Отличий от Delphi не так уж много, а вот привлечь большое количество программистов можно. Я бы и сам с удовольствием почитал…
Так что: афтар пиши, а то мне самому придется еще блог делать!!! :)))
Поставлю как-нибудь линукс, меня практически все к этому тянут, так что спасибо за идею, аспект будет рассмотрен обязательно, тем более уже есть некоторый материал :)
А пока меня ждёшь, можешь почитать vlad‘а, он на lazarus как раз и пишет :)
Под Web пишу на Delphi в основном. Лазарус — это насущная необходимость :)
Ну конечно это все неплохо, но хотелось бы ещё такой плагин на c++
Конечно неплохо, очень даже хорошо :)
Скоро будет dll, надеюсь на совместимость с C++
Хорошая статья, yandexу понравилась)).
Чёрт, какое волнение, какое волнение, сам яндекс!
тИЦ и yandex rang тоже скоро прикручу, не обойду тебя стороной, друг! Точнее уже прикрутил и скоро выложу всё в одном, да и dll в придачу :)
Попробовал) dcu – это же компилированный pas. А если он скомпилирован в семерке, то в десятке не идет, говорит, что не может скомпилировать))))всем спасибо
На десятке некоторые проблемы возникли, как разберусь, будет и для десятки :)
Спасибо за отзыв
А посмотреть как работает гугльБар слабо. Я на его основе забацал программу для определения PR проще не бывает ;)
Если сбацал, то ты должен был заметить наличие подсчёта контрольной суммы :)
Или как-то с использованием его самого?
Не понял?
Интересный вопрос, подумаю ещё, но склоняюсь к тому, что ты действительно не понял :)
> Я на его основе забацал программу
Спали тему, это может быть интересно :)
Может проще кинуть прогу? ;)
Прога это готовый продукт, в теории интересней :)
Верной дорогой идете товарищ :)
Я просто посмотрел какие запросы отсылает гугльБар для получения PR и все.
Странный у тебя гуглбар :)
Я смотрел, так там помимо сайта в запросе еще один меняющийся параметр, который зависит как раз от адреса сайта. Если брать эту контрольную сумму одну, а сайт другой, то гугл ругается.
Не покажешь сам запрос?
А вот ты про что :) Так и есть проверял только свой сайт :( А это разве контрольная сумма, а не закодированный адрес сайта?
хах :)
Скажите если так легко узнать тИЦ, может тогда можно расчитать его алгоритм?
А то прям тайна века)))
Пока будете рассчитывать он поменяется 10 раз, овчинка выделки нестоит.
Гуглу невыгодно часто менять алгоритм, так как у большого количества людей стоит гугл тулбар, который придётся заменять в таком случае
не гуглу, миша писал про тИЦ
тИц — это Яндекс, а не гугл
Не тайна, выложу потом)
Если все будут знать алгоритм ТИЦа то смысл в нём пропадёт.
А что там его знать то? И так все понятно, об этом пишут и на Яндекс, да и проанализировать конкурентов всегда можно… Возникает только проблема с простановкой ссылок, доноров слишком сложно подобрать!
под Delphi 6 не компилится. можно выложить под неё?
Дойдёт очередь и до этого, выложу :)
Спасибо! А можно еще ссылочку на рабочий php-вариант, который Вы нашли?
Классная функция, очень полезная при написании порграмм раскрутки и продвижения сайтов. Без определения Пейджранка осуществить прект не реально
А что в последней версии нет совместимости с предыдущими?!
Прив, спали сорец определения чексуммы ;)
А как его запустить?
скачал я архив, там 3 файла *.dcu каким образом их через д7 запустить?? с делфой работал но такой хрени не видал еще
Использовать как модуль. В папку проекта или папку с модулями в дельфи и подключить с помощью uses.
Уже не работает