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

 更新时间:2012年01月16日 22:55:21   作者:  
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.');
}
}

相关文章

  • PHP获取特殊时间戳的方法整理

    PHP获取特殊时间戳的方法整理

    时间在我们日常的代码编写中会是经常出现的筛选或排序条件,尤其是一些特殊时间节点的时间显得尤为突出。今天对部分相对简便的方法进行了部分整理,需要的可以参考一下
    2023-01-01
  • PHP与C#分别格式化文件大小的代码

    PHP与C#分别格式化文件大小的代码

    发现了一个格式化文件大小的方法, 很帅, 很简洁, 尤其是 PHP 版的, 只需要 2 行代码
    2011-05-05
  • PHP使用OCR技术识别图片中的文字(无需接口)

    PHP使用OCR技术识别图片中的文字(无需接口)

    tesseract-ocr是一个流行的开源OCR引擎库,它使用C++编写, PHP作为一种流行的服务器端语言,也提供了一些ocr识别的库和工具,可以通过tesseract-ocr识别PDF、JPEG、GIF、PNG等格式的图像, tesseract-ocr的最大特点是它是针对多语言设计的,可以识别世界上大部分语言的文本
    2024-04-04
  • PHP实现网站应用微信登录功能详解

    PHP实现网站应用微信登录功能详解

    这篇文章主要介绍了PHP实现网站应用微信登录功能,结合实例形式详细分析了php实现微信授权登录功能的具体操作步骤与相关实现技巧,需要的朋友可以参考下
    2019-04-04
  • phpmyadmin的#1251问题

    phpmyadmin的#1251问题

    phpmyadmin的#1251问题...
    2006-11-11
  • Mysql中limit的用法方法详解与注意事项

    Mysql中limit的用法方法详解与注意事项

    mysql的数据一般都是用limit控制数量,它的使用方法也是需要注意的。
    2008-04-04
  • 关于php 高并发解决的一点思路

    关于php 高并发解决的一点思路

    涉及抢购、秒杀、抽奖、抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢,我的思路如下
    2017-04-04
  • PHP使用CURL实现下载文件功能示例

    PHP使用CURL实现下载文件功能示例

    这篇文章主要介绍了PHP使用CURL实现下载文件功能,结合具体实例形式分析了php基于curl的文件下载实现技巧,代码注释有详细的功能说明,并附带了curl参数的功能讲解,需要的朋友可以参考下
    2019-06-06
  • PHP二分查找算法示例【递归与非递归方法】

    PHP二分查找算法示例【递归与非递归方法】

    这篇文章主要介绍了PHP二分查找算法,结合实例形式分析了php基于递归与非递归方法实现二分查找的具体操作技巧,需要的朋友可以参考下
    2016-09-09
  • PHP FileSystem 文件系统常用api整理总结

    PHP FileSystem 文件系统常用api整理总结

    这篇文章主要介绍了PHP FileSystem 文件系统常用api,结合实例形式整理总结了php文件系统常用函数的功能、使用技巧与相关操作注意事项,需要的朋友可以参考下
    2019-07-07

最新评论