通过新浪通行证登陆微博,曲线救国,然后再进行模拟发文
<?php
/*$temp = explode(' ',microtime());
$num = floor($temp[0]*1000);
if($num<100 && $num>=10)
$second = $temp[1]*10000+$num;
else if($num < 10)
$second = $temp[1]*100000+$num;
else
$second = $temp[1]*1000+$num;*/
$url = "https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)";
header("Content-type: text/html; charset=utf-8");
//先登陆新浪通行证得到新浪的cookie
$ch = curl_init();
$cookie_jar = tempnam('./tmp','cookie');
$username = "";
$password = "";
$postData = array(
'entry' => 'sso',
'geteway' => '1',
'from' => '',
'savestate' => 30,
'pagerefer' => 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)',
'vsnf'=>'1',
'su' => base64_encode($username),
'service' => 'sso',
'sp' => $password,
'sr'=>'1366*768',
'encoding' => 'UTF-8',
'cdult' => 3,
'domain' => 'sina.com.cn',
'prelt' => 0,
'returntype' => 'TEXT',
);
$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER =>0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
CURLOPT_COOKIEJAR => $cookie_jar,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($postData),
);
curl_setopt_array($ch,$options);
$content = curl_exec($ch);
$info = curl_getinfo($ch);
//var_dump(json_decode($content));
$login = json_decode($content,true);
//获取微博的cookie
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$login['crossDomainUrlList'][0]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_jar);
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
$return = curl_exec($ch);
//$info = curl_getinfo($ch);
curl_close($ch);
//利用上一步的cookie登陆微博
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://weibo.com/home");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_jar);
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
$return = curl_exec($ch);
//$info = curl_getinfo($ch);
curl_close($ch);
//print_r($return);
//进行发文!
$ch = curl_init();
$url = "http://weibo.com/aj/mblog/add?ajwvr=6&__rnd=";
$uid = $login['uid'];//得到uid,在下面的referer中使用
$postData = array(
'location' => 'v6_content_home',
'appkey' => '',
'style_type' => '1',
'pic_id' => '',
'text' => 'I am robot!3',
'pdetial'=>'',
'rank' => 0,
'rankid' => '',
'module' => 'stissue',
'pub_source'=>'main_',
'pub_type' => 'dialog',
'_t' => 0,
);
$header= array(
/*这样的写法是错误的!!!!
'Accept'=>'',
'Accept-Encoding'=>'gzip, deflate',
'Accept-Language'=>'zh-CN,zh;q=0.8',
'Connection'=>'keep-alive',
'Content-Length'=>'140',
'Content-Type'=>'application/x-www-form-urlencoded',
//'User-Agent'=>'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
'X-Requested-With'=>'XMLHttpRequest',
'Host'=>'weibo.com',
'Origin'=>'http://weibo.com',
'Referer'=>'http://weibo.com/u/1770622960/home?wvr=5&lf=reg',*/
'Accept:*/*',
'Accept-Encoding:gzip, deflate',
'Accept-Language:zh-CN,zh;q=0.8',
'Connection:keep-alive',
'Content-Length:140',
'Content-Type:application/x-www-form-urlencoded',
//'X-Requested-With:XMLHttpRequest',//可以不用写这行
'Host:weibo.com',//一定需要
//'Origin:http://weibo.com',//可以不用
'Referer:http://weibo.com/u/'.$uid.'/home?wvr=5&lf=reg',//必须要,后面的query=>“?wvr=5&lf=reg”可以不用
);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_jar);
//curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_jar);
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
$return = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
?>