<?phpdefine("COOKIEJAR", tempnam(ini_get("upload_tmp_dir"), "cookie"));   //定义COOKIES存放的路径,要有操作的权限
define("TIMEOUT", 10000); //超时设定
error_reporting(E_ALL);$msn = new mail_msn();
$res = $msn->getAddressList('email@hotmail.com', 'password');$data = json_decode($res, true);
unset($data['ic1']);        //自己的
foreach ($data as $key => $val) {if (!strstr($key, 'Template')) {$list['username'] = $val['3'];$list['email'] = $val['6'];$lists[] = $list;}
}var_dump($lists);class mail_msn {function getAddressList($username, $password) {//第一步:模拟抓取登入页面的数据,并记下cookies$cookies = array();$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_URL, "http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=" . time() . "&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=zh-cn&cbcxt=mail&snsc=1");curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$str = curl_exec($ch);curl_close($ch);//数据文件 模拟JS生成的cookie$CkTst = 'G' . time() * 1000;$wlidperf = "throughput=3&latency=948&FR=L&ST=" . (time() * 1000 + 1254);$fp = fopen(COOKIEJAR, "a+");$str_new = "login.live.com\tTRUE\t/\tFALSE\t0\tCkTst\t$CkTst\r\n";$str_new .= "login.live.com\tTRUE\t/\tFALSE\t0\twlidperf\t$wlidperf\r\n";fwrite($fp, $str_new);fclose($fp);//参数的分析$matches = array();preg_match('/<input\s*type="hidden"\s*name="PPFT"\s*id="(.*?)"\s*value="(.*?)"\s*\/>/i', $str, $matches);$PPFT = $matches[2];$type = 11;$LoginOptions = 3;$Newuser = 1;$idsbho = 1;$i2 = 1;$i12 = 1;$i3 = '562390';$i14 = '868';$i15 = '1338';$PPSX = 'Pa';//合并参数$postfiles = "login=" . $username . "&passwd=" . $password . "&type=" . $type . "&LoginOptions=" . $LoginOptions . "&Newuser=" . $Newuser . "&idsbho=" . $idsbho . "&i2=" . $i2 . "&i3=" . $i3 . "&PPFT=" . $PPFT . "&PPSX=" . $PPSX . "&i12=1&i14=$i14&i15=$i15";//第二步:开始登入$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);curl_setopt($ch, CURLOPT_URL, 'https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=11&ct=' . (time() + 5) . '&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=zh-cn&cbcxt=mail&snsc=1&bk=' . (time() + 715)); //此处的两个time()是为了模拟随机的时间curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postfiles);curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$content = curl_exec($ch);curl_close($ch);if (stripos($content, 'WLWorkflow') !== FALSE) {     //WLWorkflow登入页面JSreturn false;      //登入失败}//获取location链接$matches = array();preg_match('/window.location.replace\(\"(.*?)\"\)/i', $content, $matches);$url_contiune_1 = $matches[1]; //接下来的链接if (!$url_contiune_1) {return false;}//除去多余的COOKIE$arr_new = file(COOKIEJAR);$str_new = '';$need_arr = array(0, 1, 2, 3, 7, 9, 13, 15, 16, 17, 18, 21, 22);foreach ($arr_new as $k => $v) {if (in_array($k, $need_arr))$str_new .= "$v";}$fp = fopen(COOKIEJAR, "w+");fwrite($fp, $str_new);fclose($fp);//第三步: 进入引导页面$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);curl_setopt($ch, CURLOPT_URL, $url_contiune_1);curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$content_2 = curl_exec($ch);//echo $postfiles;curl_close($ch);//获取redicturl链接$matches = array();preg_match('/<a\s*href=\"(.*?)\"\s*>/i', $content_2, $matches);$url_contiune_2 = $matches[1]; //接下来的链接if (!$url_contiune_2) {return false;}//获取邮箱请求基址 读取host$matches = array();preg_match('/(.*?)\/\/(.*?)\/(.*?)/i', $url_contiune_2, $matches);$url_contiune_3 = trim($matches[1]) . '//' . trim($matches[2]); //首页定义的站点基址$url_4 = $url_contiune_3 . '/mail/ContactMainLight.aspx?n=435707983'; //n后面的数字是随机数if (!$url_contiune_3) {return false;}//第四步: 开始获取邮箱联系人//base  $url_4$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);curl_setopt($ch, CURLOPT_URL, $url_4);curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$str = curl_exec($ch);curl_close($ch);//分析数据 (此处的数据因为hotmail的JS处理机制,所以在页面上看不出来,源码上可以看到数据)return $this->hanlde_date($str);}function hanlde_date($data) {$new_str = array();if (!empty($data)) {$ops_start = stripos($data, 'ic_control_data');$ops_end = stripos($data, ';', $ops_start);$new_str = substr($data, $ops_start + strlen('ic_control_data = '), $ops_end - $ops_start - strlen('ic_control_data = '));return $new_str; //返回JSON对象} else {return array();}}}?>

2012年3月24 经测试可使用

转载于:https://www.cnblogs.com/ybbqg/archive/2012/03/24/2415708.html

php curl 获取 邮箱通讯录 sns(hotmail)相关推荐

  1. php 126邮箱 联系人,php curl 获取 邮箱通讯录 126

    /** * author : 郭钱 * */ error_reporting(0); define("COOKIEJAR", tempnam("./assets/tmp& ...

  2. PHP的CURL 获取邮箱地址

    CURL可谓居家旅行必备之杀人良药,为何如此形容?就是因为他好用方便能实现页面抓取模拟登录采集等一系列功能. 记得第一次接触CURL的时候是要实现完成从邮箱用户列表的抓取.当时为了赶进度没有细细研究只 ...

  3. 获取邮箱通讯录,msn好友列表的C#源码

    http://download.csdn.net/source/1172395 转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/07/29 ...

  4. 获取QQ企业邮箱通讯录PY脚本

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Last Modified time: 2016-03-03 22:45:18 # @Descript ...

  5. python程序下载腾讯企业邮箱附件_获取腾讯企业邮箱通讯录python脚本(带登录功能)...

    之前的 帖子 加入了 @ sdc1992 提供的登录部分 根据邮箱和密码,获取企业通讯录 运行后会生成两个文件 一个只包含邮箱,可以用于后续爆破 一个为部门名称 和 部门下的员工邮箱的树形结构,可以方 ...

  6. IOS获取系统通讯录联系人信息

    2019独角兽企业重金招聘Python工程师标准>>> IOS获取系统通讯录联系人信息 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统 ...

  7. 关于IOS获取本地通讯录信息(包含iOS9.0前后)

    在ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称"种子用户功能",太可怕了).对此七两总结了自己使用本 ...

  8. 使用curl获取Location:重定向后url

    在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折 ...

  9. php curl title,PHP中使用CURL获取页面title例子

    PHP中使用CURL获取页面title例子 发布于 2015-10-03 05:28:40 | 109 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

最新文章

  1. Java基础—IO流
  2. sublime配置随笔提示
  3. IDEA9+Tomcat热部署配置二法
  4. eclipse使用tomcat进行部署时编译代码不一致的处理
  5. NE5532前级音调板 带高中低音调节和音量调节
  6. 数据库切换时的一个傻逼的错误。
  7. pat 乙级 1032 挖掘机技术哪家强(C++)
  8. CakePHP中文手册【翻译】-Cake Blog创建指南
  9. JsLib组件,扩展WSH功能(新版本)
  10. Lyn for Mac v2.1 中文版 – 轻量级图片浏览器
  11. 360安卓_360手机助手安卓下载
  12. CM201-1广东移动盒子YS版(易视腾代工)TTL方式保留原系统 或不保留原系统方法
  13. 抓包工具之httpwatch的使用
  14. iOS 基于 RxSwift + Moya 搭建易测试的网络请求层
  15. android中数据统计,Android 友盟统计集成
  16. mysql ndb 关闭,监控mysql、ndb进程重启
  17. 组合逻辑设计中的毛刺现象
  18. 百家号室内设计行业粉丝数量统计(2019.12.24)
  19. 投影法快速求二叉树的三种遍历
  20. RISC-V SiFiveU64内核——L2 Prefetcher预期器

热门文章

  1. 第07课:动手实战基于 ML 的中文短文本聚类
  2. python3爬虫初探(一)之urllib.request
  3. Java TheadLocal
  4. 发布5个月全系下跌500 麒麟980+40W快充 多亏了华为P30!
  5. 小技巧:让linux程序在后台运行
  6. Java Web学习总结-文件下载
  7. OpenCV 中文wiki
  8. 双刃剑与灰色地带:“泄露数据收藏家”的素描
  9. java-基础-ArrayList剖析
  10. Linux(centos)的常用基本命令