WMCollector Сборщик WMR, WMZ, WMB бонусов с различных сайтов, которые их предоставляют. Не стоит думать что при помощи этого можно разбогатеть, скорее поднять BL, хотя это тоже сомнительно (пока тестировал получил около 50 бонусов, а BL все 0). Возможности Поддержка плагинов. Работа через http или socks прокси (Библиотека для работы с http). Распознавание капчи через Cap OCR System, antigate.com (библиотека для антикапчи) или вручную. Возможность работы в автоматическом режиме (с параметром auto) - можно поставить в планировщик на ежедневное выполнение. Многопоточности нет, и трудно представить как она будет выглядеть при использовании плагинов, но думаю она пока и не нужна. Скачать можно тут: Бинарники Исходники Плагины Код самой программы, описывать не надо - он достаточно хорошо комментирован. Более подробно следует остановиться на написании плагинов. Создание плагинов Понадобятся: SharedTypes.pas и исходники плагина wmcasher (в качестве примера) Delphi или другой компилятор Браузер (я использовал Opera) Перехватчик HTTP запросов (HTTPLook или плагин к фаерфоксу) Запускаем HTTPLook и браузер, переходим по адресу http://wmcasher.ru/. Затем находим форму получения бонуса, кликаем по капче правой кнопкой мыши и в свойствах видим ее адрес: Code: http://wmcasher.ru/captcha/?background_color=255,249,188 Посмотрим как же происходит получение капчи. Для этого нажимаем кнопку Start в HTTPLook, предварительно очистив кукисы (в Опере Инструменты\Быстрые настройки\Настройки для сайта\Cookies). Переходим по ссылке с капчей и смотрим что нам показывает HTTPLook. Запрос браузера: Code: GET /captcha/?background_color=255,249,188 HTTP/1.1 ... Ответ сервера: Code: HTTP/1.1 200 OK ... Set-Cookie: PHPSESSID=2ha93qjdiq3n260hcvq4nquor3; path=/ ... Content-Type: image/png 141 bytes skipped. Reason: The content type is not captured. В ответе сервера видно, что кроме самой картинки мы получаем еще и куки с идентификатором сессии. Именно при помощи него происходит проверка правильности введенной капчи. Теперь заполняем поля формы и нажимаем кнопку получить бонус. Смотрим что происходит в HTTPLook: Запрос: Code: GET /wmcbonus.js?bonuspurse=R123456789012&keystring=4100 HTTP/1.1 ... Referer: http://wmcasher.ru/ Cookie: PHPSESSID=2ha93qjdiq3n260hcvq4nquor3 ... Ответ: Code: HTTP/1.1 200 OK ... alert('Вы можете получить WMR бонус c этого сайта только один раз в сутки!'); ... Как видно, введенные параметры: кошелек и капча передаются в GET запросе. Кроме того браузер отправляет полученный ранее куки. В качестве Referer передается адрес страницы на которой находится форма. Таким образом алгоритм получения бонуса выглядит следующим образом: Получаем капчу и куки вместе с ней. Распознаем капчу. Посылаем в GET запросе на сервер свой кошелек и код капчи. Теперь реализуем этот алгоритм в виде плагина Code: library wmcasher; uses Windows, SharedTypes in '..\SharedTypes.pas'; const mname = 'http://wmcasher.ru/ (10 WMR бонусов 1 раз в день)'; var ModuleInfo: TModuleInfo; MF: TMainFunc; stop: Boolean; // Функция инициализации плагина вызывается при его загрузке основной программой function Initialize(MainFunc: TMainFunc): TModuleInfo; stdcall; begin // В качестве параметра мы получаем адреса функций, //которые предоставляет основная программа MF := MainFunc; // Возвращаемые значения - описание плагина ModuleInfo.Info := mname; // и тип кошелька для которого он работает ModuleInfo.wmType := mtWMR; Result := ModuleInfo; end; // Вызывается при нажатии кнопки Start // Здесть нужно реализовывать алгоритм получения бонуса procedure Run(const wm: PChar); stdcall; const // Мы можем получать бонусы не только с самого http://wmcasher.ru/ // но и с других сайтов, на которых установлена их форма (http://wmcasher.ru/bonus) // я напарсил из поисковой системы около 200 таких сайтов, // но получение бонусов ограничено только 10-15 в день referers: array [0..9] of PChar = ( 'http://xrates.ru/wiki/bonus', 'http://yamafuji.ucoz.ru/index/fajlobmenniki/0-21', 'http://yanina.org.ua/2.htm', 'http://zarabotai-babki.at.ua/index/0-32', 'http://zarabotajlegko.ucoz.ru/forum/0-0-0-36', 'http://zarabotat-dengu.narod.ru/bonusu_halyava.html', 'http://zarabotay777.ucoz.ru/index/0-4', 'http://zarabotok.dn.ua/bonus-1.php', 'http://zarabotok-vseti.ucoz.ru/gb', 'http://zhelezyaka.at.ua/news/4' ); var http: array[0..MAX_HTTP_SIZE] of Char; capsize: Integer; cap: array[0..MAX_CAPTCHA_SIZE] of Char; cookies: array[0..MAX_COOKIES_SIZE] of Char; i:Integer; begin stop := False; // Получаем бонус для каждого сайта из массива referers for i := 0 to Length(referers)-1 do begin // Выходим при нажатии кнопки Stop if stop then Exit; // Предварительно очищаем куки ZeroMemory(@cookies, MAX_COOKIES_SIZE); // Заносим в лог с какого сайта бонус MF.AddLog(PChar('wmcasher: ' + referers[i])); // Получаем капчу // В HTTPreq передаются полный URL, реферер, буфер для записи куки, // параметр POST запроса или nil если GET запрос // адрес для записи результата, необходимость получения куки // если False, то в параметр cookies будет записан куки присланный сервером, // в противном случае cookies будет использован только при отправке запроса capsize := MF.HTTPreq('http://wmcasher.ru/captcha/', referers[i], cookies, nil, @http, False); if capsize > 0 then begin // Обнуляем память для приема результата распознования ZeroMemory(@cap,MAX_CAPTCHA_SIZE); // Распознаем капчу // В качестве параметров передаются указатель на капчу, ее размер, // формат рисунка, профиль для автоматического распознования cap.exe // если капча распознается вручную передается nil // буфер для результата распознавания if MF.CapResp(@http, capsize, itPNG, 'wmcasher.ini', cap) then begin // Отправляем запрос с номером кошелька и кодом капчи MF.HTTPreq(PChar('http://wmcasher.ru/wmcbonus.js?bonuspurse=R' + wm + '&keystring=' + cap), referers[i], cookies, nil, @http, True); // Выводим в логе ответ сервера MF.AddLog(PChar('wmcasher: ' + http)); end; end else MF.AddLog(PChar('wmcasher: ' + 'Ошибка получения капчи')); end; end; // Вызывается при нажатии на кнопку Stop procedure Terminate; stdcall; begin stop := True; end; exports Initialize name 'Initialize', Run name 'Run', Terminate name 'Terminate'; begin end. Распознавание капчи В программе предусмотрена возможность распознавания капчи 3 способами: вручную, при помощи китайцев с antigate.com и программой Cap OCR System. Рассмотрим более подробно последний способ. Чтобы им можно было воспользоваться плагин должен в качестве параметра функции CapResp передать имя файла с профилем распознования. В комплекте с программой идет подробно комментированный пример wmcasher.ini. Настроек там куча (можно даже настроить на распознование кошек с рапидшары), но для простой капчи достаточно указать всего 2: Code: ;Имя каталога с литерами CatalogLetters=wmcasher_l ;Количество ожидаемых символов Letters=4 Теперь нужно создать каталог для литер, накачать различых вариантов капч, разрезать на символы (в случае wmcasher.ru цифры от 0 до 10) и сохранить их в формате bmp c именем, соответствующим их значению. Более подробное описание можно посмотреть на официальном сайте или в кэше гугла.
Спасибо за исходник, так как правильно было замечено, на этом не разбогатеешь )) но исходники пригодятся
Добавил плагины: http://spasibo.kz/ (1 WMR бонус 1 раз в день) http://telemon.ru/ (1 WMR бонус 1 раз в день) Старый скрипт от miniwm.ru (2 WMR бонуса 1 раз в день) Обновил плагин для wmcasher. В архиве бинарники и исходники.
Люблю копаться в истории, ибо много полезно можно найти/узнать для будущего... Можно сказать, что я сетевой археолог/поисковик.