公众号:Charles的皮卡丘
作者:Charles开发工具:
Python版本:3.6.4相关模块:itchat模块;以及一些Python自带的模块。环境搭建:
安装Python并添加到环境变量,pip安装需要的相关模块即可。原理简介:
思路比较简单,利用itchat模块登录网页版微信,将自己微信收到的所有消息都缓存下来,当检测到有消息撤回时,将撤回消息的缓存版本通过文件传输助手发送到自己的手机上。因此,你必须保证脚本24小时运行才可以一直监视别人有没有撤回消息。具体实现过程详见源代码。视频演示:
源代码:
# Python查看微信撤回消息# 公众号: Charles的皮卡丘# 作者: Charlesimport reimport osimport timeimport itchatimport platformfrom itchat.content import TEXTfrom itchat.content import *msg_info = {}face_package = None# 处理接收到的信息@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isFriendChat=True, isMpChat=True)def handleRMsg(msg): global face_package # 接收消息的时间 msg_time_receive = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 发信人 try: msg_from = itchat.search_friends(userName=msg['FromUserName'])['NickName'] except: msg_from = 'WeChat Official Accounts' # 发信时间 msg_time_send = msg['CreateTime'] # 信息ID msg_id = msg['MsgId'] msg_content = None msg_link = None # 文本或者好友推荐 if msg['Type'] == 'Text' or msg['Type'] == 'Friends': msg_content = msg['Text'] print('[Text/Friends]: %s' % msg_content) # 附件/视频/图片/语音 elif msg['Type'] == 'Attachment' or msg['Type'] == "Video" or msg['Type'] == 'Picture' or msg['Type'] == 'Recording': msg_content = msg['FileName'] msg['Text'](str(msg_content)) print('[Attachment/Video/Picture/Recording]: %s' % msg_content) # 推荐名片 elif msg['Type'] == 'Card': msg_content = msg['RecommendInfo']['NickName'] + '的推荐名片,' if msg['RecommendInfo']['Sex'] == 1: msg_content += '性别男。' else: msg_content += '性别女。' print('[Card]: %s' % msg_content) # 位置信息 elif msg['Type'] == 'Map': x, y, location = re.search("(.*?)\<\/msgid\>", msg['Content']).group(1) recall_msg = msg_info.get(recall_msg_id) print('[Recall]: %s' % recall_msg) # 表情包 if len(recall_msg_id) < 11: itchat.send_file(face_package, toUserName='filehelper') else: msg_prime = '---' + recall_msg.get('msg_from') + '撤回了一条消息---\n' \ '消息类型:' + recall_msg.get('msg_type') + '\n' \ '时间:' + recall_msg.get('msg_time_receive') + '\n' \ r'内容:' + recall_msg.get('msg_content') if recall_msg['msg_type'] == 'Sharing': msg_prime += '\n链接:' + recall_msg.get('msg_link') itchat.send_msg(msg_prime, toUserName='filehelper') if recall_msg['msg_type'] == 'Attachment' or recall_msg['msg_type'] == "Video" or recall_msg['msg_type'] == 'Picture' or recall_msg['msg_type'] == 'Recording': file = '@fil@%s' % (recall_msg['msg_content']) itchat.send(msg=file, toUserName='filehelper') os.remove(recall_msg['msg_content']) msg_info.pop(recall_msg_id)if __name__ == '__main__': if platform.platform()[:7] == 'Windows': itchat.auto_login(enableCmdQR=False, hotReload=True) else: itchat.auto_login(enableCmdQR=True, hotReload=True) itchat.run()
欢迎关注我的个人公众号:Charles的皮卡丘