设为首页收藏本站
查看: 138|回复: 0

[PHP] PHP获取163、sina、sohu、yahoo、126、gmail、tom邮箱联系人地址-PHP源码

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2018-7-17 00:37:00 | 显示全部楼层 |阅读模式
    [ol]
  • /**
  • * @file class.126http.php
  • * 获得126邮箱通讯录列表
  • * @author jvones http://www.jvones.com/blog
  • * @date 2009-09-26
  • **/
  •   
  • class http126
  • {
  •   
  • private function login($username, $password)
  • {  
  • //第一步:初步登陆
  • $COOKIEs = array();
  • $ch = curl_init();
  • curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  •   
  • curl_setopt($ch, CURLOPT_URL, "https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifyCOOKIE%3D1%26language%3D0%26style%3D-1");
  • curl_setopt($ch, CURLOPT_POST, 1);
  • curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."@126.com&password=".$password);
  •   
  • curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
  • curl_setopt($ch,CURLOPT_HEADER,1);  
  • curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  • $str = curl_exec($ch);  
  • //file_put_contents('./126result.txt', $str);  
  • curl_close($ch);
  •   
  • //获取redirect_url跳转地址,可以从126result.txt中查看,通过正则在$str返回流中匹配该地址
  • preg_match("/replace("(.*?)");/", $str, $mtitle);
  • $_url1 = $mtitle[1];
  •   
  • //file_put_contents('./126resulturl.txt', $redirect_url);  
  • //第二步:再次跳转到到上面$_url1
  • $ch = curl_init($_url1);  
  •   
  • curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  • curl_setopt($ch,CURLOPT_COOKIEFILE,COOKIEJAR);
  • curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);  
  • curl_setopt($ch,CURLOPT_HEADER,1);  
  • $str2 = curl_exec($ch);
  • curl_close($ch);
  •   
  • if (strpos($contents, "安全退出") !== false)
  • {  
  • return 0;
  • }  
  • return 1;
  • }
  •   
  • /**
  • * 获取邮箱通讯录-地址
  • * @param $user
  • * @param $password
  • * @param $result
  • * @return array
  • */
  • public function getAddressList($username, $password)
  • {  
  • if (!$this->login($username, $password))
  • {
  • return 0;
  • }
  •   
  • $header = $this->_getheader($username);
  • if (!$header['sid'])
  • {
  • return 0;
  • }
  •   
  • //测试找出sid(很重要)和host
  • //file_put_contents('./host.txt', $header['host']);
  • //file_put_contents('./sid.txt', $header['sid']);
  •   
  • //开始进入模拟抓取
  • $ch = curl_init();
  • curl_setopt($ch, CURLOPT_URL, "http://".$header['host']."/a/s?sid=".$header['sid']."&func=global:sequential");
  • curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
  • curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml"));
  • $str = "";
  • curl_setopt($ch, CURLOPT_POST, 1);
  • curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
  • curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
  • ob_start();
  • curl_exec($ch);
  • $cOntents= ob_get_contents();
  •   
  • ob_end_clean();
  • curl_close($ch);
  •   
  • //get mail list from the page information username && emailaddress
  • preg_match_all("/(.*)/Umsi",$contents,$mails);
  • preg_match_all("/(.*)/Umsi",$contents,$names);
  • $users = array();
  • foreach($names[1] as $k=>$user)
  • {
  • //$user = iconv($user,'utf-8','gb2312');
  • $users[$mails[1][$k]] = $user;
  • }
  • if (!$users)
  • {
  • return '您的邮箱中尚未有联系人';
  • }  
  •   
  • return $users;
  • }
  •   
  • /**
  • * Get Header info
  • */
  • private function _getheader($username)
  • {
  • $ch = curl_init();
  • curl_setopt($ch, CURLOPT_URL, "http://entry.mail.126.com/cgi/ntesdoor?hid=10010102&lightweight=1&verifyCOOKIE=1&language=0&style=-1&username=".$username."@126.com");
  • curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); //当前使用的COOKIE
  • curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); //服务器返回的新COOKIE
  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  • curl_setopt($ch, CURLOPT_HEADER, true);
  • curl_setopt($ch, CURLOPT_NOBODY, true);
  • $cOntent=curl_exec($ch);
  •   
  • preg_match_all('/Location:s*(.*?)rn/i',$content,$regs);
  • $refer = $regs[1][0];
  • preg_match_all('/http://(.*?)//i',$refer,$regs);  
  • $host = $regs[1][0];
  • preg_match_all("/sid=(.*)/i",$refer,$regs);
  • $sid = $regs[1][0];
  •   
  • curl_close($ch);
  • return array('sid'=>$sid,'refer'=>$refer,'host'=>$host);
  • }
  • }
  •   
  • ?> [/ol]
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表