webQQ协议——发送消息
2014-03-08 23:39
218 查看
"
2014/06/28修改
重写代码, 分成2个模块, 向群发送消息, 还有向好友发送消息;
"
这里就只讲下向好友发送消息好了。。
发送请求的地址:http://d.web2.qq.com/channel/send_buddy_msg2
发送请求中的form。。。
to后面的是uin, 它并不是QQ号。。。这点需要注意, 它是每次登录时随机分配的, 所以要发送消息, 就要先获得好友信息, 群信息进而获得uin。。。
msg_id这个值, 每发送一次消息就会增加1, 初始值可以自己随便写。。。
psessionid,
clientid在模拟登录的时候有提到=。=,自己过去看下吧。。。(传送门)
FriendSender.py
GroupSender.py
AbstractSender.py(上面2个模块都继承这个模块。。。Queryable在模拟登录那篇文章里面有。。)
2014/06/28修改
重写代码, 分成2个模块, 向群发送消息, 还有向好友发送消息;
"
这里就只讲下向好友发送消息好了。。
发送请求的地址:http://d.web2.qq.com/channel/send_buddy_msg2
发送请求中的form。。。
to后面的是uin, 它并不是QQ号。。。这点需要注意, 它是每次登录时随机分配的, 所以要发送消息, 就要先获得好友信息, 群信息进而获得uin。。。
msg_id这个值, 每发送一次消息就会增加1, 初始值可以自己随便写。。。
psessionid,
clientid在模拟登录的时候有提到=。=,自己过去看下吧。。。(传送门)
FriendSender.py
#coding=utf-8 import urllib; import urllib.request; from AbstractSender import AbstractSender; URL_SEND_FRIENDMSG = "http://d.web2.qq.com/channel/send_buddy_msg2"; class FriendSender(AbstractSender): def __init__(self, dict): AbstractSender.__init__(self, dict); def doSend(self, uin, msg): data = {"r":'{"to":' + str(uin) + r',"content":"[\"' + str(msg) + r'\",[\"font\",{\"name\":\"' + self.getFont() + r'\",\"size\":' + str(self.getSize()) + r',\"style\":[0,0,0],\"color\":\"000000\"}]]","face":549,"clientid":' + str(self.queryInfo("clientid")) + ',"msg_id":' + str(self.getMsgId()) + ',"psessionid":"' + self.queryInfo("psessionid") + '"}'}; request = urllib.request.Request(URL_SEND_FRIENDMSG, headers = self.queryInfo("header")); return request, data;
GroupSender.py
#coding=utf-8 import urllib; import urllib.request; from AbstractSender import AbstractSender; URL_SEND_GROUPMSG = "http://d.web2.qq.com/channel/send_qun_msg2"; class GroupSender(AbstractSender): def __init__(self, dict): AbstractSender.__init__(self, dict); def doSend(self, uin, msg): data = {"r":'{"group_uin":' + str(uin) + r',"content":"[\"' + msg + r'\",[\"font\",{\"name\":\"' + self.getFont() + r'\",\"size\":' + str(self.getSize()) + r',\"style\":[0,0,0],\"color\":\"000000\"}]]","face":549,"clientid":' + self.queryInfo("clientid") + ',"msg_id":' + str(self.getMsgId()) + ',"psessionid":"' + self.queryInfo("psessionid") + '"}'}; request = urllib.request.Request(URL_SEND_GROUPMSG, headers = self.queryInfo("header")); return request, data;
AbstractSender.py(上面2个模块都继承这个模块。。。Queryable在模拟登录那篇文章里面有。。)
#coding=utf-8 import json; import random; import urllib; import urllib.request; from urllib.parse import *; from Queryable import *; class AbstractSender(Queryable): def __init__(self, dict, size = 10, font = "宋体"): Queryable.__init__(self, dict); #消息id, 每次发送消息都会增加1 self._msgId = random.randint(50000000, 99999999); self.setFont(font); self.setSize(size); def getMsgId(self): self._msgId += 1; return self._msgId; def setFont(self, font): self._font = font; def getFont(self): return self._font; def setSize(self, sz): self._size = sz; def getSize(self): return self._size; def doSend(self, uin, msg): pass; def send(self, uin, msg): request, data = self.doSend(uin, msg); opener = self.queryInfo("opener"); ret = json.loads(opener.open(request, urlencode(data).encode("utf-8")).read().decode("utf-8")); if(ret["retcode"] == 0): return True; return False;
相关文章推荐
- 利用webqq协议使用python登录qq发消息源码参考
- UDP协议下内网与公网IP进行发送消息,一对多.且选择不同的客户端发送消息
- php模拟飞鸽传输协议,代码实现向飞鸽发送消息
- ActiveMQ - tcp 协议发送消息
- UDP协议发送和接收消息案例详解
- php+js+mysql设计的仿webQQ-<7>聊天消息的发送与刷新
- python:使用udp协议发送飞秋消息
- 8226基于nodemcu通过mqtt协议发送接收消息
- php+js+mysql设计的仿webQQ-<7>聊天消息的发送与刷新
- php+js+mysql设计的仿webQQ-<7>聊天消息的发送与刷新
- ActiveMQ - stomp 协议发送消息
- 利用webqq协议使用python登录qq发消息源码参考
- 支持msnp15协议python可发送离线消息脚本附录1
- 使用udp协议给飞Q发送消息
- Lodrunner Socket协议中获取发送消息长度和内容
- 利用webqq协议使用python登录qq发消息
- 支持msnp15协议python可发送离线消息脚本附录2
- 我的mqtt协议和emqttd开源项目个人理解(12) - Hook使用和连接Kafka发送消息,使用ekaf库
- 支持msnp15协议python可发送离线消息脚本
- c#程序 MQTT协议发送消息。