Red_EYEs
10.04.2010, 14:42
Кодеры с mail.ru грешат выставляя напоказ мыла пользователей. Их можно собрать с сервера ответов.
Для начала я написал универсальный сборщик мыл по url'ам
ему подаёшь файл с проксями, файл с url, выходной файл.
#!/usr/bin/perl
#(c) RED_EYEs forum.antichat.ru
#!/usr/bin/perl
use threads;
sub usage(){
print <<END
-p file with proxyies
-o output file [default stdout]
-i input file [default stdin]
-t pause between requests(seconds дробное)
-s use self
END
;
die "___";
}
use LWP::UserAgent;
use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
clock_gettime clock_getres clock_nanosleep clock
stat );
our $cc='';
my %StartKeys=(-p=>"proxys",-i=>"input",-t=>"time",-o=>"output");
our %conf=(proxys=>"",input=>"",time=>0.2,-o=>"",-s=>"");
my $i=0;
our $self;
while($i<=$#ARGV)
{
$self=1,$i++,next if($ARGV[$i] eq "-s");
usage() unless(defined $StartKeys{$ARGV[$i]});
$conf{$StartKeys{$ARGV[$i]}}=$ARGV[$i+1];
$i+=2
}
close (STDIN), open (STDIN,"<",$conf{input}) if $conf{input};
close (STDOUT),open (STDOUT,">>",$conf{output}) if $conf{output};
if ($conf{proxys}) {
open (PRX,"<",$conf{proxys});
our @proxs=<PRX>;
close(PRX)
};
# sub geturl(){
# local $z=<STDIN>;
#warn "!";
#return $z;
#}
sub MainThread($)
{
# return if(fork());
my $ua = LWP::UserAgent->new;
$zz=$_[0];
$ua->proxy(['http', 'ftp'], 'http://'.$zz.'/') if($zz);
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5");
while(<STDIN>){
my $tm=Time::HiRes::time();
my $req = HTTP::Request->new(GET => "$_") ;
my $res = $ua->request($req) or sleep(2) and next;
if ($res->is_success) {
print STDOUT $_."\n" for($res->content=~/[^A-Za-z0-9._%+-]([A-Za-z0-9._%+-]+\@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})[^A-Za-z]/gm);
}
usleep(($conf{time}+$tm-Time::HiRes::time())*1000000) if(Time::HiRes::time()-$tm<$conf{time});
}
#$_->join() for (@thrd);
#exit();
return;
}
$z=0;
for $i(@proxs)
{
$thrd[$z++]=threads->create(\&MainThread,$i);
}
MainThread('') if($self);
$_->join() for (@thrd);
Все вопросы можно получить по следующему url http://otvet.mail.ru/question/{#номер вопроса}/
perl -e 'print "http://otvet.mail.ru/question/$_/\n" for(38700000..38800000)'> ./urls.txt
их можно сгенерировать вот таким образом.
./script.pl -p ./proxy.txt -t 0.3 -i ./urls.txt > ./trash.txt - запускаем
sort -u ./trash.txt
- получаем уникальные отсортированные
Для начала я написал универсальный сборщик мыл по url'ам
ему подаёшь файл с проксями, файл с url, выходной файл.
#!/usr/bin/perl
#(c) RED_EYEs forum.antichat.ru
#!/usr/bin/perl
use threads;
sub usage(){
print <<END
-p file with proxyies
-o output file [default stdout]
-i input file [default stdin]
-t pause between requests(seconds дробное)
-s use self
END
;
die "___";
}
use LWP::UserAgent;
use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
clock_gettime clock_getres clock_nanosleep clock
stat );
our $cc='';
my %StartKeys=(-p=>"proxys",-i=>"input",-t=>"time",-o=>"output");
our %conf=(proxys=>"",input=>"",time=>0.2,-o=>"",-s=>"");
my $i=0;
our $self;
while($i<=$#ARGV)
{
$self=1,$i++,next if($ARGV[$i] eq "-s");
usage() unless(defined $StartKeys{$ARGV[$i]});
$conf{$StartKeys{$ARGV[$i]}}=$ARGV[$i+1];
$i+=2
}
close (STDIN), open (STDIN,"<",$conf{input}) if $conf{input};
close (STDOUT),open (STDOUT,">>",$conf{output}) if $conf{output};
if ($conf{proxys}) {
open (PRX,"<",$conf{proxys});
our @proxs=<PRX>;
close(PRX)
};
# sub geturl(){
# local $z=<STDIN>;
#warn "!";
#return $z;
#}
sub MainThread($)
{
# return if(fork());
my $ua = LWP::UserAgent->new;
$zz=$_[0];
$ua->proxy(['http', 'ftp'], 'http://'.$zz.'/') if($zz);
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5");
while(<STDIN>){
my $tm=Time::HiRes::time();
my $req = HTTP::Request->new(GET => "$_") ;
my $res = $ua->request($req) or sleep(2) and next;
if ($res->is_success) {
print STDOUT $_."\n" for($res->content=~/[^A-Za-z0-9._%+-]([A-Za-z0-9._%+-]+\@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})[^A-Za-z]/gm);
}
usleep(($conf{time}+$tm-Time::HiRes::time())*1000000) if(Time::HiRes::time()-$tm<$conf{time});
}
#$_->join() for (@thrd);
#exit();
return;
}
$z=0;
for $i(@proxs)
{
$thrd[$z++]=threads->create(\&MainThread,$i);
}
MainThread('') if($self);
$_->join() for (@thrd);
Все вопросы можно получить по следующему url http://otvet.mail.ru/question/{#номер вопроса}/
perl -e 'print "http://otvet.mail.ru/question/$_/\n" for(38700000..38800000)'> ./urls.txt
их можно сгенерировать вот таким образом.
./script.pl -p ./proxy.txt -t 0.3 -i ./urls.txt > ./trash.txt - запускаем
sort -u ./trash.txt
- получаем уникальные отсортированные