Delphi ANTIPUBLIC - BY ХОКИ

  • Автор темы Автор темы 7.UP
  • Дата начала Дата начала

7.UP

Проверянный
Принятый Кодер
Ofline
и так всем здравствуйте
сегодня мы с вами научимся писать - мега супер, анти-паблик(будем делать, мега супер гавно)
и так для этого нам нужно
  1. delphi, у меня(delphi xe 7)
  2. ChilkatX, найдете в интернете, мне лень заливать
  3. любой хостинг куда заливать "txt" файл, я использовал ucoz
  4. кривые руки(хотя не нужно, сделаю всё за вас)
и так приступаем, создаем форму, делаем как у меня, ну или сами делайте)))
Screenshot_1.webp
и так форму сделали, начало сделано))), создаем поток, тоесть 2 потока, первый, для самого AP, второй для серверной части)))
Код:
 AntiPablic = class(TThread)
  private
    Rez: Integer;
  const
    PrivateAccount = 1;
    PublicAccount = 2;
  protected
    procedure Res;
    procedure Execute; override;
  end;

  WebThread = class(TThread)
  private
    Rez: Integer;
  const
    ServerAccount = 1;
  protected
    procedure Res;
    procedure Execute; override;
  end;
тут описывать не стал, оставил комментарий в коде))) так теперь в "var Form1" добавляем
Код:
 i: Integer;
  HTTP: TChilkatX;
  Dir, Times: String;
  PrivateFile, PublicFile: TextFile;
  AccountsList, WebList: TStringList;
теперь создаем "FormCreate" и записываем туда
Код:
  WebThread.Create(False); // запускаем поток серверной части
  AccountsList := TStringList.Create; // создаем запис базы в StringList
кликаем 2 раза по кнопки "Запустить" и записываем туды
Код:
var
  APTheard: AntiPablic; // добавляем "APTheard" дабы могли обращатся из потока
begin
  FormatSettings.TimeSeparator := '.'; // тут вроде всё понятно, делаем формат времени 19.20.09
  Times := TimeToStr(Now);
  CreateDir(ExtractFilePath(Application.ExeName) + 'Результаты'); // создаем папку "Результаты"
  CreateDir(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты [ ' + Times + ' ]'); // создаем папку в папки
  Dir := ExtractFilePath(Application.ExeName) + 'Результаты\Результаты [ ' + Times + ' ]\'; // делаем деректорию до папок наших

  if not DirectoryExists(Dir) then // проверяем существует-ли каталоги
  begin
    CreateDir(Dir); // Создаем новый каталоги, если нету
  end;
  // создаем сам тхт файл с названием "Приват комбинации" записываем по "Dir" тоесть в сюда "Результаты\Результаты"
  AssignFile(PrivateFile, Dir + '\Приват комбинации [ ' + DateToStr(Now) + ' ].txt');
  Rewrite(PrivateFile); // открываем
  CloseFile(PrivateFile); // закрываем
  // создаем сам тхт файл с названием "Паблик комбинации" записываем по "Dir" тоесть в сюда "Результаты\Результаты"
  AssignFile(publicFile, Dir + '\Паблик комбинации [ ' + DateToStr(Now) + ' ].txt');
  Rewrite(publicFile); // открываем
  CloseFile(publicFile); // закрываем
  { Запуск потоков }
  APTheard := AntiPablic.Create(true); // запуск потока
  APTheard.FreeOnTerminate := true; // уничтожитаем после выполнения
  APTheard.Priority := tpHigher; // приоритет потока
  APTheard.Resume; // запускаем поток в ручную
  Form1.sButton1.Enabled := False;
теперь кнопку "Загрузить прокси" записываем туда, тут у автора опечатка не прокси а аккаунты
Код:
 { Загружаем базу аккаунтов, записываем в BasePanel }
  If sOpenDialog1.Execute then
  AccountsList.LoadFromFile(sOpenDialog1.FileName);
  Form1.BasePanel.Caption := IntToStr(AccountsList.Count);
  Form1.sButton1.Enabled := true;
так же можно в "sOpenDialog1" в свойстве "Filter" прописать "Текстовой файл|*.txt" дабы загрузка была только .txt файлов
с этим мы с правились))), теперь перед "{$R *.dfm}" запишем
Код:
procedure SaveToFile(Str: string; Validate: Integer); // Сохранение тхт файлов
begin
  case Validate of
    1:
      begin
        Append(PrivateFile);
        Writeln(PrivateFile, Str);
        CloseFile(PrivateFile);
      end;
    2:
      begin
        Append(PublicFile);
        Writeln(PublicFile, Str);
        CloseFile(PublicFile);
      end;
  end;
end;
с этим тоже покончено, теперь поехали к потокам), первый поток, самого анти-паблика
Код:
procedure AntiPablic.Execute;  // Поток AntiPablic тобиш чтобы форма у нас не зависла
begin
  HTTP := TChilkatX.Create; // Создаем НТТР
  for i := 0 to AccountsList.Count - 1 do // Цикл, проходим от 0, до пока не закончатся количество
  begin
    HTTP.Url := 'https://Test.txt'; // Ссылка нашего сайта.
    HTTP.Get; // Оправляем Гет запрос
    if HTTP.ResultCode = 200 then // Проверяем ResultCode, если 200 то идем дальше.
    begin
      if pos(AccountsList.Strings[i], HTTP.ResultPage) <> 0 then // Проверяем на, паблик, приват, HTTP.ResultPage - это типа на подобие HTML, тоесть получаем HTML код.
      begin
        Rez := PublicAccount; // Если нашли совпадение тут "AccountsList.Strings[i], HTTP.ResultPage" то паблик.
      end
      else
      begin
        Rez := PrivateAccount; // Если же такого нету то записываем в приват.
      end;
    end;
    Synchronize(Res); // Синхронизация, дабы чтобы нас не выебали, что обращаемся к форме из потока =D
  end;
end;

procedure AntiPablic.Res; // собственно сама синхронизация
begin
  case Rez of // Rez, можно сделать на цифрах "1, 2" но мне больше через const нравится) заебали цифорки))
   PrivateAccount: // Вывод информаций в Panel
      begin // Записываем в "PrivatePanel" если нашли аккаунт, так же запись в тхт файл.
        Form1.PrivatePanel.Caption := IntToStr(StrToInt(Form1.PrivatePanel.Caption) + 1);
        Form1.BasePanel.Caption := IntToStr(StrToInt(Form1.BasePanel.Caption) - 1);
        SaveToFile(AccountsList.Strings[i], 1);
      end;
   PublicAccount: // Такая же куйня как и "PrivateAccount"
      begin // Записываем в "PublicPanel" если нашли аккаунт, так же запись в тхт файл.
        Form1.PublicPanel.Caption := IntToStr(StrToInt(Form1.PublicPanel.Caption) + 1);
        Form1.BasePanel.Caption := IntToStr(StrToInt(Form1.BasePanel.Caption) - 1);
        SaveToFile(AccountsList.Strings[i], 2);
      end;
  end;
  if StrToInt(Form1.BasePanel.Caption) = 0 then // Проверяем "BasePanel" если 0, то завершаем работу.
  begin // Выводим сообщения, очищаем
    MessageBoxW(0, PWideChar('Работа закончена'), PWideChar('BY ХОКИ'), MB_OK + MB_ICONINFORMATION);
    AccountsList.Clear;
  end;
end;
теперь серверная часть, ну тоесть вывод сколько строк в нашей бд(txt) файле
Код:
procedure WebThread.Execute; // серверная часть, тут всё так-же как и в АР
begin
  HTTP := TChilkatX.Create; // создаем HTTP
  WebList := TStringList.Create; // создаем WebList
  HTTP.Url := 'https://Test.txt'; // наша ссылка
  HTTP.Get; // Оправляем Get
  if HTTP.ResultCode = 200 then // оприделяем по "ResultCode" если 200, пиздуем дальше
  begin
    WebList.Text := HTTP.ResultPage;  // записываем в "WebList" находящееся всё из HTML
    Rez := ServerAccount; // Результат
  end;
  Synchronize(Res); // Синхронизация, чтобы не ебали и бла, бла, бла)))
  FreeAndNil(WebList); // отчищаем, в душе не ебу накуя =D
end;

procedure WebThread.Res; // собственно сама синхронизация
begin
  case Rez of
   ServerAccount: // Вывод информаций в Panel
   begin
     Form1.ServerPanel.Caption := IntToStr(WebList.Count); // тут уже "Count",
   end;
  end;
end;
на кнопку "Остановить"
Код:
  APTheard.Suspend;
вроде бы всё, мега супер анти-паблик создан(мега супер говно)
в итоги получаем
Screenshot_1.webp
тему слил с другого форума так что вопросы не ко мне по ней)))
 
Назад
Сверху Снизу