如何用Perl去与msn服务器通信
我在网上找到一个很久以前的Perl文件,但是输出只有911 4,好像是错误信息,不知道根据最近的协议怎么去改,有高手帮忙一下哈,谢谢啦。
#!/usr/bin/perl
use strict;
use Net::Telnet;
#my ($user, $pass) = ('帳號', '密碼');
my ($user, $pass) = ('xlwszj@hotmail.com', '6786399404');
my ($str,@str,$msn);
&login;
## 登入
sub login
{
$msn = new Net::Telnet( Timeout => 5 );
$msn->open(host => 'messenger.hotmail.com', port => 1863);
&do_cmd("VER 1 MSNP8 CVR0");
&do_cmd("CVR 2 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS $user");
&do_cmd("USR 3 TWN I $user");
$msn->close();
my ($ser,$port) = $str =~ /(\d+.\d+.\d+.\d+):(\d+)/;
$msn->open(host => $ser, port => $port);
&do_cmd("VER 1 MSNP8 CVR0");
&do_cmd("CVR 2 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS $user");
&do_cmd("USR 3 TWN I $user");
($str) = $str =~ /(lc.+)$/;
&ticket();
&do_cmd("USR 4 TWN S $str");
print $str;
}
sub ticket
{
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
my $req = HTTP::Request->new(GET => 'https://login.passport.com/login2.srf?lc=1033');
$req->header('Authorization' => "Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=$user,pwd=$pass,$str");
my $ua = LWP::UserAgent->new();
my $resp = $ua->request($req);
if ( $resp ->is_success()) {
$str = $resp->header('Authentication-Info');
($str) = $str =~ /from-PP='(t=.+)'/;
}
1;
}
## 下指令
sub do_cmd
{
$msn->print($_[0]);
$str = $msn->getline();
return $str;
}
## 前置字串
sub prefix
{
return unpack("A3",$str);
}