[PHP] 纯文本查看 复制代码
class qq_qrlogin{
public function login_sig(){
if (QQ_QRCODE == 1) {
$url = 'https://xui.ptlogin2.qq.com/cgi-bin/x';
}else{
$url = 'http://ui.ptlogin2.qq.com/cgi-bin/';
}
$url .='login?pt_disable_pwd=1&appid=1006102&daid=1&style=23&hide_border=1&proxy_url=https://id.qq.com%2Flogin%2Fproxy.html&s_url=https://id.qq.com/index.html';
$ret = $this->get_curl($url,0,0,0,1);
preg_match('/pt_login_sig=(.*?);/',$ret,$match);
return $match[1];
}
public function getqrpic(){
if (QQ_QRCODE == 1) {
$url = 'https://ssl.ptlogin2.qq.com';
}else{
$url = 'http://ptlogin.qq.com';
}
$url .='/ptqrshow?appid=1006102&e=2&l=M&s=3&d=72&v=4&t=0.363800773'.time().'&daid=1&pt_3rd_aid=0';
$arr=$this->get_curl($url,0,0,0,1,0,0,1);
preg_match('/qrsig=(.*?);/',$arr['header'],$match);
if($qrsig=$match[1])
exit('{"saveOK":0,"qrsig":"'.$qrsig.'","data":"'.base64_encode($arr['body']).'"}');
else
exit('{"saveOK":1,"msg":"二维码获取失败"}');
}
public function qqlogin(){
$qrsig=empty($_GET['qrsig'])?exit('{"saveOK":-1,"msg":"qrsig不能为空"}'):$_GET['qrsig'];
$sig=$this->login_sig();
if (QQ_QRCODE == 1) {
$url = 'https://ssl.ptlogin2.qq.com';
}else{
$url = 'http://ptlogin.qq.com';
}
$url .='/ptqrlogin?u1=https%3A%2F%2Fid.qq.com%2Findex.html&ptqrtoken='.$this->getqrtoken($qrsig).'&ptredirect=1&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-'.time().'&js_ver=21081215&js_type=1&login_sig='.$sig.'&pt_uistyle=40&aid=1006102&daid=1&has_onekey=1&';
$ret = $this->get_curl($url,0,$url,'qrsig='.$qrsig.'; ',1);
if(preg_match("/ptuiCB\('(.*?)'\)/", $ret, $arr)){
$r = explode("','",str_replace("', '","','",$arr[1]));
if($r[0] == 0){
preg_match('/superuin=(.*?);/',$ret,$uin);
preg_match('/skey=@(.{9});/',$ret,$skey);
preg_match('/superkey=(.*?);/', $ret, $superkey);
preg_match('/supertoken=(.*?);/', $ret, $supertoken);
$data = $this->get_curl($r[2],0,0,0,1);
if($data) {
preg_match("/p_skey=(.*?);/", $data, $pskey);
preg_match('/pt4_token=(.*?);/',$data,$pt4_token);
}
if($pskey){
$json = array(
'saveOK'=>0
,'msg'=>'登录成功'
,'desc'=>'登录成功'
,'qq'=>$this->getuin($uin[1])
,'skey'=>'@'.$skey[1]
,'nick'=>$r[5]
,'p_skey'=>$pskey[1]
,'pt4_token'=>$pt4_token[1]
);
exit(json_encode($json,320));
}else{
$json = array('saveOK'=>4,'msg'=>'登录成功,获取相关信息失败','desc'=>'登录成功,获取相关信息失败'.$r[2]);
exit(json_encode($json,320));
}
}elseif($r[0]==65){
$json = array('saveOK'=>1,'msg'=>'二维码已失效','desc'=>'请重新扫描二维码');
exit(json_encode($json,320));
}elseif($r[0]==66){
$json = array('saveOK'=>2,'msg'=>'二维码未失效','desc'=>'使用QQ手机版扫描二维码');
exit(json_encode($json,320));
}elseif($r[0]==67){
$json = array('saveOK'=>3,'msg'=>'正在验证二维码','desc'=>'扫码成功,请在手机上确认授权登录');
exit(json_encode($json,320));
}else{
$json = array('saveOK'=>4,'msg'=>$r[4],'desc'=>$r[4]);
exit(json_encode($json,320));
}
}else{
exit('{"saveOK":6,"msg":"'.$ret.'"}');
}
}