本文介紹的基于Python+adb實現(xiàn)的微信好友檢測彭雾,是通過adb操控手機,模擬人的點擊锁保、截屏操作薯酝,對應(yīng)用無侵入,無需掃描登錄即可實現(xiàn)好友檢測爽柒。
網(wǎng)上看到一些文章類似功能的實現(xiàn)吴菠,總結(jié)起來千篇一律的引入一個叫itchat的庫來實現(xiàn)。我不喜歡這種方式浩村,感覺這種方式對應(yīng)用有侵入做葵,有潛在安全風(fēng)險和被封號的風(fēng)險,同時需要掃描登錄心墅,操作繁瑣蜂挪。
僅學(xué)習(xí)實踐重挑,已開源至GitHub
https://github.com/hilbp/app-bot
如何用
運行python setup.py
或者python wechat-bot.py
特點
- 手機無需root,只需開啟調(diào)試模式
- 利用圖像處理技術(shù)
- 操作簡單
實現(xiàn)原理
- 電腦通過adb操控手機
- 模擬點擊打開聯(lián)系人朋友圈
- 多次滑動朋友圈然后截屏
- 將截屏傳至電腦棠涮,Python調(diào)用ocr(圖片中文字提取)接口提取文字
- 通過提取到的文字判斷是否是好友
為什么要多次滑動朋友圈呢?
如果滑動一次的話并不能確定好友狀態(tài)刺覆,多滑動幾次多拉取幾次動態(tài)严肪,底部會顯示“朋友僅展示...”“非好友...”,這些文字會被ocr技術(shù)提取到谦屑,這也是判斷是否是好友的核心依據(jù)
完整功能代碼在GitHub驳糯,這里show一段判斷代碼
# 判斷是否是好友,調(diào)用百度的orc接口氢橙,返回自動含義參考百度ai文檔
def test_is_friend(self, res):
if res['words_result_num'] == 0: #
self.temp['status'] = '該好友屏蔽了你'
return False
last_word = res['words_result'][-1]['words']
self.temp['status'] = last_word
index = last_word.find('朋友僅展示')
if index >= 0:
return True
index = last_word.find('非對方的朋友')
if index >= 0:
return False
if res['words_result_num'] < 3:
self.temp['status'] = '該好友屏蔽了你'
return False
return True
pass
寫在最后
- 微信【通訊錄】列表中存在微信團隊賬號酝枢、文件傳輸賬號、對方已刪除的帳號悍手、自己的賬號帘睦,這些賬號沒有朋友圈,要加以排除
- 還有一種情況坦康,就是好友關(guān)閉了朋友圈竣付,這種情況也要加以排除。
熱愛技術(shù) 期與同道交流
我的微信公眾號