php 说说,PHP利用Qzone的说说接口发表说说开发日记

通过Chrome控制台可以发现Qzone的说说发表接口如下

2bfb3d04e80edfde136f7e31129665cf.png

此接口采用POST请求方式发送数据,GET请求参数含有鉴权密钥,使用cookie来鉴别用户身份信息,接下来从这两方面下手。

通过分析Qzone首页的源代码,g_tk的算法存在于qzfl_v8_2.1.57.js中。

e1f31a0e0d74d90a686b47d11b54833c.png

GET请求中,g_tk和qzonetoken字符串的算法,观察上面的js可知,g_tk是由一个QZFL.pluginsDefine.getACSRFToken()的函数,算法如下

aa52c40edbb816deccd915733bec1195.png

用php运算,就是

function Get_q_tk($p_key){

$arr=str_split($p_key);

$hash = 5381;

for ($i = 0, $len = strlen($p_key) ; $i 

$hash += ($hash <

}

return $hash & 2147483647;

}

OK,解决了q_tk的算法,接下来研究qzonetoken的算法。

9626af96093caac6f2f1bccb92eef187.png

看上图,是不是感觉有种被戏弄了的感觉。。。。密钥在一个script标签里!WTF???

好了,得到了以上的算法,我们写一个php程序,代码如下:(这里的密钥和cookie等隐私部分我就不写了)

$content="PHP发表测试";

$url = "http://h5.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?".$gt;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_COOKIE, $ck);

curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Referer:http://user.qzone.qq.com/'.$qq) );

curl_setopt($ch, CURLOPT_POSTFIELDS, "qzreferrer=http://user.qzone.qq.com/".$qq."&syn_tweet_verson=1&paramstr=1&pic_template=&richtype=&richval=&special_url=&subrichtype=&who=1&con=qm".$content."&feedversion=1&ver=1&ugc_right=1&to_sign=1&hostuin=".$qq."&code_version=1&format=fs");

$response = curl_exec($ch);

curl_close($ch);

echo $response;

在浏览器运行,结果

f4f167c4f4111ce45eb43192139e0180.png

成功~

Qzone说说接口总结:

1,地址:http://h5.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?q_tk=[getACSRFToken()]&qzonetoken=[token]

2,请求方式:GET请求如上。POST请求

syn_tweet_verson=1&paramstr=1&pic_template=&richtype=&richval=&special_url=&subrichtype=&who=1&con=qm".$content."&feedversion=1&ver=1&ugc_right=1&to_sign=1&hostuin=".$qq."&code_version=1&format=fs

其中$content和$qq为说说内容和QQ号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值