专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » php读取文件:PHP读取MSN上的用户信息类 »正文

php读取文件:PHP读取MSN上的用户信息类

来源: 发布时间:星期一, 2009年1月12日 浏览:54次 评论:0
  个可以获取msn上用户信息代码

<?php
$msn = myMSN("[email protected]", "123");
// MSNv9
myMSN {
private $server = "messenger.hotmail.com";
private $port = 1863;
private $nexus = "http://nexus.passport.com/rdr/pprdr.asp";
private $sshLogin = "login.live.com/login2.srf"; //loginnet.passport.com/login2.srf
private $getCode = null;
private $_ip = null;
private $_port = null;
private $connect = null;
private $trID = 1;
private $maxMessage = 4096;
private $userName = null;
private $passWord = null;
private $debug = true;
function myMSN($userName="", $passWord="") {
(!empty($userName) && !empty($passWord)) {
$this->userName = $userName;
//$this->passWord = urlencode($passWord);
$this->passWord = $passWord;
$this->startTalk;
}
}
function put($data) {
($this->isConnect) {
fputs($this->connect, $data);
$this->trID;
($this->debug)
pr("<div style='color:green;font-size:13px;'>>>>{$data}</div>");
}
}
function get {
($data = @fgets($this->connect, $this->maxMessage)) {
($this->debug)
pr("<div style='color:red;font-size:13px;'><<<{$data}</div>");
$data;
} {
false;
}
}
function isConnect {
(!is_null($this->connect))
true;

false;
}
function close {
@fclose($this->connect);
}
function startTalk {
($this->connect = fsockopen($this->server, $this->port, $errno, $errstr, 2))
$this->verTalk;
}
function verTalk // MSN 协议协商 {
$this->put("VER {$this->trID} MSNP9 CVR0 rn");
$data = $this->get;
//echo $data;
(false ! strripos($data, "VER"))
$this->envTalk;
}
function envTalk // 环境协商 {
$this->put("CVR {$this->trID} 0x0409 winnt 5.0 i386 MSNMSGR 7.0.0816 MSMSGS {$this->userName} rn");
$data = $this->get;
//echo $data;
(false ! strripos($data, "CVR"))
$this->reqTalk;
}
function reqTalk // 请求确认 {
$this->put("USR {$this->trID} TWN I {$this->userName} rn");
$data = $this->get; // XFR 3 NS 207.46.107.41:1863 0 65.54.239.210:1863 XFR 3 NS 207.46.107.25:1863 U D
//echo $data;
(false ! strripos($data, "XFR")) {
list(, , , $serv) = explode(" ", $data); // 分析服务器
list($ip, $port) = explode(":", $serv); // 分析IP和端口
$this->_ip = $ip;
$this->_port = $port;
$this->reLink($ip, $port);
} {
//echo $data; // USR 3 TWN S ct=1205292058,rver=5.0.3270.0,wp=FS_40SEC_0_COMPACT,lc=1033,id=507,ru=http:%2F%2Fmessenger.msn.com,tw=0,kpp=1,kv=4,ver=2.1.6000.1,rn=1lgjBfIL,tpf=b0735e3a873dfb5e75054465196398e0
list(, , , , $this->getCode) = explode(" ", trim($data));
//echo $data;
(empty($this->sshLogin))
$this->reLoginTalk; // 重新获取登陆服务器地址

$this->getLoginCode($this->sshLogin);
}
}
function reLink($server, $port) // 重置连接 {
$this->connect = null;
$this->server = $server;
$this->port = $port;
$this->trID = 1;
$this->startTalk;
}
function reLoginTalk // 重新获取服务器地址 {
$ch = curl_init($this->nexus);
curl_opt($ch, CURLOPT_HEADER, 1);
curl_opt($ch, CURLOPT_NOBODY, 1);
curl_opt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_opt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_opt($ch, CURLOPT_RETURNTRANSFER, 1);
$header = curl_exec($ch);
//pr_r($header);
curl_close($ch);
preg_match ('/DALogin=(.*?),/', $header, $out); // 捕捉服务器登陆匹配
//pr_r($out);
(is($out[1])) {
$this->getLoginCode($out[1]);
}
{
// false;
exit("无法捕捉到登陆服务器URL");
}
}
function getLoginCode($slogin) // 获取登陆代码 {
//echo($this->getCode);
(!is_null($this->getCode)) {
$ch = curl_init("http://" . $slogin);
$loginInfo = .gif' />(
"Authorization: Passport1.4 rgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" . $this->userName . ",pwd=" . $this->passWord . "," . $this->getCode,
"Host: login.passport.com"
);
curl_opt($ch, CURLOPT_HTTPHEADER, $loginInfo);
//pr_r($loginInfo);
//$this->getCode = null;
curl_opt($ch, CURLOPT_HEADER, 1);
curl_opt($ch, CURLOPT_NOBODY, 1);
curl_opt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_opt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_opt($ch, CURLOPT_RETURNTRANSFER, 1);
$header = curl_exec($ch);
//pr_r($header);
preg_match ("/from-PP='(.*?)'/", $header, $out);
//pr_r($out);
(is($out[1])) {
$this->loginAction($out[1]);
} {
// false;
exit("无法捕捉到登陆代码信息");
}
} {
false;
}
}
function loginAction($loginCode) // 登陆工作 {
$this->put("USR {$this->trID} TWN S {$loginCode} rn"); // USR |trID| SSO S |t=code|
$data = $this->get;
//echo $data;
//pr_r($data);
//$this->put("SYN {$this->trID} 0 rn");
//$this->put("CHG {$this->trID} NLN rn");
//pr_r($this->get);
}
}
?>


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: