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


Posted in PHP onJanuary 16, 2012
/** 
* 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 相关文章推荐
example2.php
Oct 09 PHP
两种php调用Java对象的方法
Oct 09 PHP
php&java(一)
Oct 09 PHP
php mysql索引问题
Jun 07 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
基于MySQL体系结构的分析
May 02 PHP
php之Memcache学习笔记
Jun 17 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php实现微信扫码支付
Mar 26 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
php 阴历-农历-转换类代码
Jan 16 #PHP
yii框架中的Url生产问题小结
Jan 16 #PHP
fgetcvs在linux的问题
Jan 15 #PHP
PHP异步调用socket实现代码
Jan 12 #PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 #PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 #PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 #PHP
You might like
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
vue filters的使用详解
2018/06/11 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
python二分法实现实例
2013/11/21 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python 绘制可视化折线图
2020/07/22 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
Unix如何添加新的用户
2014/08/20 面试题
《猴子种树》教学反思
2014/02/14 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python