php登陆后获取用户信息,PHP 模拟登陆MSN并获得用户信息
一个可以获取msn上用户信息的代码
/*
* PHP100中文网,整体提供,测试通过
*/
$msn = new myMSN(php100@php100.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("
");
}
}
function get() {
if ($data = @fgets($this->connect, $this->maxMessage)) {
if ($this->debug)
print("
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://messenger.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://messenger.msn.com,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());
}
}
?>
php登陆后获取用户信息,PHP 模拟登陆MSN并获得用户信息相关推荐
- 拱拱Lite开发(3):三翼页及湘大文库下载实现(解析网页获取信息及模拟登陆)
因为没有三翼新闻及湘大文库的API,简单的方法行不通就只能绕远啦,我们这次来解析网页,嗯,是个体力活其实.因为网页HTML也是有一定格式的,所以只要网页结构不进行大的改动,我们就可以一直这样解析网页获 ...
- python登陆成功页面跳转_模拟登陆后如何获取跳转的网页?
爬取虾米音乐时,模拟登陆网页版地址https://login.xiami.com/member/login后,返回的是一串字符(包括status.jumpurl以及账号信息等),但无法获取跳转后的网页 ...
- 微信小程序+Think PHP 5 授权登陆后获取手机号
1.在我们授权登陆后会获取到用户的 sessionKey 这个是获取手机号不可分割的一部分 上代码 wxml: <button open-type="getPhoneNumber&qu ...
- winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...
之前已经介绍过了网络相关的一些基础知识了: 以及简单的网页内容抓取,用C#是如何实现的: 现在接着来介绍,以模拟登陆百度首页: 为例,说明如何通过C#模拟登陆网站. 不过,此处需要介绍一下此文前提: ...
- java 模拟登陆web系统_关于java模拟登陆WEB的问题。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- python模拟登陆抖音_抖音模拟登陆的实现
抖音爬虫-登陆参数加密 登陆参数加密 错误码 登陆成功的效果 主逻辑代码,工具方法未贴出 登陆参数加密 Python实现对应的异或操作: def encpyptwithXor(param): retu ...
- UI测试框架:playwright-python + pytest 模拟登陆后保持登录状态进行测试,避免重复登陆
playwright-python + pytest 模拟登陆后进行测试 playwright-python + pytest 模拟登陆后进行测试 1. 初始(遇到的问题) 2. 问题的解决方法 1. ...
- selenium模拟登陆豆瓣并获取cookies
验证码处理与模拟登陆豆瓣,首先我们看到豆瓣没有cookies,我们需要用程序来模拟登陆获取cookies(当前有些情况下自己手动登陆后复制粘贴cookies也能登陆),该文主要讲方法,如何用selen ...
- 豆瓣网络爬虫-java网络爬虫[验证码模拟登陆]详细介绍
目录 抓包介绍 解决验证码的思路 验证码地址拼接 爬虫实战 爬虫架构 model main 解析htmlparse 数据库操作程序db 近期,有人将本人博客,复制下来,直接上传到百度文库等平台. 本文 ...
最新文章
- 进程间通讯,临界区,互斥
- samba服务器详解
- Jdon框架开发指南
- 超简单-用协程简化你的网络请求吧,兼容你的老项目和旧的网络请求方式
- JVM、GC看这一篇就够了!
- 不是计算机专业及其相关专业,对软件编程一窍不通,能学好编程吗?
- python电脑下载安装-Python的下载安装与Python编辑器的安装
- 你一直在用的Beam Search,是否真的有效?
- 在chrome中通过getComputedStyle()获取透明度的问题
- IOS-40-测试环境与正式环境的代码通过标示符来区分
- 注意,你需要注意的使用盗版破解软件发论文存在的风险及规避方法
- 一个字等于多少字节?
- 怎样把mp4视频转换成mov格式电影
- 智商高的人都不爱说话,程序员也是如此吗?
- 淘宝如何打造承载亿级流量的首页?
- 【区块链108将】BKFUND许超逸:Token为基金管理行业带来新的空白市场机会
- HTML5 drag和drop的亲手实践
- 程序人生 - 2021浙A区域号牌限行规定(限行时间+限行路段+限行范围图)
- ledkvm切换器结构大变样:采用双滑轨设计,更易用
- 灌南县计算机中专学校,江苏省灌南中等专业学校2021年有哪些专业