这里只给出代码:
如果需要详细的信息联系我:896360979
最近有人问这个微博登陆的很多(但是我这个登陆主要是为了获取cookie的,如果想要其他的用途的话自己还要修改一下)
我写详细一点,修改了一下
cookie换成自己的路径
username和password换成自己的微博账号和密码
class Weibo{
public $cookie = '';
public function __construct(){
$this->cookie = 'D:\xampp\htdocs\webtest/cookie.txt';
}
/**
* 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_HTTPHEADER => array('Expect:'),
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1096.1 Safari/536.6'
);
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){
echo "CURL ERROR:$url ".curl_error($ch);
}
curl_close($ch);
return $response;
}
/**
* 微博用户登录
*
*/
public function login($username,$password,$cookie='1',$style='1'){
//设置cookie的使用文件号
$cookieFile = $this->cookie;
if($username && $password){
$preLoginData = $this->curlRequest('http://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su='.base64_encode($username).'&client=ssologin.js(v1.3.20)','',$cookieFile);
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 = $this->curlRequest('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.20)',$postArr,$cookieFile);
if($loginData){
$matchs = array();
if($style == '1'){
preg_match('/replace\([\'|\"](.*?)[\'|\"]\)/',$loginData,$matchs);
}
if($style == '2'){
preg_match("/replace\(\"(.*?)\"\)/",$loginData,$matchs);
}
$loginResult = $this->curlRequest($matchs[1],'',$cookieFile);
$loginResultArr = array();
preg_match('/feedBackUrlCallBack\((.*?)\)/',$loginResult,$loginResultArr);
if(!empty($loginResultArr[1])){
$userInfo = json_decode($loginResultArr[1]);
//print_r($userInfo);
if($userInfo->result){
echo "login success \n";
}
}else{
//echo "login false \n";
}
}else{
//echo "Login sina fail \n";
}
}else{
//echo $preLoginData."\n";
}
}else{
//echo "Param error. \n";
}
}
public function getCookie($username,$password){
$this->login($username,$password);
$filename = $this->cookie;
$content = file_get_contents($filename);
return $content;
}
}
$obj = new Weibo();
$obj->getCookie($username,$password);
?> 登陆成功会显示login success