举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > python爬取微信聊天信息 Python3爬虫查看微信撤回消息

python爬取微信聊天信息 Python3爬虫查看微信撤回消息

2023-03-24 20:17 Python3教程

python爬取微信聊天信息 Python3爬虫查看微信撤回消息

python爬取微信聊天信息

Python爬取微信聊天信息是一种利用Python语言来抓取微信聊天信息的方法。它可以帮助我们快速地收集和分析微信上的大量数据,从而为我们的研究提供有用的信息。

要使用Python爬取微信聊天信息,首先需要安装一些必要的库,如itchat、requests、BeautifulSoup等。然后,我们需要使用itchat库来连接微信并获取好友列表:

import itchat 
itchat.login() 
friends = itchat.get_friends(update=True)[0:]

之后,我们就可以使用requests库来请求好友的个人主页:

import requests 
url = 'https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?lang=zh_CN&pass_ticket=xxx&r=xxx&seq=0&skey=xxx' 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} 
response = requests.get(url, headers=headers)

最后,我们就可以使用BeautifulSoup库来解析返回的HTML文本:

from bs4 import BeautifulSoup 
soup = BeautifulSoup(response.text, 'lxml') 
for item in soup.find_all('memberlist'): 
    print(item['nickname'], item['username'])

通过上述步骤,我们就能够轻松地爬取微信上的所有好友列表和相关数据了。此外,我们还可以使用相关API来获取特定好友之间的历史对话内容。总之,Python爬取微信聊天信息是一个强大而有效的工具,能够帮助我们快速地获得大量有用数据。

Python3爬虫查看微信撤回消息

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载手机App,0基础随时随地学编程>>戳此了解

导语

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

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

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

相关文件

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

密码: j43u

开发工具

Python版本:3.6.4

相关模块

itchat模块;

以及一些Python自带的模块。

环境搭建

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

原理简介

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

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

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

使用演示

Windows系统:

手机端:

视频链接

Linux系统:

手机端:

视频链接

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字段我们发现<msgid>8784390488772995470</msgid>的id与我们之前发送消息的id是一致的,而<replacemsg>这个标签也验证了我们的猜想,确实是用新消息替换原消息。

2.找到被撤回消息

根据抓取正常消息撤回消息的内容我们发现规则:撤回消息中会包含之前被撤回的那条消息的msgid,那我们只要找到之前那条消息就可以了,而wxpy模块默认为我们缓存了最近的200条消息,所以我们只要遍历这些历史消息然后比较msgid就可以找到被撤回的那条消息啦!
 如果你微信消息太过频繁,2分钟之内消息数量超过200,则可以将max_history设置大些。

3.转发被撤回消息

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

msg.forward(bot.file_helper)

4.代码

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

四、功能验证

五、总结

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

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

Github项目地址:https://github.com/pig6/wxrobot
wxpy官方文档:https://wxpy.readthedocs.io/zh/latest

更多

代码截止2018-06-25测试无误。

T_T这个脚本是完全合法无害的,只不过把自己收到的所有消息全部缓存下来,以防止别人撤回消息后自己看不到罢了。

不过应该也没人会无聊到把脚本放服务器上跑来监视自己的好友有没有撤回消息吧~~~

所以就纯当技(无)术(聊)交(取)流(乐)了?


阅读全文
以上是VUE中文网为你收集整理的python爬取微信聊天信息 Python3爬虫查看微信撤回消息全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们