本文介绍的基于Python+adb实现的微信好友检测,是通过adb操控手机,模拟人的点击、截屏、然后调用OCR接口实现好友检测,对应用无侵入,无需扫描登录即可实现好友检测。网上看到一些文章类似功能的实现,总结起来千篇一律的引入一个叫itchat的库来实现。我不喜欢这种方式,感觉这种方式对应用有侵入,有潜在安全风险和被封号的风险,同时需要扫描登录,操作繁琐。
如何用
运行python setup.py或者python wechat-bot.py
特点手机无需root,只需开启调试模式
利用图像处理技术
操作简单
实现原理电脑通过adb操控手机
模拟点击打开联系人朋友圈
多次滑动朋友圈然后截屏
将截屏传至电脑,Python调用ocr(图片中文字提取)接口提取文字
通过提取到的文字判断是否是好友为什么要多次滑动朋友圈呢?
如果滑动一次的话并不能确定好友状态,多滑动几次多拉取几次动态,底部会显示“朋友仅展示...”“非好友...”,这些文字会被ocr技术提取到,这也是判断是否是好友的核心依据
完整功能代码在GitHub,这里show一段判断代码
# 判断是否是好友,调用百度的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
写在最后微信【通讯录】列表中存在微信团队账号、文件传输账号、对方已删除的帐号、自己的账号,这些账号没有朋友圈,要加以排除
还有一种情况,就是好友关闭了朋友圈,这种情况也要加以排除。