如何用Perl去与msn服务器通信

xlwszj 2008-04-29 03:00:28
我在网上找到一个很久以前的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);
}
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlwszj 2008-05-16
  • 打赏
  • 举报
回复
原来不满意结贴,悬赏分是收不回的呀,给系统还不如给你们了,谢谢你们的关注。
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
Aylazhang 2008-04-30
  • 打赏
  • 举报
回复
关注!

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧