当前位置:  编程技术>php

php非接口模拟登录新浪微博的例子

    来源: 互联网  发布时间:2014-08-30

    本文导语:  php非接口模拟登录新浪微博 代码:   代码示例: define('USERNAME', 'abc@163.com');  define('PASSWORD', '123456');  //以上定义新浪微博的用户名和密码,其实可以将它们作为类的属性写到类中 //此处暂定义为常量    /**  * 模拟登...

php非接口模拟登录php汉字转码的例子 iis7站长之家微博

代码:
 

代码示例:
define('USERNAME', 'abc@163.com'); 
define('PASSWORD', '123456'); 
//以上定义新浪微博的用户名和密码,其实可以将它们作为类的属性写到类中
//此处暂定义为常量 
 
/**
 * 模拟登陆新浪微博,获取微博的短链点击统计
 */ 
class sinaCollect { 
    const COOKIE_FILE = './weibo.txt';  //定义存放cookie文件常量 
 
    /**
     * 通过用户名密码模拟登陆微博
     */ 
    public function login($username,$password){ 
        if($username && $password){ 
            $preLoginData = self::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); 
                $_SESSION['hasLoginWb'] = 1; 
                //$userInfo = json_decode($loginResultArr[1],true); 
                }else{ 
                    throw_exception('Login sina fail.'); 
                } 
            }else{ 
                throw_exception($preLoginData); 
            } 
        }else{ 
            throw_exception('Param error.'); 
        } 
    } 
 
    /**
     * 获取登陆后要抓取的页面信息
     */ 
    public function getAccountInfo($pagenum=1) { 
        return self::curlRequest('http://e.weibo.com/aj/data/enttop10?sortfield=time&sorttype=2&pagenum='.$pagenum, '', self::COOKIE_FILE); 
    }  // www.
 
    /**
* CURL请求
* @param String $url 请求地址
* @param Array $data 请求数据
*/ 
 private 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; 
    } 
    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; 


 
//开始调用 
if (!isset($_SESSION['hasLoginWb'])) { 
    sinaCollect::login(USERNAME,PASSWORD); 

代码说明:
类中getAccountInfo方法就是模拟登录成功后要获取的登录后的页面数据,得到后用正则处理即可。

>>> 更多 php模拟登录 文章,专题链接:php模拟登录 php curl模拟登录教程大全


    
 
 

您可能感兴趣的文章:

  • php新浪接口查询ip地理位置
  • php利用新浪接口查询ip获取地理位置示例
  • php利用curl抓取新浪微博内容示例
  • php字符转码解决新浪抓取资料乱码的问题
  • php根据ip调用新浪api获取城市名转拼音
  • php curl模拟登录新浪微博的例子
  • Php计算时间差 php日期转换的例子
  • php递归函数小例子
  • PHP数据流应用的简单例子
  • php递归创建目录小例子
  • php水仙花数的小例子
  • php代码审计比较有意思的例子
  • php动态生成函数的例子
  • php转换html标签小例子
  • php汉字转码的例子
  • php输入流php://input发送图片流到服务器的例子
  • php数组与对象转换小例子
  • php日期加减法运算小例子
  • PHP文件遍历小例子
  • PHP快速排序小例子 php快速排序实现方法
  • php获取exif图片缩略图的例子
  • php判断日期格式是否正确的小例子
  • php三维数组去重的简单例子
  • php正则表达式转义字符的例子
  • php导出(生成)CSV文件的小例子
  • PHP开发框架kohana3.3.1在nginx下的伪静态设置例子
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Solr的PHP接口 Solarium
  • PHP的SyncML接口 PHPSyncML
  • php中调用其他系统http接口的方法说明
  • PHP的Asterisk管理接口 PAMI
  • PHP的数据库接口 ADOdb
  • php版淘宝网查询商品接口代码示例
  • php飞信接口 pafetion
  • PHP面向对象程序设计之接口用法
  • php调用google接口生成二维码示例
  • php版小黄鸡simsimi聊天机器人接口分享
  • php中创建和调用webservice接口示例
  • php调用google接口生成二维码实例
  • php快递单号查询接口实例
  • php快递单号查询接口使用示例
  • php百度天气接口实例代码
  • 免费手机号码归属地API查询接口和PHP使用实例分享
  • php使用百度天气接口示例
  • php调用c接口无错版介绍
  • php调用c接口无错版实例
  • 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3