PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发_php教程-查字典教程网
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
发布时间:2016-12-29 来源:查字典编辑
摘要:复制代码代码如下:/***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教程学习
    热门php教程学习
    编程开发子分类