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 相关文章推荐
php 页面执行时间计算代码
Dec 04 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
PHP常用技巧汇总
Mar 04 PHP
CI配置多数据库访问的方法
Mar 28 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
基于PHP的微信公众号的开发流程详解
Aug 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
用在PHP里的JS打印函数
2006/10/09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
python中去空格函数的用法
2014/08/21 Python
Python之列表实现栈的工作功能
2019/01/28 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Python之指数与E记法的区别详解
2019/11/21 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
给客户的道歉信
2014/01/13 职场文书
留学顾问岗位职责
2014/04/14 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
人事专员岗位职责
2015/02/03 职场文书
总经理检讨书范文
2015/02/16 职场文书
美术教师求职信范文
2015/03/20 职场文书
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js