微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿。在此期间微信也推出了不少的功能如:“摇一摇”、“漂流瓶”、“朋友圈”、“附近的人”、“公众平台”、“小程序”等等,涵盖了我们生活的方方面面,微信正在慢慢践行着他们的口号:微信,是一种生活方式。

1.前情提要

产品的更新迭代必然会伴随着功能的推出和下线,今天我们要讲的便是微信在2014年推出的一个小小的新功能:撤回消息,使用此功能者提神醒脑、神清气爽,但被施用者却可能会抓耳挠腮、咬牙切齿的想知道你到底撤回了啥,这就是所谓的好奇害死猫(Curiosity kills the cat),今天我们就来用Python实现防微信消息撤回,满足一下大家的好奇心!

2.功能设计

我们希望当有好友或者群中有人撤回消息的时候,第一时间能把原消息、发送者信息转发到文件助手中(当然你也可以把消息发回给他,哈哈),这样方便我们查看。

给大家演示一下实现的功能:

3.实现功能

 3.1 微信撤回消息实现原理

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

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

在这里给大家演示一下正常消息撤回消息的内容到底有什么区别: 正常消息:Content='你好骚啊',大家留意一下MsgId='8784390488772995470'

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

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

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

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

3.2 找到被撤回消息

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

如果你微信消息太过频繁,2分钟之内消息数量超过200(这手速不得把手机屏幕整冒烟),则可以将max_history设置大些。

3.3 转发被撤回消息

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

msg.forward(bot.file_helper)

4.代码

原理和过程讲完了,代码贴出来给大家看看,注释还是比较详细:

5.功能验证

6.总结

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

感谢您的阅读,如觉得有用请您点赞,您的鼓励是对我的最大动力!

END

2022/11/28

联系我:pengyu717@yeah.net

#Python #微信 #消息防撤回 Python实现微信防撤回相关推荐

  1. python发送微信消息_python 发送QQ或者微信消息

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 废话少说,先上代码: # coding = utf-8 import win32gui import win32api import win32con i ...

  2. android微信消息无提醒,OPPO手机微信消息不提醒怎么办?(附多种解决方法)

    微信来新消息不提醒,不能第一时间看到微信消息,一般是设置不到位.现在就可以通过以下几步来进行排除解决. 小编以R9手机为例,这就告诉你们相关设置哈,一起来学习吧~~ OPPO手机微信消息不提醒怎么办? ...

  3. delphi 企业微信消息机器人_nodeJS实现企业微信机器人每天定时发消息实例 定时任务...

    nodeJS实现企业微信机器人每天定时发消息实例 背景 由于企业微信办公需要,"每天定时推送某消息用来提醒群里面所有人或者部分人",于是决定用企业微信自带的机器人来实现此功能,来代 ...

  4. 华为手表微信排行榜服务器繁忙,华为watch3微信消息-华为watch3可以回微信消息吗...

    华为watch3是首款搭载了鸿蒙系统的智能手表,带给用户更加多的功能体验,智能享受!那么这款华为watch3关于微信消息的功能大家都清楚吗!今天小编就为大家介绍这款华为watch3的微信消息回复功能! ...

  5. python接收微信消息_【Python写微信防撤回脚本】02 接收记录聊天信息

    上一期我们安装好了ItChat,并且学会用它登录微信.想知道它还能做什么?往下滑吧~ 接收好友信息 利用ItChat登录微信之后,我们就可以自动记录好友发来的信息. 话不多说,直接上代码: impor ...

  6. 【corpwechat-bot】一个好用的企业微信消息推送python接口库

    文章目录 前言 Requirements Result Features Usage 前言 本文同步发表在blog.gentlecp.com corpwechat-bot是一个python封装的企业机 ...

  7. python微信消息定时_python实现给微信指定好友定时发消息

    python有很多有趣的库,其中wxpy是连接微信的接口,具体可以查看官方文档:http://wxpy.readthedocs.io/zh/latest/index.html.可以实现自动操作,wxp ...

  8. python发送微信消息_用python批量发送微信消息

    原博文 2018-09-12 14:09 − 根据用户的备注名来给用户发送特定的消息,在itchat获取的friends列表中,username每次登陆之后都会出现变化. 1 #-*- coding: ...

  9. python调用微信发送消息过于频繁_python 调用微信 发消息

    本篇文章讲述的是调用 python 的 wxpy 包自动发送微信消息. 相当于 登录 微信网页版. 具体代码方便复制,提供一份文字版代码 #!/usr/bin/env python3 # coding ...

  10. 使用itchat监控微信消息,从此不再为撤回烦恼

    强大的Itchat itchat是一个开源的微信个人号接口,使用python封装接入微信网页版接口,通过调用itchat来登录微信网页版收发消息. 项目简介 - itchat 掌握itchat之后,只 ...

最新文章

  1. Java中的ThreadLocal详解
  2. C++Exponential search指数搜索的实现算法(附完整源码)
  3. STL的forward_list链表
  4. apache配置多个站点
  5. 35岁前成功黄金法则
  6. “进化”的搜索方式:揭秘微软语义搜索背后的技术
  7. Ubuntu 8.04 Linux + Apache2 + MySQL5 + PHP + Tomcat5.5 整合安装
  8. [列联相关] 列联系数计算及假设检验
  9. pfx导入后仍然打不开加密文件_天正CAD图纸加密和解密方法
  10. .net文档生成工具2.0 支持自定义文档生成器【转:http://www.cnblogs.com/lucc/archive/2008/09/05/1284762.html】...
  11. 图片弹幕蒙版java实现_通过css3实现蒙版弹幕
  12. java jar热加载技术_Java热加载(JRebel)与Devtools热部署
  13. TF,数据转换和softmax()
  14. office2016+visio2016
  15. PyQt5 QLabel控件
  16. springboot+微信小程序校园疫情智慧防控系统毕业设计源码011133
  17. 天津大学2020年考研考前公告
  18. 安卓手机按键精灵Python封装
  19. linux raid 找回文件,linux – 恢复已经在降级模式下运行的RAID-5(丢失了第二个磁盘)...
  20. css单位-vh/vw

热门文章

  1. robomongo超时
  2. 你一定要掌握的数据可视化基本设计原则(上)
  3. poi -- 上传、自定义模板导出excel文件插入到数据库
  4. 三维地理信息平台介绍与比较(转)
  5. ORACLE EBS WORKFLOW实现多附件下载
  6. 校园学校排课选课系统 毕业设计毕设源码毕业论文开题报告参考(5)网站系统管理功能
  7. 锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)
  8. vue使用常见问题及解决方案
  9. python登录系统账号检测_一种基于python的惠普打印机默认用户名密码检测方法与流程...
  10. 破解邻居家电脑wifi 密码