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实现上传图片文件代码

    php实现上传图片文件代码

    在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一。值得高兴的是,在PHP中实现文件上传功能要比在Java、C#等语言中简单得多。下面我们结合具体的代码实例来详细介绍如何通过PHP实现文件上传和多文件上传功能。
    2015-07-07
  • PHP Mysqli 常用代码集合

    PHP Mysqli 常用代码集合

    这篇文章主要介绍了PHP Mysqli 常用代码集合,想要使用php mysqli的朋友可以参考下
    2016-11-11
  • PHP记录页面停留时间的方法

    PHP记录页面停留时间的方法

    这篇文章主要介绍了PHP记录页面停留时间的方法,涉及PHP结合js针对文件与时间的相关操作技巧,需要的朋友可以参考下
    2016-03-03
  • php ImageMagick windows下安装教程

    php ImageMagick windows下安装教程

    这篇文章主要介绍了php ImageMagick windows下安装教程,本文详细讲解了windows下安装ImageMagick的步骤、包括下载、安装、扩展安装、测试等步骤,需要的朋友可以参考下
    2015-01-01
  • thinkphp中的多表关联查询的实例详解

    thinkphp中的多表关联查询的实例详解

    这篇文章主要介绍了thinkphp中的多表关联查询的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • Linux系统中为php添加pcntl扩展

    Linux系统中为php添加pcntl扩展

    上篇文章我们介绍了在mac系统中为片php添加pcntl扩展插件,本文我们继续来分享下Linux系统中为php添加pcntl扩展的方法,希望小伙伴们能够喜欢
    2016-08-08
  • php二维码生成

    php二维码生成

    在二维码越来越普及之际。我们需要了解一下什么是二维码,作为了一个php programer,我们更需要知道如何使用 php生成二维码。废话少说,下面说正题。
    2015-10-10
  • PHP中如何使用Redis接管文件存储Session详解

    PHP中如何使用Redis接管文件存储Session详解

    这篇文章主要给大家介绍了关于在PHP中如何使用Redis接管文件存储Session的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • php文件操作之小型留言本实例

    php文件操作之小型留言本实例

    这篇文章主要介绍了php文件操作之小型留言本,实例分析了php基于文件实现的留言本功能,需要的朋友可以参考下
    2015-06-06
  • 一篇入门的php Class 文章

    一篇入门的php Class 文章

    一篇入门的php Class 文章...
    2007-04-04

最新评论