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

  #54  
Старый 18.10.2013, 20:50
neocube_kst
Новичок
Регистрация: 04.01.2013
Сообщений: 1
С нами: 7028246

Репутация: 0
По умолчанию

Цитата:
Сообщение от MiLSaN  
Скрипт рабочий. просто в маил.ру изменились ссылки, вот подправил:
Код:
#!/usr/bin/perl 

use LWP::UserAgent;
use HTTP::Cookies;

################# Config ###############

my $email = 'login@mail.ru';
my $pass = 'pass';

############### End Config ##############

my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19");
my $cookie_jar = HTTP::Cookies->new();
$ua->cookie_jar($cookie_jar);

sub logg
     {
	my ($data, $file) = @_;
	open(OUT, "> ".$file);
	print OUT "$data\n";
	close(OUT);
     }

sub authorization
     {
	my ($email, $pass) = @_;

	my ($login, $domain) = $email =~ /^(.+?)@(.+?)$/;

	$cookie_jar->clear();

	my $ex = $ua->post('http://win.mail.ru/cgi-bin/auth', ['Login' => $login, 'Domain' => $domain, 'Password' => $pass]);

	if ($ex->headers_as_string() =~/Set-Cookie: Mpop=/)
	     {
		return 1;
	     }
     }

sub get_users
     {
	my $ex = $ua->post('http://e.mail.ru/agent/archive/', ['mrim_hist_password' => $pass, 'PasswordAsk' => 'on'], Referer => 'http://e.mail.ru/agent/archive/')->content();

	my @allusers = $ex =~ /class=letavtor title=\"(.+?)\"/g;

	while(1)
	     {
		my ($nextpage) = $ex =~ //;
		last if (!$nextpage);

		$ex = $ua->get('https://e.mail.ru/agent/archive?folder=500005'.$nextpage)->content();
		my @users = $ex =~ /class=letavtor title=\"(.+?)\"/g;

		foreach (@users)
		     {
			push(@allusers, $_);
		     }

	     }

	return @allusers;
     }

sub get_messages
     {
	my ($user) = @_;
	my $i = 0;
	my $ex = $ua->get('http://e.mail.ru/agent/archive?mode=1&email='.$user)->content();

	my @allmess = $ex =~/(.+?).+?(.+?).+?/gs;

	while(1)
	     {
		my ($nextpage) = $ex =~ //;
		last if (!$nextpage);

		$ex = $ua->get('https://e.mail.ru/agent/archive?folder=500005'.$nextpage)->content();
		my @mess = $ex =~/(.+?).+?(.+?).+?/gs;

		foreach (@mess)
		     {
			push(@allmess, $_);
		     }

		print "\t\tpage:".$i++."\n";

	     }

	my $arhive = '';

	while(@allmess)
	     {
		my $data = pop(@allmess);
		my $message = pop(@allmess);
		my $name = pop(@allmess);

		$arhive .= $name.' : '.$data."
\r\n".$message."

\r\n\r\n";

	     }

	logg($arhive, $user.'.txt');
	
     }

authorization($email, $pass);
my @allusers = get_users();
print "Users: ".scalar(@allusers)."\n\n\n";

foreach (@allusers)
     {
	print "\t".$_."\n";
	get_messages($_);

     }
Скрипт на данный момент работает?

Просто у меня почему то ничего не сохраняется.

Только командная строка моргнет исчезает.

Кто нибудь может мне помочь?
 
Ответить с цитированием