WMCollector - сборщик WM бонусов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 0rs, 27 Oct 2009.

  1. 0rs

    0rs Member

    Joined:
    30 Dec 2008
    Messages:
    70
    Likes Received:
    23
    Reputations:
    3
    WMCollector​

    Сборщик WMR, WMZ, WMB бонусов с различных сайтов, которые их предоставляют.
    Не стоит думать что при помощи этого можно разбогатеть, скорее поднять BL, хотя это тоже сомнительно (пока тестировал получил около 50 бонусов, а BL все 0).

    Возможности
    1. Поддержка плагинов.
    2. Работа через http или socks прокси (Библиотека для работы с http).
    3. Распознавание капчи через Cap OCR System, antigate.com (библиотека для антикапчи) или вручную.
    4. Возможность работы в автоматическом режиме (с параметром auto) - можно поставить в планировщик на ежедневное выполнение.
    Многопоточности нет, и трудно представить как она будет выглядеть при использовании плагинов, но думаю она пока и не нужна.
    Скачать можно тут: Бинарники Исходники Плагины

    Код самой программы, описывать не надо - он достаточно хорошо комментирован. Более подробно следует остановиться на написании плагинов.

    Создание плагинов
    Понадобятся:
    1. SharedTypes.pas и исходники плагина wmcasher (в качестве примера)
    2. Delphi или другой компилятор
    3. Браузер (я использовал Opera)
    4. Перехватчик 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 передается адрес страницы на которой находится форма. Таким образом алгоритм получения бонуса выглядит следующим образом:
    1. Получаем капчу и куки вместе с ней.
    2. Распознаем капчу.
    3. Посылаем в 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 именем, соответствующим их значению. Более подробное описание можно посмотреть на официальном сайте или в кэше гугла.
     
    #1 0rs, 27 Oct 2009
    Last edited: 14 Nov 2009
    4 people like this.
  2. AKYLA

    AKYLA Elder - Старейшина

    Joined:
    29 Nov 2007
    Messages:
    108
    Likes Received:
    35
    Reputations:
    6
    Спасибо за исходник, так как правильно было замечено, на этом не разбогатеешь )) но исходники пригодятся :)
     
  3. Dmitriik750

    Dmitriik750 Banned

    Joined:
    23 Jul 2009
    Messages:
    0
    Likes Received:
    3
    Reputations:
    0
    дамс... миллионы ты на этом не заработаешь)
     
  4. 0rs

    0rs Member

    Joined:
    30 Dec 2008
    Messages:
    70
    Likes Received:
    23
    Reputations:
    3
    Но и не потеряешь ничего
     
  5. Myload

    Myload Banned

    Joined:
    15 Mar 2009
    Messages:
    0
    Likes Received:
    96
    Reputations:
    6
    скачать не могу :(
    перезалейте плизз!!!:)
    с меня ++;)
     
  6. 0rs

    0rs Member

    Joined:
    30 Dec 2008
    Messages:
    70
    Likes Received:
    23
    Reputations:
    3
  7. 0rs

    0rs Member

    Joined:
    30 Dec 2008
    Messages:
    70
    Likes Received:
    23
    Reputations:
    3
    Добавил плагины:
    1. http://spasibo.kz/ (1 WMR бонус 1 раз в день)
    2. http://telemon.ru/ (1 WMR бонус 1 раз в день)
    3. Старый скрипт от miniwm.ru (2 WMR бонуса 1 раз в день)
    Обновил плагин для wmcasher.
    В архиве бинарники и исходники.
     
  8. Aqel

    Aqel New Member

    Joined:
    26 Apr 2017
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Ссылки пустые, перезалейте.
     
  9. ExQ

    ExQ Banned

    Joined:
    8 Apr 2010
    Messages:
    17
    Likes Received:
    9
    Reputations:
    0
    Теме 10 лет:D:D:D
    археолог
     
  10. Aqel

    Aqel New Member

    Joined:
    26 Apr 2017
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Люблю копаться в истории, ибо много полезно можно найти/узнать для будущего... Можно сказать, что я сетевой археолог/поисковик.
    :)