PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发

 更新时间:2012年01月16日 22:55:21   作者:  
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发,需要的朋友可以参考下。
复制代码 代码如下:

/**
* CURL请求
* @param String $url 请求地址
* @param Array $data 请求数据
*/
function curlRequest($url,$data='',$cookieFile=''){
$ch = curl_init();
$option = array(
CURLOPT_URL => $url,
CURLOPT_HEADER =>0,
CURLOPT_RETURNTRANSFER => 1,
);
if($cookieFile){
$option[CURLOPT_COOKIEJAR] = $cookieFile;
$option[CURLOPT_COOKIEFILE] = $cookieFile;
//$option[CURLOPT_COOKIESESSION] = true;
//$option[CURLOPT_COOKIE] = 'prov=42;city=1';
}
if($data){
$option[CURLOPT_POST] = 1;
$option[CURLOPT_POSTFIELDS] = $data;
}
curl_setopt_array($ch,$option);
$response = curl_exec($ch);
if(curl_errno($ch) > 0){
throw_exception("CURL ERROR:$url ".curl_error($ch));
}
curl_close($ch);
return $response;
}
function login($username,$password){
if($username && $password){
$preLoginData = curlRequest('http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su='.base64_encode($username).'&client=ssologin.js(v1.3.16)','',self::COOKIE_FILE);
preg_match('/sinaSSOController.preloginCallBack\((.*)\)/',$preLoginData,$preArr);
$jsonArr = json_decode($preArr[1],true);
if(is_array($jsonArr)){
$postArr = array(
'entry' => 'weibo',
'gateway' => 1,
'from' => '',
'savestate' => 7,
'useticket' => 1,
'ssosimplelogin' => 1,
'su' => base64_encode(urlencode($username)),
'service' => 'miniblog',
'servertime' => $jsonArr['servertime'],
'nonce' => $jsonArr['nonce'],
'pwencode' => 'wsse',
'sp' => sha1(sha1(sha1($password)).$jsonArr['servertime'].$jsonArr['nonce']),
'encoding' => 'UTF-8',
'url' => 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype' => 'META'
);
$loginData = curlRequest('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16)',$postArr,self::COOKIE_FILE);
if($loginData){
$matchs = array();
preg_match('/replace\(\'(.*?)\'\)/',$loginData,$matchs);
$loginResult = curlRequest($matchs[1],'',self::COOKIE_FILE);
$loginResultArr = array();
preg_match('/feedBackUrlCallBack\((.*?)\)/',$loginResult,$loginResultArr);
//$userInfo = json_decode($loginResultArr[1],true);
//Log::info(var_export($loginResultArr[1]));
}else{
throw_exception('Login sina fail.');
}
}else{
throw_exception($preLoginData);
}
}else{
throw_exception('Param error.');
}
}

相关文章

  • PHP随机数 C扩展随机数

    PHP随机数 C扩展随机数

    这篇文章主要介绍了PHP随机数,C扩展随机数的相关资料,还为大家介绍了PHP唯一ID生成扩展ukey,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • php按字符无乱码截取中文的方法

    php按字符无乱码截取中文的方法

    这篇文章主要介绍了php按字符无乱码截取中文的方法,涉及php操作中英文字符串的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • PHP使用PHPExcel实现批量上传到数据库的方法

    PHP使用PHPExcel实现批量上传到数据库的方法

    下面小编就为大家带来一篇PHP使用PHPExcel实现批量上传到数据库的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • PHP+jQuery实现自动补全功能源码

    PHP+jQuery实现自动补全功能源码

    前面手工写了一个下拉自动补全功能,写的简单,只实现了鼠标选择的功能,不支持键盘选择,下面与大家分享下PHP+jQuery实现自动补全功能
    2013-05-05
  • php中Snoopy类用法实例

    php中Snoopy类用法实例

    这篇文章主要介绍了php中Snoopy类用法,实例分析了使用Snoopy类实现页面抓取的相关技巧,需要的朋友可以参考下
    2015-06-06
  • PHP使用DES进行加密与解密的方法详解

    PHP使用DES进行加密与解密的方法详解

    本篇文章是对PHP使用DES进行加密与解密的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php中神奇的fastcgi_finish_request

    php中神奇的fastcgi_finish_request

    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。
    2011-05-05
  • 判断php数组是否为索引数组的实现方法

    判断php数组是否为索引数组的实现方法

    本篇文章是对判断php数组是否为索引数组的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php中经典方法实现判断多维数组是否为空

    php中经典方法实现判断多维数组是否为空

    传统的判断数组为空 一般用count或者key 而且多维数组的话很麻烦
    2011-10-10
  • PHP number_format函数原理及实例解析

    PHP number_format函数原理及实例解析

    这篇文章主要介绍了PHP number_format函数原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论