基于Python+adb实现微信是否好友检测

本文介绍的基于Python+adb实现的微信好友检测,是通过adb操控手机,模拟人的点击、截屏操作,对应用无侵入,无需扫描登录即可实现好友检测。

网上看到一些文章类似功能的实现,总结起来千篇一律的引入一个叫itchat的库来实现。我不喜欢这种方式,感觉这种方式对应用有侵入,有潜在安全风险和被封号的风险,同时需要扫描登录,操作繁琐。

仅学习实践,已开源至GitHub
https://github.com/hilbp/app-bot

如何用

运行python setup.py或者python wechat-bot.py

特点
  1. 手机无需root,只需开启调试模式
  2. 利用图像处理技术
  3. 操作简单
实现原理
  1. 电脑通过adb操控手机
  2. 模拟点击打开联系人朋友圈
  3. 多次滑动朋友圈然后截屏
  4. 将截屏传至电脑,Python调用ocr(图片中文字提取)接口提取文字
  5. 通过提取到的文字判断是否是好友

为什么要多次滑动朋友圈呢?
如果滑动一次的话并不能确定好友状态,多滑动几次多拉取几次动态,底部会显示“朋友仅展示...”“非好友...”,这些文字会被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
写在最后
  • 微信【通讯录】列表中存在微信团队账号、文件传输账号、对方已删除的帐号、自己的账号,这些账号没有朋友圈,要加以排除
  • 还有一种情况,就是好友关闭了朋友圈,这种情况也要加以排除。
热爱技术 期与同道交流
我的微信公众号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容