想查看微信好友撤回的消息?Python帮你搞定
微信消息撤回功能的确让人感到一些困扰,特别是在一些重要的聊天场景中,比如和女朋友聊天时或者和喜欢的人聊天时,突然对方撤回了一条消息,让人十分好奇和不安。由于微信官方并没有提供撤回消息的具体功能,但通过一些技巧和工具,我们还是可以查看被撤回的消息。下面我们将会用Python来实现这个功能。
Python是一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的统一规定,Python没有这些统一规定,比如结束语句可以不写分号,但是其他语言需要。Python为我们提供了很多强大的库和工具,可以用来实现我们的需求。
首先,我们需要知道微信消息撤回的原理。当一条消息被发送后,微信会生成一个消息ID,然后将消息发送到对方的手机上,显示给对方看。但是如果对方撤回消息,本质上就是在自己的手机上删除了这条消息,但是在发送方手机上其实还存在这条消息,只是被标记为已删除而已。因此我们可以通过一些手段来实现查看被撤回消息的目的。
我们需要用到的工具主要有两个:mitmproxy和itchat。mitmproxy是一个HTTP代理工具,可以拦截和修改HTTP请求和响应,而itchat则是一个基于微信网页版API的微信个人号接口,可以用来接收微信消息、发送消息等操作。我们可以结合使用这两个工具来实现查看被撤回消息的目的。
首先我们需要安装mitmproxy和itchat。可以使用pip来进行安装:
```shellpip install mitmproxypip install itchat```
安装完成后,我们可以使用mitmproxy来拦截微信的消息,然后通过itchat来实现消息的获取和处理。具体步骤如下:
1. 启动mitmproxy:
```shellmitmproxy```
mitmproxy启动后,会在命令行中显示一个代理地址和端口号,我们需要将我们的手机设置成使用这个代理来连接网络。
2. 在Python文件中使用itchat来连接微信,并处理消息:
```pythonimport itchatimport requests 登录微信itchat.auto_login(hotReload=True)
拦截微信消息@itchat.msg_register([itchat.content.TEXT, itchat.content.PICTURE, itchat.content.RECORDING, itchat.content.ATTACHMENT, itchat.content.VIDEO])
def get_message(msg):
判断是否是撤回的消息 if msg.get('MsgType') ==10002:
获取到消息的ID revoke_msg_id = msg.get('Content').split('<')[1].split('>')[0]
获取到撤回的消息内容 revoked_msg_content = get_revoked_msg_content(revoke_msg_id)
print('撤回的消息内容为:', revoked_msg_content)
获取撤回的消息内容def get_revoked_msg_content(msg_id):
url = ' skey = requests.utils.dict_from_cookiejar(itchat.session.s.cookies)['skey']
url = url.format(msg_id, skey)
r = requests.get(url)
revoked_msg_content = r.text return revoked_msg_content 运行itchatitchat.run()
```
在这个例子中,我们使用itchat来登录微信,并通过`@itchat.msg_register`来注册消息处理函数。当有新消息时,会调用这个函数来处理消息。在处理消息的函数中,我们判断消息类型是否为撤回的消息,如果是的话,就获取到消息的ID,并通过`get_revoked_msg_content`函数来获取被撤回消息的内容。
在`get_revoked_msg_content`函数中,我们构建了一个请求链接,然后通过请求链接来获取到消息的内容。这里我们可以使用requests库来发送HTTP请求,然后获取被撤回消息的内容。
通过以上步骤,我们可以实现查看被撤回消息的功能。当有人在微信上撤回消息的时候,我们可以通过mitmproxy和itchat来实时获取到被撤回消息的内容,并在命令行中打印出来。
需要注意的是,由于微信的网络协议是经常更新的,所以有一定的风险性,存在随时失效的可能。同时,使用mitmproxy进行网络拦截也需要一定的技术水平,需要小心使用,以免对网络造成影响。
另外,由于微信官方并没有提供查看被撤回消息的功能,所以这种方法只能实现在一定程度上查看被撤回消息。此外,使用这种方法也需要对被撤回消息的内容进行合理的处理,遵守法律法规,不得用于非法用途。