有什么能逃得过Python的魔爪?3步查看微信撤回消息!

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

一、功能设计

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

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

二、功能实现

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

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

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

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

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

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

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

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

2.找到被撤回消息

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

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

3.转发被撤回消息

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

msg.forward(bot.file_helper)

4.代码

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

四、功能验证

三、总结

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

学会这招,再也不用好奇对方到底撤回了啥消息,快试试吧!

wxpy官方文档:

https://wxpy.readthedocs.io/zh/latest

大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每日分享一些学习的方法和需要注意的小细节

原文地址:https://blog.51cto.com/14318113/2398010

时间: 2024-11-05 22:42:09

有什么能逃得过Python的魔爪?3步查看微信撤回消息!的相关文章

一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜!

2011年1月21日 微信(WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造 .在互联网飞速发展的下.民众的需求下,微信已经更新到2.6.2.31版本,全民微信时代.村口的张大妈,家里的老父亲都知道怎么使用微信. 微信撤回消息功能是在微信的5.3.1中新增的. 如果需要撤回微信消息,长按刚刚发出去的消息,会弹出菜单,其中有撤回选项. 点击撤回后可以看到提示,会撤回刚才发出去的最后一条微信消息. 点击确

都说Python是无所不能的!手机APP数据就能逃出我爬虫的魔爪吗?

1.1 下载 由于是收费软件,这里给大家一个链接,自行下载,windows版本,如果是其他系统还是去官网吧.https://www.charlesproxy.com 1.4 体验一下Charles 点一下左侧的扫把,清空,开启监听,即左侧第二个按钮.手机打开qq,打开列表一直划,会看到左侧出现了很多请求,遗憾的是只能看到好友的头像,其他内容都加密了.捕捉到信息后点击一下,再点击右边的Contents,可以看下返回的数据,json,jsontext 等等,捕捉到的信息足够我们分析页面就好了.可以自

使用python一步一步搭建微信公众平台(一)

最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份证的照片,还有几天的审核期 微信公众平台:http://mp.weixin.qq.com 新浪SAE:http://sae.sina.com.cn/ 等待微信公众审核通过后,登录公众平台后,点击高级功能.将会看到需要提供一个接入信息: 微信接口配置 那么我们需要一个网址作为接口(这时就需要SAE上搭

python实现通过企业微信发送消息

实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq.com/api/doc#10167 话不多说,直接代码 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # @Time : 2018/4/25 17:06 5 # @Author : zms 6 # @Site : 7 # @File :

这个Python脚本牛逼了,秒抢红包就算了,还能无视撤回消息

曾经有一份"份额很足"的大红包,摆在我面前,我没有好好珍惜,如果上天再给我一次机会,我会对发红包的人说三个字:再来个.如果要在这个红包的金额上面加个上限,我希望是200.(因为微信红包最大的红包就是200) 我想很多的朋友都遇到过这样的问题,特别是在亲友群里面,很多时候别人发了红包自己却不知道!很难受........ 还有一种情况: 当自己一直喜欢的女神发给自己一个消息的时候,还没来得及看,就撤回了.是不是自己在心中"YY",她是不是发了什么,然后你问她的时候,她却

itchat发送微信文本消息、文件等【python】

前言 Itchat是一个开源的微信个人接口.使用python调用itchat的API,可以完成一个能够处理所有信息的微信机器人.比如说你可以写python,利用itchat,去搜索特定的人,然后向这个人发送消息.图片.视频.附件等等. 应用场景 在做自动化测试框架时,往往如果有case没有通过时,一般都会发邮件,或者发送短信进行通知相关人员.因为微信毕竟是现在非常主流的社交工具.如果在case有失败的情况下,如果能通过微信发送信息到相关人,岂不是更好.如果能把自动化运行的报告,最为附件发送给相应

Python最新版还原VX撤回消息教程!这波你给几分?

一大早醒来,发现女神昨晚发来三条消息,但是显示都已撤回,OMG,我错过了什么?群里有一个漂亮妹纸的爆照照片撤回了,想看又看不到!群里大佬分享的经典语录被撤回了,感觉错过一个亿!怎么办?用无所不能的 Python 就可以将这些撤回的消息发给你的微信,让你从此走上人生巅峰 项目环境 语言:Python3 编辑器:Pycharm 导包 itchat:控制微信的第三方库 这个库相信大家不陌生了,之前写的 Python 机器人陪你聊天 Python 定时给女神发早安 两篇文章里用的 wxpy 库就是在 i

使用python实现微信模板消息

#!/usr/bin/env python #-*- coding:utf-8 -*- import urllib2,json import datetime,time from config import * import sys reload(sys) sys.setdefaultencoding("utf-8") class WechatPush():     def __init__(self,appid,secrect,file_name):         # 传入appi

【转】一件有趣的事:我用 Python 爬了爬自己的微信朋友

偶然了解到 Python 里的 itchat 包,它已经完成了 wechat 的个人账号 API 接口,使爬取个人微信信息更加方便. 于是乎玩心一起,打算爬一下自己的微信. 步骤核心: 网页启动notebook ipython notebook --inline=pylib pip安装itchat包 pip install itchat 登录微信,扫描二维码 import itchat itchat.login() #会弹出一个二维码,扫一下即登录 获取好友信息 friends = itchat