PHP QQ空间发表说说类

发布于 / PHP / Comments Off on PHP QQ空间发表说说类

小白一枚,如有错误,欢迎指出,我会尽快修改。

过程见这里:https://www.mmuaa.com/post-5.html

不多说,直接上代码。

<?php
/*
作者:@Kidultff
主页:https://www.mmuaa.com/
qzfl版本:v8_2.1.57
2017-1-31
转载或引用请保留作者信息
*/
class qzfl{
private  $ck , $qzonetoken , $qq ;
public function __construct($ck , $qzonetoken , $qq) {
$this->ck = $ck;
$this->qzonetoken  = $qzonetoken;
$this->qq  = $qq;
    }
private function Get_q_tk($p_key){
$arr=str_split($p_key);
$hash = 5381;
for ($i = 0, $len = strlen($p_key) ; $i < $len; ++$i) {
      $hash += ($hash << 5) + base_convert(bin2hex(iconv('UTF-8', 'UCS-4', $arr[$i])), 16, 10);;
    }
return $hash & 2147483647; 
}
private function GetCkArr($ck){
$ck=preg_replace('# #', '', $ck);
$ck_arr=explode(";",$ck);
for($i=0,$len=count($ck_arr) ; $i<$len ; $i++){
$arr[strstr($ck_arr[$i],'=',true)]=str_replace("=","",strstr($ck_arr[$i],'='));
    } 
  return $arr;
}
public function Send($content){
$p_skey=$this->GetCkArr($this->ck)['p_skey'];
$g_tk=$this->Get_q_tk($p_skey);
$url = "http://h5.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?g_tk=".$g_tk."&qzonetoken=".$this->qzonetoken;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, $this->ck); 
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Referer:http://user.qzone.qq.com/'.$this->qq) );
curl_setopt($ch, CURLOPT_POSTFIELDS, "qzreferrer=http://user.qzone.qq.com/".$this->qq."&syn_tweet_verson=1¶mstr=1&pic_template=&richtype=&richval=&special_url=&subrichtype=&who=1&con=qm".$content."&feedversion=1&ver=1&ugc_right=1&to_sign=1&hostuin=".$this->qq."&code_version=1&format=fs");
$response = curl_exec($ch);
curl_close($ch);
$return = is_int(strpos($output,'请先登录'));
return $return;
}
}

使用方法举例:

首先获取qq空间的cookie(chrome浏览器F12控制台Console输入document.cookie即可看到)

然后获取qzonetoken(chrome浏览器F12控制台Console输入window.g_qzonetoken即可看到)

接着可以用如下方法使用类:

<?php
$qq={QQ号};
$ck={cookies};
$tk={qzonetoken};
$content={说说内容};
$qzone=new qzfl($ck,$tk,$qq);
$result=$qzone->Send($content);

这样,如果cookies有效,一条说说就发表到了QQ空间。

Cookies是否有效可以根据返回值$result判断。

swich($result){
case 0:echo "成功";break;
case 1:echo "cookie失效或昵称中包含"请先登录"";break;
}

本代码在2017.02亲测有效。如果失效了请留言

转载原创文章请注明,转载自: 斐斐のBlog » PHP QQ空间发表说说类
评论已关闭