php利用CURL函数登入163邮箱并获取自己的通讯录

作者:袖梨 2022-06-24

学习äºä¸äºCURLçåºç¡ç¥è¯å¹¶åäºè¿ä¸ªç¤ºä¾ï¼å³äºCURLçç¥è¯å¯ä»¥ä»phpçå®ç½ä¸æ¥çï¼ç¹å»æ¥çã
示ä¾ä»£ç è°è¯æ¹å¼ï¼æ$userNameå$passwordæ¢æèªå·±163é®ç®±çç¨æ·ååå¯ç å³å¯ã
注æï¼ç¨æ·ååå¯ç ä¸å®è¦æ­£ç¡®ï¼å¦åæ¥éï¼æ²¡æå容éå¤çã

示ä¾ä»£ç å¦ä¸ï¼

代ç å¦ä¸ å¤å¶ä»£ç 

<?php
//==================è´¦å·ä¿¡æ¯==================
//ç¨æ·å
$userName = 'xxxxxxxx';
//å¯ç 
$password = 'xxxxxxxx';
//é®ç®±
$email = $userName . '@163.com';
//==================ç»å½==================
//ç»å½å°å(ç»å½å°å并䏿¯form表å设置çå°åï¼éè¿jsä¿®æ¹äºformçaction屿§ï¼éè¦æ¥çç»å½é¡µé¢æºç æè½åç°)
$loginUrl = "https://ssl.mail.163.com/entry/coremail/fcg/ntesdoor2?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=mail163&net=n&style=-1&race=-2_56_-2_hz&uid={$email}";
//ç»å½æ¶åéçpostæ°æ®(æ¥çform表åï¼æ³¨ææéèå)
$postArray = array(
"url2" => "http://mail.**16*3.com/errorpage/error163.htm",
"savelogin" => 0, "username" => trim($userName), "password" => $password,
);
$postString = '';
foreach($postArray as $key => $value){
$postString .= "{$key}={$value}&";
}
$postString = trim($postString, '&');
//åå§åCURL对象
$curl = curl_init();
//设置请æ±å°å
curl_setopt($curl, CURLOPT_URL, $loginUrl);
//ç¦ç¨åCURLå°ç»æ­¢ä»æå¡ç«¯è¿è¡éªè¯
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
//å¯ç¨æ¶å°è·åçä¿¡æ¯ä»¥æä»¶æµçå½¢å¼è¿åï¼è䏿¯ç´æ¥è¾åº
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
//å¯ç¨æ¶ä¼å°å¤´æä»¶çä¿¡æ¯ä½ä¸ºæ°æ®æµè¾åº
curl_setopt($curl, CURLOPT_HEADER, TRUE);
//设置POSTåæ°
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postString);
//æ§è¡ç»å®çCURLä¼è¯
//æåæ¶è¿å TRUEï¼å¤±è´¥æ¶è¿å FALSE
//ç¶èï¼å¦æ CURLOPT_RETURNTRANSFERé项被设置ï¼å½æ°æ§è¡æåæ¶ä¼è¿åæ§è¡çç»æï¼å¤±è´¥æ¶è¿å FALSE
$html = curl_exec($curl);
//æè·åå°çæ°æ®åå¥æä»¶ä¸­ä»¥ä¾¿æ¥ç
//file_put_contents('temp1.txt', $html);
//åå²å¤´æä»¶åå容
list($head, $content) = explode("ï¼¼rï¼¼nï¼¼rï¼¼n", $html, 2);
//æè·åå°çæ°æ®åå¥æä»¶ä¸­ä»¥ä¾¿æ¥ç
//file_put_contents('temp2.txt', $head);
//file_put_contents('temp3.txt', $content);
$head = explode("ï¼¼rï¼¼n", $head);
//è·åcookieä¿¡æ¯
$cookieString = '';
foreach ($head as $value){
if(stripos($value, "Set-Cookie: ") !== false){
$cookieString .= str_replace("Set-Cookie: ", "", $value);
}
}
//ä»contentéåæåºsidå¼(读åé讯å½ä¿¡æ¯çåæ°)
$startString = 'top.location.href = "';
$endString = '";';
$start = strpos($content, $startString);
$end = strpos($content, $endString);
$tempUrl = substr($content, $start + strlen($startString), $end - $start - strlen($startString));
$tempUrlVals = parse_url($tempUrl);
parse_str($tempUrlVals['query'], $queryVals);
$sid = $queryVals['sid'];
//==================读åé®ç®±==================
//读åé®ç®±å°å
$readUrl = "http://twebmail.m*ail.*16*3.com/contacts/call.do?uid={$email}&sid={$sid}&from=webmail&cmd=newapi.getContacts&vcardver=3.0&ctype=all&attachinfos=yellowpage";
//设置请æ±å°å
curl_setopt($curl, CURLOPT_URL, $readUrl);
//设置POSTåæ°
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'order=[{"field":"N","desc":"false"}]');
//注æè¿éè¦è®¾ç½®ä»ç»å½æä½ä¸­è·åçcookie
curl_setopt($curl, CURLOPT_COOKIE, $cookieString);
//ç¦ç¨å¤´æä»¶è¾åº
curl_setopt($curl, CURLOPT_HEADER, FALSE);
//æ§è¡ç»å®çCURLä¼è¯
//æåæ¶è¿å TRUEï¼å¤±è´¥æ¶è¿å FALSE
//ç¶èï¼å¦æ CURLOPT_RETURNTRANSFERé项被设置ï¼å½æ°æ§è¡æåæ¶ä¼è¿åæ§è¡çç»æï¼å¤±è´¥æ¶è¿å FALSE
$content = curl_exec($curl);
//æè·åå°çæ°æ®åå¥æä»¶ä¸­ä»¥ä¾¿æ¥ç
//file_put_contents('temp4.txt', $content);
//å³é­ä¸ä¸ªCURLä¼è¯ï¼å¹¶éæ¾èµæº
curl_close($curl);
echo '

';
print_r(json_decode($content, true));
echo '
';

ä¾å­äºï¼è¿ä¸ªæ´é«çº§ä¸äºå¯ä»¥è¾å¥ä¿¡æ¯

代ç å¦ä¸ å¤å¶ä»£ç 




ç»é163é®ç®±



ç¨æ·åï¼
å¯ç ï¼



mail.php

代ç å¦ä¸ å¤å¶ä»£ç 

<?php
define("COOKIEJAR",ini_get( "upload_tmp_dir" ).DIRECTORY_SEPARATOR."cookie.txt");

if( !isset($_POST['username']) || !isset($_POST['username']) ){
echo 'ERROR QUEST';
exit();
}

$username = $_POST['username'];
$pos = strrpos($username,'@');
if($pos === false){
$username .= "@163.com";
}
$password = $_POST['password'];

//ç»é163é®ç®±,è·å¾ç»éåçcookie
$options = array(
CURLOPT_URL => "https://reg.*16**3.com/logins.jsp",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => "username=".$username."&password=".$password,
CURLOPT_COOKIEJAR => COOKIEJAR,
);
curl_quest($options);

//å©ç¨ä¸ä¸æ­¥è·å¾çcookieè¿ä¸æ­¥åå¾cookie
$options2 = array(
CURLOPT_URL => "http://fm163.***163.com/coremail/fcg/ntesdoor2?verifycookie=1&lightweight=1",
CURLOPT_COOKIEFILE => COOKIEJAR,
CURLOPT_COOKIEJAR => COOKIEJAR,
);
curl_quest($options2);

//åæcookieæä»¶ï¼åå¾coremail.
$cookiefile = file_get_contents(COOKIEJAR);
preg_match('|Coremail.*?%(ï¼¼S*)|',$cookiefile,$sid);

//åéè·å¾é讯å½xml请æ±.
$postStr3 = '<?xml version="1.0"?>pab:searchContacts >FN >trueuser:getSignatures >pab:getAllGroups';
$options3 = array(
CURLOPT_URL => 'http://eg1a120.m*ail*.*163.com/a/s?sid='.$sid[1].'&func=global:sequential',
CURLOPT_HTTPHEADER => array('Content-Type: application/xml'),
CURLOPT_POST => 1,
CURLOPT_COOKIEFILE => COOKIEJAR,
CURLOPT_POSTFIELDS => $postStr3,
CURLOPT_REFERER => 'http://eg1a120.*mai*l.*163.com/a/f/js3/0811050934/index_v12.htm',
);
$mailsxml = curl_quest($options3,true);

//è¾åºè·å¾çé讯å½xml
header("Content-Type: application/xml");
echo $mailsxml;

function curl_quest($ops,$return = false){
$ch = curl_init();
curl_setopt_array($ch,$ops);
ob_start( );
curl_exec($ch);
if($return){
$content=ob_get_contents();
}
curl_close($ch);
ob_end_clean();
if($return){
return $content;
}
}

?>

相关文章

精彩推荐