PHP模拟登录开心网

2009-06-17 09:24:19 作者:allniu 来源:www.allniu.com 浏览次数:0 网友评论 0

用php模拟登录开心网,并抓取开心网好友,allniu原创

<?php
/**
 * 模拟登陆开心网
 * @author niujiazhu
 * @version 2009-06-07
 */

//定义常量
define( "USERAGENT", $_SERVER['HTTP_USER_AGENT'] );
define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) );
define( "TIMEOUT", 10 );
class LandKaixin {
 //定义一些常用参数
 private $loginUrl = "http://www.kaixin001.com/login/login.php"; //登陆提交地址
 private $defaultUrl = "http://www.kaixin001.com/home/"; //默认主页
 private $friendUrl = "http://www.kaixin001.com/friend/index.php"; //好友页面
 private $commentUrl = "http://www.kaixin001.com/comment/post.php"; //评论提交页面
 
 function __construct($userEmail,$passWord){
  $this->checkLogin($userEmail,$passWord);
 }

 /**
  * 实现用户登陆
  *
  * @param string $userEmail 用户邮箱
  * @param string $passWord 用户密码
  * @return bool
  */

 public function checkLogin($userEmail,$passWord){
  $postargs = "email=".$userEmail."&password=".$passWord."&url='/home/'";
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$this->loginUrl);
  curl_setopt($ch,CURLOPT_POST,TRUE);  //提交post请求
  curl_setopt($ch,CURLOPT_POSTFIELDS,$postargs);  //数据字符串
  curl_setopt($ch,CURLOPT_HEADER,TRUE);  //把一个头包含在输出中
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);  //???
  curl_setopt($ch, CURLOPT_USERAGENT,USERAGENT); //在HTTP请求中包含一个”user-agent”头的字符串
  curl_setopt($ch,CURLOPT_COOKIEJAR,COOKIEJAR); 
  curl_setopt($ch,CURLOPT_TIMEOUT,TIMEOUT);
  ob_start();
  curl_exec($ch);
  $result = ob_get_contents();
  ob_end_clean();
  curl_close($ch);
  if ( $result != ''){
   return FALSE;
  }else {
   return TRUE;
  }
 }
 
 /**
  * 获得页面的内容
  *
  * @param unknown_type $userName
  * @param unknown_type $passWord
  * @param unknown_type $requestUrl
  * @return unknown
  */
 function getContent($requestUrl){
  if (empty($requestUrl)) $requestUrl = $this->defaultUrl;
  $ch = curl_init( );
  curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
  curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
  curl_setopt( $ch, CURLOPT_URL, $requestUrl );
  curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
  ob_start( );
  curl_exec( $ch );
  $contents = ob_get_contents( );
  ob_end_clean( );
  curl_close( $ch );
  return $contents;
 }
 
 /**
  * 获得用户好友信息
  *@param int $dataType 0:超链接 1:好友id 2:好友名
  * @return array
  */
 public function getFriend($dataType =0){
  $friendInfo = array();
  $result = array();
  $content = $this->getContent($this->friendUrl);
  preg_match_all('/<a\s+href="\/home\/\?uid=(\d+)"\s+class="sl"+\s*>(.*?)<\/a>/is',$content,$friendInfo,PREG_PATTERN_ORDER);
  if($dataType == 0 || empty($dataType)){
   $result = $friendInfo[0];
  }elseif ($dataType == 2 ){
   $result = $friendInfo[1];
  }else{
   $result = $friendInfo[2];
  }
  return $result;
 }
}
$kaixin = new LandKaixin("帐号","密码");
$friends = $kaixin->getFriend();
var_dump($friends);

?>

相关文章

[错误报告] [收藏] [打印] [关闭] [返回顶部]

最新图片文章

最新文章