webQQ迷你版协议(基于http://w.qq.com)

基于http://w.qq.com,现在把命令汇总一下:


注:本协议在QQ群93772282中有word版本的下载,希望大家入群下载(2012年2月12日测试有效)

本文章没有文字格式,下载word版本带有数据格式更清晰。


如果遇到任何技术方面的问题,请加入QQ93772282

群内共享有很多关于Qplus/webQQ的源代码供下载

1WebQQ协议分析(1)——登录 收藏 

本系列文章针对的是WebQQmini协议version:1.1版本,网址:http://w.qq.com

1、获取验证码

      用Web登录QQ时需要先打开w.qq.com,但我们用的是应用程序模拟浏览器登录,所以这一步是没有必要的,所以我们主要看看点击“登录”按钮时浏览器向服务器发送什么数据了。Web登录QQ输入帐号输入焦点离开时,有时会提示要输入验证码,那么第一步就是要看看什么样的QQ号需要输入验证码。

GET http://ptlogin2.qq.com/check?uin=1030196367&appid=1002101&r=0.8849248

1030196367”是我测试用的QQ号,r的值是个随机数,写成固定的也行。

服务器返回“ptui_checkVC('0','!OMD');

括号里有两个被逗号隔开的单引号引着的数据,第一个值如果为0,则第二值为验证码,即不需要再从服务器获取验证码图片了,这个就是验证码了;第一个值如果不是1,则需要从服务器获取验证码图片,验证码需要根据图片人工输入。

2、获取验证码图片

如果第一步中返回的数据中,括号里第一个单引号引起来的数据为0,则不需要这步。

GET http://captcha.qq.com/getimage?aid=1002101&r=0.7712672651606319&uin=1030196367&vc_type=……

http://captcha.qq.com/getimage ”固定是不用怀疑的,aid=100210是固定的(看web.qq.com的页面数据就能找到了),r=0.7712672651606319是个随机数也毫无疑问,uin=1030196367QQ号,vc_type=...js文件生成的,具体怎么回事就不知道了。

研究表明,“GET http://captcha.qq.com/getimage?0.7712672651606319 ”这样就可以,后面那个随机数写成固定的就行了,服务器肯定不会每次都给你一样的验证码。

获取验证码图片的同时,还需要获取Cookieverifysession的值,登录时要用

3、输入帐号、密码及验证码登录

GET http://ptlogin2.qq.com/login?u=1030196367&p=……&verifycode=afbc&remember_uin=1&aid=1002101&u1=http%3A%2F%2Fweb.qq.com%2Fmain.shtml%3Fdirect__2&h=1&ptredirect=1&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert

http://ptlogin2.qq.com/login ”不必讨论,u=1030196367QQ号,p=...是密码,这密码并不是原始密码,这个密码是(密码=MD5(转化成大写(MD5MD5MD5(原始密码)))+验证码)),腾讯的所有产品的密码加密算法都是这样的,希望大家记住这个算法。verifycode=afbc就是你输入的验证码,remember_uin=1是记住帐号,aid=1002101同上,u1=http%3A%2F%2Fw.qq.com%2Fmain.shtml%3Fdirect__2固定,本来%3A%2F%2F表示“:\\”,%3F表示“?”,但这里不能代替,是个转义字符。webqq_type是隐身标志,后面其他都固定。

注意要设置Cookieverifysession的值

4、登录结果

ptuiCB('0','0','http://w.qq.com/main.shtml?direct__2','1');是登录成功的结果

括号中的第一个值是登录结果参数,

0:登录成功!

1:系统繁忙,请稍后重试。

2:已经过期的QQ号码。

3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于QQ聊天记录是需要登录QQ账号才能查看的,因此需要使用QQ的API或者模拟登录的方式来实现爬取聊天记录的功能。以下是使用模拟登录的方式实现的Python代码: ```python import requests from bs4 import BeautifulSoup # 登录QQ账号,并获取cookie def login_qq(username, password): login_url = 'https://xui.ptlogin2.qq.com/cgi-bin/xlogin' headers = { 'Referer': 'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=73&pt_no_auth=1&s_url=https%3A%2F%2Fid.qq.com%2Findex.html', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } data = { 'u': username, 'p': password, 'verifycode': '', 'webqq_type': '40', 'remember_uin': '1', 'login2qq': '1', 'aid': '715030901', 'u1': 'https://id.qq.com/index.html', 'ptredirect': '0', 'h': '1', 'ptlang': '2052', 'daid': '73', 'from_ui': '1', 'pttype': '1', 'dumy': '', 'fp': 'loginerroralert', 'action': '0-35-1495675005110', 'mibao_css': 'm_webqq', 't': '1', 'g': '1', 'js_type': '0', 'js_ver': '10231', 'login_sig': '', 'pt_rsa': '0', 'pt_qzone_sig': '0', 'pt_vcode_v1': '0', 'pt_verifysession_v1': '', 'pt_randsalt': '2', 'pt_jstoken': '2040674265' } session = requests.Session() response = session.post(login_url, headers=headers, data=data) return session.cookies.get_dict() # 获取QQ聊天记录 def get_qq_chat_history(qq_number, cookie): chat_url = 'https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/qqchat_list_v2' headers = { 'Referer': 'https://user.qzone.qq.com/{}/infocenter'.format(qq_number), 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Cookie': 'uin=o{}; skey={}'.format(qq_number, cookie['skey']) } params = { 'uin': qq_number, 'start': 0, 'num': 10, 'cgi_host': 'http://m.qzone.qq.com/cgi-bin', 'callback': 'handleTList', 't': '0.4908397081636454', 'g_tk': '5381' } session = requests.Session() response = session.get(chat_url, headers=headers, params=params) soup = BeautifulSoup(response.text, 'html.parser') chats = soup.find_all('li', class_='list_item') for chat in chats: sender = chat.find('a', class_='sender').text.strip() content = chat.find('div', class_='content').text.strip() print('{}: {}'.format(sender, content)) # 测试代码 if __name__ == '__main__': qq_number = '123456789' # QQ号码 username = 'your_qq_username' # 登录QQ账号 password = 'your_qq_password' # 登录QQ密码 cookie = login_qq(username, password) # 登录QQ账号,并获取cookie get_qq_chat_history(qq_number, cookie) # 获取QQ聊天记录 ``` 上述代码中,`login_qq`函数用于模拟登录QQ账号,并获取cookie信息;`get_qq_chat_history`函数用于获取QQ聊天记录。通过调用这两个函数,即可实现获取QQ聊天记录的功能。需要注意的是,QQ聊天记录的获取需要登录QQ账号,因此需要提供正确的QQ账号和密码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值