首頁  >  文章  >  php教程  >  php curl 登入163信箱並抓取信箱好友清單的程式碼(經測試)

php curl 登入163信箱並抓取信箱好友清單的程式碼(經測試)

高洛峰
高洛峰原創
2016-12-30 10:20:362332瀏覽

CURL技術說白了就是模擬瀏覽器的動作實現頁面抓取或表單提交,透過此技術可以實現許多有去的功能。

<?php 
error_reporting(0); 
//邮箱用户名(不带@163.com后缀的) 
$user = &#39;papatata_test&#39;; 
//邮箱密码 
$pass = &#39;000000&#39;; 
//目标邮箱 
//$mail_addr = uenucom@163.com&#39;; 
//登陆 
$url = &#39;http://reg.163.com/logins.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1&#39;; 
$ch = curl_init($url); 
//创建一个用于存放cookie信息的临时文件 
$cookie = tempnam(&#39;.&#39;,&#39;~&#39;); 
$referer_login = &#39;http://mail.163.com&#39;; 
//返回结果存放在变量中,而不是默认的直接输出 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_REFERER, $referer_login); 
$fields_post = array( 
&#39;username&#39;=> $user, 
&#39;password&#39;=> $pass, 
&#39;verifycookie&#39;=>1, 
&#39;style&#39;=>-1, 
&#39;product&#39;=> &#39;mail163&#39;, 
&#39;selType&#39;=>-1, 
&#39;secure&#39;=>&#39;on&#39; 
); 
$headers_login = array( 
&#39;User-Agent&#39; => &#39;Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0&#39;, 
&#39;Referer&#39; => &#39;http://www.163.com&#39; 
); 
$fields_string = &#39;&#39;; 
foreach($fields_post as $key => $value) 
{ 
$fields_string .= $key . &#39;=&#39; . $value . &#39;&&#39;; 
} 
$fields_string = rtrim($fields_string , &#39;&&#39;); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
//关闭连接时,将服务器端返回的cookie保存在以下文件中 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login); 
curl_setopt($ch, CURLOPT_POST, count($fields)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
$result= curl_exec($ch); 
curl_close($ch); 
//跳转 
$url=&#39;http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=-1&username=loki_wuxi&#39;; 
$ch = curl_init($url); 
$headers = array( 
&#39;User-Agent&#39; => &#39;Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0&#39; 
); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
//将之前保存的cookie信息,一起发送到服务器端 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
$result = curl_exec($ch); 
curl_close($ch); 
//取得sid 
preg_match(&#39;/sid=[^\"].*/&#39;, $result, $location); 
$sid = substr($location[0], 4, -1); 
//file_put_contents(&#39;./result.txt&#39;, $sid); 
//通讯录地址 
$url=&#39;http://g4a30.mail.163.com/jy3/address/addrlist.jsp?sid=&#39;.$sid.&#39;&gid=all&#39;; 
$ch = curl_init($url); 
$headers = array( 
&#39;User-Agent&#39; => &#39;Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0&#39; 
); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
$result = curl_exec($ch); 
curl_close($ch); 
//file_put_contents(&#39;./result.txt&#39;, $result); 
unlink($cookie); 
//开始抓取内容 
preg_match_all(&#39;/<td class="Ibx_Td_addrName"><a[^>]*>(.*?)<\/a><\/td><td class="Ibx_Td_addrEmail"><a[^>]*>(.*?)<\/a><\/td>/i&#39;, $result,$infos,PREG_SET_ORDER); 
//1:姓名2:邮箱 
print_r($infos); 
?>

更多php curl 登入163郵箱並抓取郵件信箱好友清單的程式碼(經測試)相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn