美文网首页Docker容器
基于Python+adb实现微信是否好友检测

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

作者: yummy觉一 | 来源:发表于2019-08-18 10:31 被阅读4次

本文介绍的基于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
写在最后
  • 微信【通讯录】列表中存在微信团队账号、文件传输账号、对方已删除的帐号、自己的账号,这些账号没有朋友圈,要加以排除
  • 还有一种情况,就是好友关闭了朋友圈,这种情况也要加以排除。
热爱技术 期与同道交流
我的微信公众号

相关文章

网友评论

    本文标题:基于Python+adb实现微信是否好友检测

    本文链接:https://www.haomeiwen.com/subject/pktrsctx.html