ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

MAIL.ru авторизация на perl
  #1  
Старый 17.04.2009, 19:20
Аватар для rdrule
rdrule
Новичок
Регистрация: 04.03.2009
Сообщений: 9
Провел на форуме:
279263

Репутация: 7
По умолчанию MAIL.ru авторизация на perl

Здравствуйте, подскажите в чем проблема.
Недавно начал изучать перл, и задался целью написать скрипт авторизации на MAIL.ru
вот код

Код:
#!/usr/bin/perl
use IO::Socket;
use strict;

my $login = "Логин";
my $domain = "mail.ru";
my $password = "пароль";


#STEP 1
my $hostname = "win.mail.ru";  
my $path = "/cgi-bin/login";

my $sock = new IO::Socket::INET(PeerAddr  =>$hostname,PeerPort  => 80,PeerProto => 'tcp',TimeOut   => 5); 

my $headers = "GET $path HTTP/1.0\r\n"; 
$headers .= "Host: $hostname\r\n";   
$headers .= "Connection: keep-alive\r\n\r\n";  

my $answ;
print $sock $headers; 
sysread( $sock, $answ, 4096); 

my $mrcu = '';
$answ=~ s/\w{28}/$mrcu=$&/gime;
close $sock;


#STEP 2
$path = "/cgi-bin/auth";
$sock = new IO::Socket::INET(PeerAddr  =>$hostname,PeerPort  => 80,PeerProto => 'tcp',TimeOut   => 5); 
my $data = "page=&post=&login_from=&Login=$login&Domain=$domain&Password=$password&\r\n\r\n";  

$headers = "POST $path HTTP/1.0\r\n";   
$headers .= "Host: $hostname\r\n";   
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
$headers .= "Content-Length: ".length($data)."\r\n";  
$headers .= "Cookie: mrcu=$mrcu\r\n"; 
$headers .= "Connection: Close\r\n\r\n";

print $sock ($headers.$data); 
sysread( $sock, my $answ, 4096); 

my ($mpop, $t, $location) = '';
$answ=~ s/\w{10}\:\S*/$mpop=$&/gime;chop $mpop;$answ=~ s/\w{10}\:\S*//gim;
$answ=~ s/(\w{88})/$t=$&/gime;
$mpop=~ s/\:\S{98}/$location=$&/gime;
$location=~ s/\://gim;$location="http://win.mail.ru/cgi-bin/checkcookie?id=".$location;
close $sock;

#STEP 3
$sock = new IO::Socket::INET(PeerAddr  =>$hostname,PeerPort  => 80,PeerProto => 'tcp',TimeOut   => 5); 

$headers = "GET $location HTTP/1.1\r\n"; 
$headers .= "Host: $hostname\r\n";   
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
$headers .= "Cookie: mrcu=$mrcu; Mpop=$mpop; t=$t]\r\n"; 
$headers .= "Connection: keep-alive\r\n\r\n";  

print $sock ($headers.$data); 
sysread( $sock, my $answ, 4096); 
close $sock;

#STEP 4
$hostname = "win.mail.ru";  
$path = "http://win.mail.ru/cgi-bin/start?back=1"; 

$sock = new IO::Socket::INET(PeerAddr  =>$hostname,PeerPort  => 80,PeerProto => 'tcp',TimeOut   => 20); 

$headers = "GET $path HTTP/1.1\r\n"; 
$headers .= "Host: $hostname\r\n";   
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
$headers .= "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n"; 
$headers .= "Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"; 
$headers .= "Cookie: mrcu=$mrcu; Mpop=$mpop; t=$t\r\n"; 
$headers .= "Connection: keep-alive\r\n\r\n";

print $sock ($headers.$data); 
sysread( $sock, my $main, 80000); 

print $main;
Авторизация, как я понял, проходит в 4 этапа:
1)при входе на сайт нам дают "печеньку" $mrcu
2)потом идет авторизация, и нам дают еще $mpop и $t
3)идет редирект на проверку кукисов
4)сам вход на мейл

проблема заключаеться в том, что после 4го шага скрипт не грузит полность страничку, а только заголовки+1 ява скрипт

подскажите что не так и поправьте код пожалуйста
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ