Ofline
и так всем здравствуйте
сегодня мы с вами научимся писать - мега супер, анти-паблик(будем делать, мега супер гавно)
и так для этого нам нужно

и так форму сделали, начало сделано))), создаем поток, тоесть 2 потока, первый, для самого AP, второй для серверной части)))
тут описывать не стал, оставил комментарий в коде))) так теперь в "var Form1" добавляем
теперь создаем "FormCreate" и записываем туда
кликаем 2 раза по кнопки "Запустить" и записываем туды
теперь кнопку "Загрузить прокси" записываем туда, тут у автора опечатка не прокси а аккаунты
так же можно в "sOpenDialog1" в свойстве "Filter" прописать "Текстовой файл|*.txt" дабы загрузка была только .txt файлов
с этим мы с правились))), теперь перед "{$R *.dfm}" запишем
с этим тоже покончено, теперь поехали к потокам), первый поток, самого анти-паблика
теперь серверная часть, ну тоесть вывод сколько строк в нашей бд(txt) файле
на кнопку "Остановить"
вроде бы всё, мега супер анти-паблик создан(мега супер говно)
в итоги получаем

тему слил с другого форума так что вопросы не ко мне по ней)))
сегодня мы с вами научимся писать - мега супер, анти-паблик(будем делать, мега супер гавно)
и так для этого нам нужно
- delphi, у меня(delphi xe 7)
- ChilkatX, найдете в интернете, мне лень заливать
- любой хостинг куда заливать "txt" файл, я использовал ucoz
- кривые руки(хотя не нужно, сделаю всё за вас)

и так форму сделали, начало сделано))), создаем поток, тоесть 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;
Код:
i: Integer;
HTTP: TChilkatX;
Dir, Times: String;
PrivateFile, PublicFile: TextFile;
AccountsList, WebList: TStringList;
Код:
WebThread.Create(False); // запускаем поток серверной части
AccountsList := TStringList.Create; // создаем запис базы в StringList
Код:
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;
с этим мы с правились))), теперь перед "{$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;
Код:
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;
в итоги получаем

тему слил с другого форума так что вопросы не ко мне по ней)))