Python实现微信消息监听与撤回检测原理

顾言
顾言
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍利用Python的itchat库实现微信网页版消息监听的方法。通过注册TEXT等消息类型回调,可实时获取聊天内容。针对微信5.3.1新增的撤回功能,文章探讨了如何通过监听消息变化来捕捉“对方撤回了一条消息”的提示,并提供了相关代码框架及注意事项。

微信(WeChat)由腾讯公司于2011年1月21日发布,旨在为智能终端提供即时通讯服务,该产品由张小龙带领的腾讯广州研发中心团队打造。随着互联网技术的快速迭代及用户需求的升级,微信已更新至2.6.2.31版本,普及率极高,从普通民众到家庭长辈均已广泛使用。

微信在5.3.1版本中引入了消息撤回功能。

若要撤回已发送的微信消息,只需长按该条消息,在弹出的菜单中选择“撤回”选项。点击后系统会提示即将撤回最后一条发出的消息,确认后界面将显示“你撤回了一条消息”的提示语。

与此同时,该条消息会从本地聊天记录中移除。虽然接收方无法看到原消息内容,但会收到一条系统通知,明确提示“对方撤回了一条消息”。

在与朋友、亲人或伴侣交流时,每个人都可能经历过微信撤回功能所描述的场景:对方发送消息后随即撤回。

常言道“覆水难收”,但在微信和QQ中,用户现在可以撤回刚刚发送的消息。当手机发出“嘀”的提示音,表明有新消息时,用户通常会急切地打开查看是谁在联系。然而,有时还没来得及阅读或尚未读完,消息突然消失,屏幕上仅留下“对方撤回了一条消息”的字样,这往往引发用户的好奇与猜测。

每日手机接收的海量信息中,绝大多数属于无关紧要的垃圾信息,令人厌烦。然而,“对方撤回了一条消息”这一提示总能瞬间吸引注意力。

撤回的消息如同一个秘密或诱饵,激发人们强烈的探究欲:那究竟是一句不慎说出的真话,还是发错对象的尴尬内容?

总之,这条撤回的消息总能引发强烈的好奇心。此时,技术人员的价值便得以体现——特别是Python程序员。

以下是使用Python查看微信撤回消息的源代码示例:

mport re

import time

import itchat

from itchat.content import *

@itchat.msg_register([TEXT, PICTURE, MAP, CARD, NOTE, SHARING, RECORDING, ATTACHMENT, VIDEO])

def text_reply(msg):

 print(msg['Text'])

@itchat.msg_register([TEXT, PICTURE, MAP, CARD, NOTE, SHARING, RECORDING, ATTACHMENT, VIDEO])

@itchat.msg_register([TEXT, PICTURE, MAP, CARD, NOTE, SHARING, RECORDING, ATTACHMENT, VIDEO])

def text_reply(msg):

 if msg['Type'] == 'Text':

 reply_content = msg['Text']

 elif msg['Type'] == 'Picture':

 reply_content = r"图片: " + msg['FileName']

 elif msg['Type'] == 'Card':

 reply_content = r" " + msg['RecommendInfo']['NickName'] + r" 的名片"

 elif msg['Type'] == 'Map':

 x, y, location = re.search("<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*",  msg['OriContent']).group(1,

2,

3)

 if location is None:

 reply_content = r"位置: 纬度->" + x.__str__() + " 经度->" + y.__str__()

 else:

 reply_content = r"位置: " + location

 elif msg['Type'] == 'Note':

 reply_content = r"通知"

 elif msg['Type'] == 'Sharing':

 reply_content = r"分享"

 elif msg['Type'] == 'Recording':

 reply_content = r"语音"

 elif msg['Type'] == 'Attachment':

 reply_content = r"文件: " + msg['FileName']

 elif msg['Type'] == 'Video':

 reply_content = r"视频: " + msg['FileName']

 else:

 reply_content = r"消息"

 friend = itchat.search_friends(userName=msg['FromUserName'])

 itchat.send(r"Friend:%s -- %s "

 r"Time:%s "

 r" Message:%s" % (friend['NickName'], friend['RemarkName'], time.ctime(),   reply_content),

 toUserName='filehelper')

itchat.send(r"我已经收到你在【%s】发送的消息【%s】稍后回复。--微信助手(Python版)" % (time.ctime(), reply_content),

toUserName=msg['FromUserName'])

itchat.auto_login()

itchat.run()

在此郑重建议,如果是情侣关系,请勿使用此类Python工具进行查看,因为“不知者无罪”,有些未知比知晓更好。这是基于个人经验的忠告,下次再会!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表