<?php class Mailsina{ private $gurl=''; private function vlogin($url,$name, $ps){ //global $gurl; $cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件 $ch = curl_init($url); //初始化curl模块 $fields_post = array( 'logintype'=>'uid', 'u'=>$name, 'domain'=>'sina.com', 'psw'=>$ps, 'btnloginfree'=>'%B5%C7+%C2%BC' ); curl_setopt($ch,CURLOPT_URL,$url);//登录页地址 curl_setopt($ch, CURLOPT_POST, 1);//post方式提交 $fields_string = ''; foreach($fields_post as $key => $value) { $fields_string .= $key . '=' . $value . '&'; } $fields_string = rtrim($fields_string , '&'); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);//要提交的内容 //把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); $headers_login = array( 'Host' => 'mail.sina.com.cn', 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2', 'Accept' => 'text/javascript, text/html, application/xml', 'Accept_Language' => 'zh-cn,zh;q=0.5', 'Accept_Encoding' => 'gzip,deflate', 'Accept_Charset' => 'GB2312,utf-8;q=0.7,*;q=0.7\r\n', 'Keep-Alive' => '115', 'Connection' => 'keep-alive', 'X-Requested-With'=> 'XMLHttpRequest', 'Content_Type' => 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer' => 'http://mail.sina.com.cn/' ); //设定返回的数据是否自动显示 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设定是否显示头信息 curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login); //设定是否输出页面内容 curl_setopt($ch, CURLOPT_NOBODY, 0); $result=curl_exec ($ch); //echo $result; preg_match('/Location:[^\"].*/', $result, $location); if(empty($location)){ //exit("登录错误!"); return 0; } list($lc,$urltemp)=explode(':',$location[0],2); $this -> gurl = $urltemp; curl_close($ch); //get data after login return $cookie_jar; } //获取通讯录列表 public function getFriendList($username,$password){ $result_array = array(); $login_url = 'http://mail.sina.com.cn/cgi-bin/login.cgi'; $cookie_file = $this -> vlogin($login_url,$username,$password); //模拟登陆 if(!$cookie_file){ return $result_array; } $this -> gurl = trim($this -> gurl); $ch = curl_init($this -> gurl); $headers = array( 'Host' => 'mail3-145.sinamail.sina.com.cn', 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2' ); curl_setopt($ch, CURLOPT_URL,$this -> gurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_REFERER, 'http://mail.sina.com.cn/'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //将之前保存的cookie信息,一起发送到服务器端 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_NOBODY, 0); $result = curl_exec($ch); curl_close($ch); preg_match('/Location:[^\"].*/', $result, $location); list($lc,$urltemp)=explode(':',$location[0],2); $this -> gurl=trim($this -> gurl); $server = substr(substr($this -> gurl,strpos($this -> gurl,'//')+2),0,strpos(substr($this -> gurl,strpos($this -> gurl,'//')+2),'/')); $ch = curl_init($this -> gurl); $headers = array( 'Host' => $server, 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2' ); curl_setopt($ch, CURLOPT_URL,$this -> gurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_REFERER, 'http://mail.sina.com.cn/'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //将之前保存的cookie信息,一起发送到服务器端 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_NOBODY, 0); // echo file_get_contents($cookie_file); $result = curl_exec($ch); curl_close($ch); $url = "http://".$server."/classic/address.php?ts=".mktime()."358_1"; $ch = curl_init($url); $headers = array( 'Host' =>$server, 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2' ); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_REFERER, $this -> gurl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //将之前保存的cookie信息,一起发送到服务器端 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_NOBODY, 0); $result = curl_exec($ch); curl_close($ch); $url="http://".$server."/classic/addr_member.php"; $ch = curl_init($url); $headers = array( 'Host' => $server, 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2', 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8' ); $str ="act=list&sort_item=letter&sort_type=desc"; curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $str); curl_setopt($ch, CURLOPT_REFERER, $this -> gurl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //将之前保存的cookie信息,一起发送到服务器端 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); $result = curl_exec($ch); curl_close($ch); $result_mid[] = json_decode($result); $array = $result_mid[0]->data->contact; $return = array(); for ($i=0;$i<count($array);$i++) { $return[$array[$i]->email]=$array[$i]->name; } return $return; } function object_array($array) { if(is_object($array)) { $array = (array)$array; } if(is_array($array)) { foreach($array as $key=>$value) { $array[$key] = object_array($value); } } return $array; } } //$a=new Mailsina(); //$tmp=$a->getFriendList("8888@sina.com","password"); //var_dump($tmp); ?>