作者 | 星安果

来源 | AirPython(ID:AirPython)

01 目标场景

不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知。
相信每个人的微信通信录里都存在一些「 僵尸粉 」,他们默默地躺在联系人列表中,你以为对方还是朋友,那就真是太年轻、太天真的;实际上,对方早就把从好友列表中删了,那如何来筛选出这群人呢?
网上的很大量检测僵尸粉的工具,检测的时候会给微信通信录内的每一个好友发送一条检测信息,严重「 打扰 」到对方; 另外一部分软件在检测的时候,会植入一些代码病毒,暗箱操作显得很不安全。

本篇文章的目的是自动化操作微信 App,通过「 模拟给好友转账 」来筛选出所有的僵尸粉,并一键删除它们。 02 准备工作
在开始编写脚本之前,需要做好如下准备工作

  • 一部 Root 后的 Android 手机或者模拟器,如果没有 Root 的设备,推荐使用网易 MuMu 模拟器

  • Android 开发环境、Android Studio

  • sqlcipher 图形化工具

  • 自动化工具:Python 虚拟环境下安装 pocoui

03 编写脚本

整个操作分为 3 步骤,分别是破解微信数据库筛选出通信录中的好友、模拟给好友转账得到僵尸粉数据、删除所有僵尸粉。
第 1 步,我们需要破解微信 App 的数据库。
ps: 这里只是简单的说一下破解流程,想一键破解微信通信录数据,可以跳过这一步,直接使用文末提供的 APK。
首先,我们使用 Android Studio 新建一个项目,在项目初始化的时候,授予应用管理员权限以及修改微信目录的读写权限。

然后,获取微信数据库的密码。
微信数据库的密码是由设备的 imei 和微信的 uid 进过 md5 算法生成的。

接着,就可以使用 SQLCipher 依赖库来对微信数据库进行查询,我们需要为项目添加如下依赖,方便操作数据库。

利用上面得到的密码打开加密数据库,然后查询「 rcontact 」表获取微信通讯录内所有的好友的微信号、昵称、用户名等数据。

需要注意的是,数据库中 rcontact 表的数据比较杂乱,除了正常的好友数据,黑名单好友、已删除好友、公众号、微信群等数据也包含在内,需要我们通过 type 和 verifyFlag 字段进行筛选。

为了便于 Python 操作,最后将查询的好友数据写入到 csv 文件中。

第 2 步,我们需要模拟给好友转账,来判断这个好友关系是否正常。
首先,我们需要初始化 Airtest,然后利用 adb 把第 1 步生成的数据从手机里导出到本地。

然后就是一系列自动化操作。
打开微信,遍历好友列表,拿到每一个好友的微信号去搜索好友,跳转到好友的聊天界面。

接着尝试着给对方转账,如果好友关系正常,就会跳出一个支付页面让输入密码。

如果是僵尸粉,应用会弹出一个警告对话框,提示你不是收款方好友,没法完成转账的操作。

通过警告对话框是否存在,就可以判断好友关系是否正常。 非正常的好友关系,包含:僵尸粉、对方账号异常等。

最后,模拟点击手机的返回键,一直回退到微信主界面。

循环上面的操作,就可以判断出哪些是僵尸粉,哪些好友的账号被限制,哪些是正常的好友关系。

第 3 步,删除上面获取到的僵尸粉列表。

拿到上面的僵尸粉数据列表,就可以利用上面的方式进行一系列自动化UI 操作,删除掉这些好友。

04 结果结论

编译 Android 项目或者直接运行 APK 就能将微信通信录的好友数据保存到项目文件目录下。

然后运行 Python 程序会遍历通讯录好友数据,自动化去操作微信 App,接着将所有的僵尸粉写入到本地文件中,最后可以选择将这些僵尸粉全部删除掉。

我已经将全部源码上传到后台上,关注公众号后回复「 僵尸粉 」即可获得,文中的 APK 可以直接回复「 730 」获取下载链接。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

(*本文为 Python大本营转载文章,转载请联系原作者

社群福利

扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周一、三、五更新技术福利,还有不定期的抽奖活动~

AI 开发者大会精彩提前看

2019 AI开发者大会重磅嘉宾更新:阿里、华为、Google Brain、Amazon、微软中国、百度、京东、小米、快手、科大讯飞、商汤、旷视、图森、云知声、思必驰...“硬核AI技术大会,一年参加一次就够了”。扫码查看更多嘉宾和大会信息。

推荐阅读:

  • 干货 | 20个Python教程,掌握时间序列的特征分析(附代码)

  • 吐血整理!140种Python标准库、第三方库和外部工具都有了

  • 用Python分析“标题党”文章

  • 别再说学不会:超棒的Numpy可视化学习教程来了

  • 如何用爬虫技术帮助孩子秒到心仪的幼儿园(基础篇)

  • Python传奇:30年崛起之路

  • 干货 | Python后台开发的高并发场景优化解决方案

  • 2019年最新华为、BAT、美团、头条、滴滴面试题目及答案汇总

  • 阿里巴巴杨群:高并发场景下Python的性能挑战

你点的每个“在看”,我都认真当成了喜欢

谁偷偷删了你的微信?别慌!Python帮你都揪出来了相关推荐

  1. 谁偷偷删了你的微信?别慌!Python 帮你都揪出来了!

    1 目 标 场 景 不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知. Python资源共享群:484031800 相信每个人的微信通信录里都存在 ...

  2. 谁偷偷删了你的微信?别慌!Python 帮你都揪出来了

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  3. 有人偷偷删了你的微信?别慌!Python 帮你揪出来

    相信每个人的微信通信录里都存在一些 「 僵尸粉 」 ,他们默默地躺在联系人列表中,你以为对方还是朋友,那就真是太年轻.太天真的:实际上,对方早就把从好友列表中删了,那如何来筛选出这群人呢? 本篇文章的 ...

  4. 谁偷偷删了你的微信?别慌!Python 把 TA 揪出来

    1 目 标 场 景 不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知. 相信每个人的微信通信录里都存在一些「僵尸粉」,他们默默地躺在联系人列表中, ...

  5. 谁偷偷删了你的微信?别慌啊,Python全都帮你都揪出来

    导语: 哈喽,哈喽~小编不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知.反正小编经历过! 每个人的微信通信录里都存在一些「僵尸粉」,他们默默地躺 ...

  6. python微信库有哪些_谁偷偷删了你的微信?别慌!一篇Python学习教程帮你都揪出来...

    contacts) { try { File file = new File(output_path); //删除之前保存的文件 if (file.exists()) { file.delete(); ...

  7. 谁偷偷删了你的微信?别慌!Python 揪出来

    不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知. 相信每个人的微信通信录里都存在一些「僵尸粉」,他们默默地躺在联系人列表中,你以为对方还是朋友, ...

  8. 谁偷偷删了你的微信?别慌!Python 帮你揪出来

    不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知. 相信每个人的微信通信录里都存在一些 「 僵尸粉 」 ,他们默默地躺在联系人列表中,你以为对方还 ...

  9. 24h删 | 全网资源任意爬,Python简直太强大了

    我最近看中了一款CPU,结果被价格劝退. 想提前练练手速,等有活动了再冲. 结果被来我家玩的表弟知道了,他嘿嘿一笑. "这年头还靠手速?我来帮你抢." 只见他打开电脑,刷刷输入几行 ...

最新文章

  1. python爬取贴吧所有帖子-python 爬虫爬取百度贴吧,获取海量信息
  2. 【集训队作业2018】复读机
  3. git configuration
  4. xp系统图标大全_XP、Win7一键清理(批处理)小程序只有2.7KB大小
  5. 桶排序/Bucket Sort
  6. 复制和删除文件夹所有内容
  7. HDOJ--1728--逃离迷宫(广搜)
  8. 论文笔记_S2D.12-2019-ITSC-DFuseNet: 用于图像稠密深度补全的RGB和稀疏深度信息深度融合的网络
  9. uniapp调起打印机(调起第三方打印软件)适用app,将页面生成图片打印的两种方式
  10. Rob Knight: PCR不需要做三个平行再混合!
  11. SQL Server-【知识与实战III】年龄查询、条件查询、多表查询、姓氏查询
  12. PS利用切片工具将一张大图裁剪成多个子图像并导出
  13. 【开源】思源笔记自动备份
  14. Android 10.0 SystemUI状态栏屏蔽掉通知栏不显示通知
  15. Windows系统电脑常用快捷键
  16. Web安全—文件上传漏洞
  17. Onenote笔记转换为Markdown文本
  18. swap (虚拟内存)
  19. v-charts legend设置排列对齐的方法
  20. arm 访问内存异常

热门文章

  1. CSS图片居中显示 超出div容器高度度隐藏 css3 object-fit
  2. 基于 t 维空间中点的确定的(t, n)门限秘密共享
  3. C语言入门笔记 第五讲【循环语句之while】
  4. pods处于ContainerCreating状态
  5. ubuntu20.04安装有道词典报错处理方法
  6. mysqldump参数之-d -t -T
  7. SpringBoot的@Enable* 注解的工作原理
  8. Android ListView item里控件的监听
  9. 关于递归函数转换为非递归函数的一些方式
  10. Font Color,iframe标签