Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   E-Mail (https://forum.antichat.xyz/forumdisplay.php?f=14)
-   -   Собираем спам базу с http://otvet.mail.ru/ (https://forum.antichat.xyz/showthread.php?t=195120)

Red_EYEs 10.04.2010 14:42

Собираем спам базу с http://otvet.mail.ru/
 
Кодеры с 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
- получаем уникальные отсортированные

wildshaman 10.04.2010 14:55

PS на перле многопоточные приложения писать не удобно.


Чиво? Если не умеешь - так и скажи, а не хуиту какую-то неси.

Kusto 10.04.2010 15:01

зачем так сложно? тут вроде бы все описывалось
http://forum.antichat.ru/thread167280.html
- весь код можно было уместить в одной регулярке

Red_EYEs 10.04.2010 15:06

а не заберёт ли эта регулярка текст введёный пользователями?
PS. Собственно это будет полезный текст
PS. Сменил регулярку
PS да собственно и код то сам в регулярке

Kusto 10.04.2010 15:17

как можно кодить , незная что такое регулярка?
http://forum.antichat.ru/showpost.php?p=1792606&postcount=2
там пример работы скрипта,(на ответах майлру) ну а сама регулярка
preg_match_all('/[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,}/', $text, $out);

Собирает ТОЛЬКО емайлы с заданной страници(причем в любом их виде), ну а еслиб мне потребовалось собирать и ответы я бы составил регулярку которая б выдергивала и их

P.S. Большая просьба- если выкладываете не свой софт, скрипт то указывайте источник . навеянно

Цитата:

Сообщение от Red_EYEs
а не заберёт ли эта регулярка текст введёный пользователями?


Tigger 10.04.2010 15:26

Цитата:

Сообщение от Red_EYEs
PS на перле многопоточные приложения писать не удобно.

о да!!!
Заюзать shift для прокси и для номер страниц. Потом запустить потоки в цикле. Очень трудно.
Статья ниочем, приведенный код - какашка.

Red_EYEs 10.04.2010 21:30

щас всё подругому
to Wildsman: не сильно по ресурсам различаются многопоточное приложение и приложение размноженное через fork/exec если там нет взаимосвязи между потоками.
Kusto: она собирает из сети. а не со страницы


Время: 00:19