curl 采集微博信息(模拟登录新浪微博)

来源:互联网 发布:name域名注册 编辑:程序博客网 时间:2024/06/02 07:27

  实现效果登陆微博并且采集微博信息

效果展示:

 


这几天要做个获取新浪微博@我的信息, 又不用第三方登录,所以只能通过模拟登录来获取信息,研究的一下发现直接模拟登录微博比较困难,验证的算法比较复杂,于是绕道通过登录新浪通行证后来获取cookie 来获取信息,代码如下。

<?phpheader('Content-type:text/html;charset=utf-8');//微博登录地址$loginUrl = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543';//在当前文件下建立cookie目录 并且 创建对应的txt文件$cookie_file1 = dirname(__FILE__).'/cookie/cookie1.txt';$cookie_file2 = dirname(__FILE__).'/cookie/cookie2.txt';$cookie_file3 = dirname(__FILE__).'/cookie/cookie3.txt';$u = '微博用户名';$p = '微博密码';$username = base64_encode($u);$password = $p;//登录新浪通行证$loginData['entry'] = 'sso';$loginData['gateway'] = '1';$loginData['from'] = 'null';$loginData['savestate'] = '30';$loginData['useticket'] = '0';$loginData['pagerefer'] = '';$loginData['vsnf'] = '1';$loginData['su'] = base64_encode($u);$loginData['service'] = 'sso';$loginData['sp'] = $password;$loginData['sr'] = '1920*1080';$loginData['encoding'] = 'UTF-8';$loginData['cdult'] = '3';$loginData['domain'] = 'sina.com.cn';$loginData['prelt'] = '0';$loginData['returntype'] = 'TEXT';$login = json_decode(loginPost($loginUrl,$loginData),true);// var_dump($login);//获取微博cookie$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$login['crossDomainUrlList'][0]);    curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 2 );curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file1);    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file2);    $return = curl_exec($ch);curl_close($ch);//通过获取的cookie 登录微博, 自动跳转$ch = curl_init();curl_setopt($ch,CURLOPT_URL,"http://weibo.com/5589516034/profile?topnav=1&wvr=6&is_all=1");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file2);    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file3);curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );    $return = curl_exec($ch);//$info = curl_getinfo($ch);curl_close($ch);echo $return;function loginPost($url,$data){        global $cookie_file1 ;        //echo $cookie_file ;exit;        $ch = curl_init();        curl_setopt($ch,CURLOPT_URL,$url);            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                curl_setopt($ch,CURLOPT_POST,1);        curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($data));        curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file1);        $return = curl_exec($ch);        $info = curl_getinfo($ch);        curl_close($ch);        return $return;}?>


0 0
原创粉丝点击