手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
摘要:复制代码代码如下:/***CURL请求*@paramString$url请求地址*@paramArray$data请求数据*/functio...

复制代码 代码如下:

/**

* 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 CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发】相关文章:

PHP整合PayPal支付

利用Yahoo! Search API开发自已的搜索引擎-php版

深入了解php4(2)--重访过去

PHP4之真OO

将PHP作为Shell脚本语言使用

经典PHP加密解密函数Authcode()修复版代码

PHP如何透过ODBC来存取数据库

typecho插件编写教程(四):插件挂载

php获取访问者IP地址汇总

用IE远程创建Mysql数据库的简易程序

精品推荐
分类导航