不知道你有沒有經歷過,想聯繫一位很長時間沒有聯繫的朋友,發現對方很早之前已經把你刪除了,而你還一無所知。linux
相信每一個人的微信通訊錄裏都存在一些「殭屍粉」,他們默默地躺在聯繫人列表中,你覺得對方仍是朋友,那就真是太年輕、太天真的;實際上,對方早就把從好友列表中刪了,那如何來篩選出這羣人呢?android
網上的很大量檢測殭屍粉的工具,檢測的時候會給微信通訊錄內的每個好友發送一條檢測信息,嚴重「打擾」到對方;另一部分軟件在檢測的時候,會植入一些代碼病毒,暗箱操做顯得很不安全。web
本篇文章的目的是自動化操做微信 App,經過「模擬給好友轉帳」來篩選出全部的殭屍粉,並一鍵刪除它們。算法
2spring
準 備 工 做sql
在開始編寫腳本以前,須要作好以下準備工做數據庫
一部 Root 後的 Android 手機或者模擬器,若是沒有 Root 的設備,推薦使用網易 MuMu 模擬器安全
Android 開發環境、Android Studio微信
sqlcipher 圖形化工具app
自動化工具:Python 虛擬環境下安裝 pocoui
3
編 寫 腳 本
整個操做分爲 3 步驟,分別是破解微信數據庫篩選出通訊錄中的好友、模擬給好友轉帳獲得殭屍粉數據、刪除全部殭屍粉。
第 1 步,咱們須要破解微信 App 的數據庫。
ps:這裏只是簡單的說一下破解流程,想一鍵破解微信通訊錄數據,能夠跳過這一步,直接使用文末提供的 APK。
首先,咱們使用 Android Studio 新建一個項目,在項目初始化的時候,授予應用管理員權限以及修改微信目錄的讀寫權限。
而後,獲取微信數據庫的密碼。
微信數據庫的密碼是由設備的 imei 和微信的 uid 進過 md5 算法生成的。
接着,就可使用 SQLCipher 依賴庫來對微信數據庫進行查詢,咱們須要爲項目添加以下依賴,方便操做數據庫。
利用上面獲得的密碼打開加密數據庫,而後查詢「rcontact」表獲取微信通信錄內全部的好友的微信號、暱稱、用戶名等數據。
須要注意的是,數據庫中 rcontact 表的數據比較雜亂,除了正常的好友數據,黑名單好友、已刪除好友、公衆號、微信羣等數據也包含在內,須要咱們經過 type 和 verifyFlag 字段進行篩選。
爲了便於 Python 操做,最後將查詢的好友數據寫入到 csv 文件中。
第 2 步,咱們須要模擬給好友轉帳,來判斷這個好友關係是否正常。
首先,咱們須要初始化 Airtest,而後利用 adb 把第 1 步生成的數據從手機裏導出到本地。
而後就是一系列自動化操做。
打開微信,遍歷好友列表,拿到每個好友的微信號去搜索好友,跳轉到好友的聊天界面。
接着嘗試着給對方轉帳,若是好友關係正常,就會跳出一個支付頁面讓輸入密碼。
若是是殭屍粉,應用會彈出一個警告對話框,提示你不是收款方好友,無法完成轉帳的操做。
經過警告對話框是否存在,就能夠判斷好友關係是否正常。非正常的好友關係,包含:殭屍粉、對方帳號異常等。
最後,模擬點擊手機的返回鍵,一直回退到微信主界面。
循環上面的操做,就能夠判斷出哪些是殭屍粉,哪些好友的帳號被限制,哪些是正常的好友關係。
第 3 步,刪除上面獲取到的殭屍粉列表。
拿到上面的殭屍粉數據列表,就能夠利用上面的方式進行一系列自動化UI 操做,刪除掉這些好友。
4
結 果 結 論
編譯 Android 項目或者直接運行 APK 就能將微信通訊錄的好友數據保存到項目文件目錄下。
而後運行 Python 程序會遍歷通信錄好友數據,自動化去操做微信 App,接着將全部的殭屍粉寫入到本地文件中,最後能夠選擇將這些殭屍粉所有刪除掉。