php+微博切换账号密码,php---使用curl登录微博

这里只给出代码:

如果需要详细的信息联系我: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值