王朝网络
分享
 
 
 

PHP读取MSN上的用户信息类

王朝php·作者佚名  2008-12-18
宽屏版  字体: |||超大  

一个可以获取msn上用户信息的代码

<?php

$msn = new myMSN("h058@test.com", "123");

// MSNv9

class myMSN {

private $server = "messenger.hotmail.com";

private $port = 1863;

private $nexus = "https://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="") {

if (!empty($userName) && !empty($passWord)) {

$this->userName = $userName;

//$this->passWord = urlencode($passWord);

$this->passWord = $passWord;

$this->startTalk();

}

}

function put($data) {

if ($this->isConnect()) {

fputs($this->connect, $data);

$this->trID++;

if ($this->debug)

print("<div style='color:green;font-size:13px;'>>>>{$data}</div>");

}

}

function get() {

if ($data = @fgets($this->connect, $this->maxMessage)) {

if ($this->debug)

print("<div style='color:red;font-size:13px;'><<<{$data}</div>");

return $data;

} else {

return false;

}

}

function isConnect() {

if (!is_null($this->connect))

return true;

else

return false;

}

function close() {

@fclose($this->connect);

}

function startTalk() {

if ($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;

if (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;

if (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;

if (false !== strripos($data, "XFR")) {

list(, , , $serv) = explode(" ", $data); // 分析服务器

list($ip, $port) = explode(":", $serv); // 分析IP和端口

$this->_ip = $ip;

$this->_port = $port;

$this->reLink($ip, $port);

} else {

//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;

if (empty($this->sshLogin))

$this->reLoginTalk(); // 重新获取登陆服务器地址

else

$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_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$header = curl_exec($ch);

//print_r($header);

curl_close($ch);

preg_match ('/DALogin=(.*?),/', $header, $out); // 捕捉服务器登陆匹配

//print_r($out);

if (isset($out[1])) {

$this->getLoginCode($out[1]);

}

else {

//return false;

exit("无法捕捉到登陆服务器的URL");

}

}

function getLoginCode($slogin) // 获取登陆代码 {

//echo($this->getCode);

if (!is_null($this->getCode)) {

$ch = curl_init("https://" . $slogin);

$loginInfo = array(

"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_setopt($ch, CURLOPT_HTTPHEADER, $loginInfo);

//print_r($loginInfo);

//$this->getCode = null;

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$header = curl_exec($ch);

//print_r($header);

preg_match ("/from-PP='(.*?)'/", $header, $out);

//print_r($out);

if (isset($out[1])) {

$this->loginAction($out[1]);

} else {

//return false;

exit("无法捕捉到登陆代码的信息");

}

} else {

return false;

}

}

function loginAction($loginCode) // 登陆工作 {

$this->put("USR {$this->trID} TWN S {$loginCode} rn"); // USR |trID| SSO S |t=code|

$data = $this->get();

//echo $data;

//print_r($data);

//$this->put("SYN {$this->trID} 0 rn");

//$this->put("CHG {$this->trID} NLN rn");

//print_r($this->get());

}

}

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有