PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2015-01-24信息快讯网
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.'); } }
深入eAccelerator与memcached的区别详解
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
探讨file_get_contents与curl效率及稳定性的分析
PHP在线生成二维码(google api)的实现代码详解
CURL的学习和应用(附多线程实现)
基于PHP CURL获取邮箱地址的详解
深入php函数file_get_contents超时处理的方法详解
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
基于Discuz security.inc.php代码的深入分析
php curl的深入解析
基于curl数据采集之正则处理函数get_matches的使用
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
php 阴历-农历-转换类代码
yii框架中的Url生产问题小结
Trying to clone an uncloneable object of class Imagic的解决方法
Uncaught exception com_exception with message Failed to create COM object
比file_get_contents稳定的curl_get_contents分享
学习使用curl采集curl使用方法
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
php curl常见错误:SSL错误、bool(false)
shopex主机报错误请求解决方案(No such file or directory)
url decode problem 解决方法
php空间不支持socket但支持curl时recaptcha的用法
php获取远程图片的两种 CURL方式和sockets方式获取远程图片