最近好几个新项目积一起了,比较忙,所以博客迟迟未更新,还请各位见谅!下面来继续分析webqq协议,本章将说明如何实现登陆
1:输入QQ号和密码登陆,检测HTTP请求url如下,这是第一次登陆
https://ssl.ptlogin2.qq.com/login?u={0}&p={1}&verifycode={2}&webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-28-696051&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10095&login_sig=a9NQ-9*PnzKFxzP7jcE7voRx5Z9x6Khffy44FKhIkaD-n8fShtaK1r1GZRjgsxzA&pt_randsalt=0&pt_vcode_v1=0&pt_verifysession_v1={3}
需要传递4个参数
u ---qq号
p ---加密后的密码
verifycode ---验证码
verifysession_v1 ---获取验证码时取到的verifysession
2:提交请求,记得保存cookie,登陆成功之后返回结果如下
ptuiCB(‘0‘,‘0‘,‘http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=2358922602&service=login&nodirect
=0&ptsigx=55ddde2b4b297168034309d52aff1a679bd60595863b77f2ab13fa9ff5a688631e6b177d54aef1e886bac0954f5fac07597f81b5d287bdeb3ab06acd2e2dbfd4
&s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&f_url=&ptlang=2052&ptredirect
=100&aid=501004106&daid=164&j_later=0&low_login_hour=0®master=0&pt_login_type=1&pt_aid=0&pt_aaid=0
&pt_light=0‘,‘0‘,‘登录成功!‘, ‘Zero‘);
说明:第一个 0 状态码,0表示登陆成功
第二个0 不知道干啥用,反正后面我没用到
http://..... 3之后请求的url
0 无用
登陆成功 提示信息
Zero 昵称
3:获取QQ令牌ptwebqq
4:请求2 中的url,记得保存cookie
5:进行第二次登陆,提交POST请求,记得保存cookie
url:http://d.web2.qq.com/channel/login2
referer:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
post数据:r={{"ptwebqq":"1fcc5dc887871eacc0c74632f2397550b306ca28479fa8950d967b893d32c31a","clientid":53999199,"psessionid"
:"","status":"online"}}
说明:ptwebqq 前面获取的qq令牌
clientid 客户端id,基本不变
pessionid 这一步为空,后面会获取
status 登陆状态
POST返回结果如下
说明:retcode 状态码,0表示成功
result 结果对象集合
uin qq号
cip 类似临时码,不用管
index 不知道干嘛的,不用管
port 不用管
status 状态 online:在线 callme:Q我吧 silent:请勿打扰
vfwebqq qq令牌,再次保存
psessionid 需要保存的,后面用到
user_state 状态
f 不用管
ok,到此登陆搞定了,但是你会发现你的qq无法持续在线,这就涉及心跳包的发送了,敬请等待下一篇文章,谢谢!
程序员技术交流群 欢迎您的加入