php读取msn上的用户信息类
<?php >>>{$data} "); } } function get() { if ($data = @fgets($this->connect,$this->maxMessage)) { if ($this->debug) print(" <<<{$data} "); 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,CURLOPT_FOLLOWLOCATION,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,1); $header = curl_exec($ch); //print_r($header); preg_match ("/from-PP='(.?)'/",$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()); } } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |