Python3爬蟲查看微信撤回消息

2021-12-08 15:12 更新

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄

下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解

導(dǎo)語

賦閑在家?guī)滋?,想鼓搗點(diǎn)簡單又好玩的腳本分享給大家,于是就有了這篇文章~~~

本文將利用Python記錄微信好友/微信群中他人撤回的消息,并將這些消息通過文件傳輸助手發(fā)送到自己的手機(jī)上。

讓我們愉快地開始吧~~~

相關(guān)文件

百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1UdTXIXy4iGes24zv9YBIZg 

密碼: j43u

開發(fā)工具

Python版本:3.6.4

相關(guān)模塊

itchat模塊;

以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

原理簡介

思路比較簡單,利用itchat模塊登錄網(wǎng)頁版微信,將自己微信收到的所有消息都緩存下來,當(dāng)檢測到有消息撤回時(shí),將撤回消息的緩存版本通過文件傳輸助手發(fā)送到自己的手機(jī)上。

因此,你必須保證腳本24小時(shí)運(yùn)行才可以一直監(jiān)視別人有沒有撤回消息。

具體實(shí)現(xiàn)過程詳見相關(guān)文件中的源代碼。

使用演示

Windows系統(tǒng):

手機(jī)端:

視頻鏈接

Linux系統(tǒng):

手機(jī)端:

視頻鏈接

1.微信撤回消息實(shí)現(xiàn)原理

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

其實(shí)微信撤回消息原理就是操作者在點(diǎn)擊撤回的時(shí)候,客戶端會自動發(fā)一條系統(tǒng)消息:“xxx撤回了一條消息”,然后對方app端收到消息后解析,替換原消息,改個(gè)顯示的樣式即可

豬哥給大家演示一下正常消息撤回消息的內(nèi)容到底有什么區(qū)別:
正常消息:Content='你好騷啊',大家留意一下MsgId='8784390488772995470'

撤回消息:Content是一串xml格式的內(nèi)容

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

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

分析上面撤回的Content字段我們發(fā)現(xiàn)<msgid>8784390488772995470</msgid>的id與我們之前發(fā)送消息的id是一致的,而<replacemsg>這個(gè)標(biāo)簽也驗(yàn)證了我們的猜想,確實(shí)是用新消息替換原消息。

2.找到被撤回消息

根據(jù)抓取正常消息撤回消息的內(nèi)容我們發(fā)現(xiàn)規(guī)則:撤回消息中會包含之前被撤回的那條消息的msgid,那我們只要找到之前那條消息就可以了,而wxpy模塊默認(rèn)為我們緩存了最近的200條消息,所以我們只要遍歷這些歷史消息然后比較msgid就可以找到被撤回的那條消息啦!
 如果你微信消息太過頻繁,2分鐘之內(nèi)消息數(shù)量超過200,則可以將max_history設(shè)置大些。

3.轉(zhuǎn)發(fā)被撤回消息

原理也搞懂了,被撤回的消息也找到了,就差最后一步轉(zhuǎn)發(fā)消息了,如果你之前玩過wxpy肯定會了吧,只要一行代碼就可以將消息轉(zhuǎn)發(fā):

msg.forward(bot.file_helper)

4.代碼

原理和過程講完了,代碼貼出來給大家看看,注釋還是比較詳細(xì),有不懂得話可以在學(xué)習(xí)群中問我。

四、功能驗(yàn)證

五、總結(jié)

微信消息防撤回功能實(shí)現(xiàn)簡單,但實(shí)用性很好,目前項(xiàng)目的唯一缺點(diǎn)就是易用性差,簡單說就是我們還沒有將項(xiàng)目部署服務(wù)器,每次使用都得打開電腦然后運(yùn)行還得一直開著,豬哥考慮后面將項(xiàng)目部署在云服務(wù)器上或者打包成apk,這樣就使用起來就非常方便了,而且還可以把a(bǔ)pk發(fā)給朋友,讓朋友也體驗(yàn)此功能!

學(xué)會這招,再也不用好奇對方到底撤回了啥消息,快下載項(xiàng)目試試吧!下載項(xiàng)目后可直接運(yùn)行不需要修改代碼

Github項(xiàng)目地址:https://github.com/pig6/wxrobot
wxpy官方文檔:https://wxpy.readthedocs.io/zh/latest

更多

代碼截止2018-06-25測試無誤。

T_T這個(gè)腳本是完全合法無害的,只不過把自己收到的所有消息全部緩存下來,以防止別人撤回消息后自己看不到罷了。

不過應(yīng)該也沒人會無聊到把腳本放服務(wù)器上跑來監(jiān)視自己的好友有沒有撤回消息吧~~~

所以就純當(dāng)技(無)術(shù)(聊)交(取)流(樂)了?


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號