导语

赋闲在家几天,想鼓捣点简单又好玩的脚本分享给大家,于是就有了这篇文章~~~

本文将利用Python记录微信好友/微信群中他人撤回的消息,并将这些消息通过文件传输助手发送到自己的手机上。

让我们愉快地开始吧~~~

相关文件

百度网盘下载链接: https://pan.baidu.com/s/1UdTXIXy4iGes24zv9YBIZg

密码: j43u

开发工具

Python版本:3.6.4

相关模块:

itchat模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

思路比较简单,利用itchat模块登录网页版微信,将自己微信收到的所有消息都缓存下来,当检测到有消息撤回时,将撤回消息的缓存版本通过文件传输助手发送到自己的手机上。

因此,你必须保证脚本24小时运行才可以一直监视别人有没有撤回消息。

具体实现过程详见相关文件中的源代码。

使用演示

Windows系统:

手机端:




python 微信群 聊天记录 python抓取微信群聊天记录_python


python 微信群 聊天记录 python抓取微信群聊天记录_python 微信群 聊天记录_02


视频链接

Linux系统:

手机端:


python 微信群 聊天记录 python抓取微信群聊天记录_缓存_03


python 微信群 聊天记录 python抓取微信群聊天记录_python 微信群 聊天记录_04


视频链接

1.微信撤回消息实现原理

我们先来了解一下微信撤回消息的原理:

其实微信撤回消息原理就是操作者在点击撤回的时候,客户端会自动发一条系统消息:“xxx撤回了一条消息”,然后对方app端收到消息后解析,替换原消息,改个显示的样式即可

猪哥给大家演示一下正常消息和撤回消息的内容到底有什么区别:

正常消息:Content='你好骚啊',大家留意一下MsgId='8784390488772995470'


python 微信群 聊天记录 python抓取微信群聊天记录_微信_05


撤回消息:Content是一串xml格式的内容


python 微信群 聊天记录 python抓取微信群聊天记录_Powered by 金山文档_06


我们在下面把它格式化看看

<sysmsgtype="revokemsg"><revokemsg><session>xxx</session><oldmsgid>1090336364</oldmsgid><msgid>8784390488772995470</msgid><replacemsg><![CDATA["猪哥" 撤回了一条消息]]></replacemsg></revokemsg></sysmsg>

分析上面撤回的Content字段我们发现<msgid>8784390488772995470</msgid>的id与我们之前发送消息的id是一致的,而<replacemsg>这个标签也验证了我们的猜想,确实是用新消息替换原消息。

2.找到被撤回消息

根据抓取正常消息和撤回消息的内容我们发现规则:撤回消息中会包含之前被撤回的那条消息的msgid,那我们只要找到之前那条消息就可以了,而wxpy模块默认为我们缓存了最近的200条消息,所以我们只要遍历这些历史消息然后比较msgid就可以找到被撤回的那条消息啦!


python 微信群 聊天记录 python抓取微信群聊天记录_缓存_07


如果你微信消息太过频繁,2分钟之内消息数量超过200,则可以将max_history设置大些。

3.转发被撤回消息

原理也搞懂了,被撤回的消息也找到了,就差最后一步转发消息了,如果你之前玩过wxpy肯定会了吧,只要一行代码就可以将消息转发:

msg.forward(bot.file_helper)

4.代码

原理和过程讲完了,代码贴出来给大家看看,注释还是比较详细,有不懂得话可以在学习群中问我。


python 微信群 聊天记录 python抓取微信群聊天记录_缓存_08


四、功能验证



python 微信群 聊天记录 python抓取微信群聊天记录_缓存_09


五、总结


微信消息防撤回功能实现简单,但实用性很好,目前项目的唯一缺点就是易用性差,简单说就是我们还没有将项目部署服务器,每次使用都得打开电脑然后运行还得一直开着,猪哥考虑后面将项目部署在云服务器上或者打包成apk,这样就使用起来就非常方便了,而且还可以把apk发给朋友,让朋友也体验此功能!

学会这招,再也不用好奇对方到底撤回了啥消息,快下载项目试试吧!下载项目后可直接运行不需要修改代码!

Github项目地址:https://github.com/pig6/wxrobot

wxpy官方文档:https://wxpy.readthedocs.io/zh/latest