本文介绍的基于Python+adb实现的微信好友检测,是通过adb操控手机,模拟人的点击、截屏操作,对应用无侵入,无需扫描登录即可实现好友检测。
网上看到一些文章类似功能的实现,总结起来千篇一律的引入一个叫itchat的库来实现。我不喜欢这种方式,感觉这种方式对应用有侵入,有潜在安全风险和被封号的风险,同时需要扫描登录,操作繁琐。
仅学习实践,已开源至GitHub
https://github.com/hilbp/app-bot
如何用
运行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
写在最后
- 微信【通讯录】列表中存在微信团队账号、文件传输账号、对方已删除的帐号、自己的账号,这些账号没有朋友圈,要加以排除
- 还有一种情况,就是好友关闭了朋友圈,这种情况也要加以排除。