热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php实现邀请好友,新版php获取MSN好友列表,邀请MSN好友

*********************************************************************FileName:class.msn.ph

/********************************************************************

*   FileName: class.msn.php

*   by changwei, 2010-8-20

*   Contact MSN:  changwei0112@hotmail.com

* 获取MSN好友Email列表

*

=====================================================================

*

*   PHP配置环境要求

*   支持socket、ssl、curl,开启php.ini文件中的以下地方

* ;extension=php_sockets.dll

* ;extension=php_curl.dll

* ;extension=php_openssl.dll

*

********************************************************************/

error_reporting(7);

class msn

{

private $startcomm = 0;

private $username = '';

private $password = '';

private $commend = '';

private $domain = '';

private $socket = '';

private $challenge = '';

private $status = array();

private $data = array();

function set_account($username, $password)

{

$this->username = $username;

$this->password = $password;

}

function getData(){

$buffer="";

while (!feof($this->socket)) {

$buffer .= fread($this->socket,1024);

if (preg_match("//r/",$buffer)) {

break;

}

}

$this->checkData($buffer);

}

function getData2() {

$buffer="";

while (!feof($this->socket)) {

$buffer .= fread($this->socket,1024);

if (preg_match("//r/n/r/n/",$buffer)) {

break;

}

}

$this->checkData($buffer);

}

function checkData($buffer) {

if (preg_match("/lc/=(.+?)/Ui",$buffer,$matches)) {

$this->challenge = "lc=" . $matches[1];

}

if (preg_match("/(XFR 3 NS )([0-9/./:]+?) (.*) ([0-9/./:]+?)/is",$buffer,$matches)) {

$split = explode(":",$matches[2]);

$this->startcomm = 1;

$this->msn_connect($split[0],$split[1]);

}

if (preg_match("/tpf/=([a-zA-Z0-9]+?)/Ui",$buffer,$matches)) {

$this->nexus_connect($matches[1]);

}

$split = explode("/n",$buffer);

for ($i=0;$i

$detail = explode(" ",$split[$i]);

if ($detail[0] == "LST") {

if(isset($detail[2])) $this->data[] = array($detail[1], urldecode($detail[2]));

}

}

$this->status = array(200, $this->data);

//echo $buffer;

}

function msn_connect($server,$port) {

if ($this->socket) {

fclose($this->socket);

}

$this->socket = @fsockopen($server,$port, $errno, $errstr, 20);

if (!$this->socket) {

$this->status = array(500,'MSN验证服务器无法连接');

return false;

} else {

$this->startcomm++;

$this->send_command("VER " . $this->startcomm . " MSNP8 CVR0",1);

$this->send_command("CVR " . $this->startcomm . " 0x0409 win 4.10 i386 MSNMSGR 6.2 MSMSGS " . $this->username,1);

$this->send_command("USR " . $this->startcomm . " TWN I " . $this->username,1);

}

}

function send_command($command) {

$this->commend = $command;

$this->startcomm++;

fwrite($this->socket,$command . "/r/n");

$this->getData();

}

function nexus_connect($tpf) {

$arr[] = "GET /rdr/pprdr.asp HTTP/1.0/r/n/r/n";

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://nexus.passport.com:443/rdr/pprdr.asp");

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_VERBOSE, 0);

curl_setopt($curl, CURLOPT_HEADER,1);

curl_setopt($curl, CURLOPT_HTTPHEADER, $arr);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

$data = curl_exec($curl);

curl_close($curl);

preg_match("/DALogin=(.+?),/",$data,$matches);

if(!isset($matches[1])) return false;

$split = explode("/",$matches[1]);

$headers[0] = "GET /$split[1] HTTP/1.1/r/n";

$headers[1] = "Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" . $this->username . ",pwd=" . $this->password . ", " . trim($this->challenge) . "/r/n";

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://" . $split[0] . ":443/". $split[1]);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_VERBOSE, 0);

curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_HEADER,1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

$data = curl_exec($curl);

curl_close($curl);

preg_match("/t=(.+?)'/",$data,$matches);

if(!isset($matches[1])){

$this->status = array(404, '你输入的MSN帐号或者密码错误');

return false;

}

$this->send_command("USR " . $this->startcomm . " TWN S t=" . trim($matches[1]) . "",2);

$this->send_command("CHG " . $this->startcomm . " HDN",2);

$this->send_command("SYN " . $this->startcomm . " 0",2);

$this->getData2();

$this->send_command("SYN " . $this->startcomm . " 1 46 2",2);

$this->getData2();

$this->send_command("CHG ". $this->startcomm . " BSY");

$this->getData();

}

public function getStatus()

{

return $this->status;

}

}

$msn = new MSN;

$msn->set_account('MSN账号名', 'MSN密码');

$msn->msn_connect("messenger.hotmail.com",1863);

$data = $msn->getStatus();

print_r($data);

?>



推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 使用HTML和JavaScript实现视频截图功能
    本文介绍了如何利用HTML和JavaScript实现从远程MP4、本地摄像头及本地上传的MP4文件中截取视频帧,并展示了具体的实现步骤和示例代码。 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
author-avatar
醉酒戏紅顔X
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有