用Python找出了删除自己微信的所有人并将他们自动化删除了

news/2024/10/19 2:23:12/

用Python找出了删除自己微信的所有人并将他们自动化删除了

你是否有微信被删了好友不自知,还傻傻的给对方发消息,结果出现了下图中那尴尬的一幕的经历呢?其实我们可以用Python提前把他们找出来并自动化删除避免尴尬的。
在这里插入图片描述
为了避免再次出现上述情况,我决定把微信通讯录中删除了自己的人全部找出来并且删除,之前我已经在网上了解到检查自己的微信是否被删比较好的方式就是转账,通过转账我们可以实现无痕检测。

下面我们通过两张图片直观的看一下微信被删前后给别人转账的效果:

在这里插入图片描述
在这里插入图片描述
现在已经知道了检测方式,正在我准备挨个检测时,无意识的滑动了微信通讯录列表,100、200 … 500 …
编程实现的基本思路如下:

获取微信通讯录列表中每个人的名字(备注)并记录,这个是不会有重复的,因为即使在之前加好友时有重复的,自己也会在备注时给改了

遍历获取到的通讯录列表,分别对每一个人执行转账操作,如果检测到是删除自己的人就对其执行删除操作,如果检测到不是删除自己的人则继续检测下一个人,依次往复循环

环境

因之前在模拟器上测试 Appium 模拟微信转账可能有点问题,因此本文使用真机实现。

先简单介绍一下真机环境,下面一起来看一下相应步骤。

打开微信登录自己的微信号

在手机中依次执行(点击):设置->我的设备->全部参数->MIUI版本(多次点击,开启开发者模式)->返回设置列表->更多设置->开发者选项->开启开发者选项并分别开启:USB调试、USB安装、USB调试(安全设置)选项,如图所示:
在这里插入图片描述
此时手机上会弹出USB的用途弹框,我们选择传输文件(MTP)即可,如图所示:
在这里插入图片描述
在电脑 CMD 中执行 adb devices 命令,看是否能找到自己的手机,比如下图所示就是成功的结果了
在这里插入图片描述
在上面步骤中你可能出现找不到手机的情况,通常这种情况是驱动问题,这里介绍一种简单的处理方式:下载一个驱动精灵,安装启动之后点击驱动管理,之后安装相应驱动即可解决,如图所示:
在这里插入图片描述
在这里插入图片描述
通过上面的一系列操作,我们已经处理好了真机环境了。

Appium 的环境本文就不说了,如果不清楚的话,可以看一下:环境
首先看一下相应参数配置,代码实现如下:

desired_caps = {"platformName": "Android", # 系统"platformVersion": "8.0.0", # 系统本号"deviceName": "m5s", # 设备名"appPackage": "com.tencent.mm", # 包名"appActivity": ".ui.LauncherUI", # app 启动时主 Activity'unicodeKeyboard': True, # 使用自带输入法'noReset': True # 保留 session 信息,可以避免重新登录
}

接着看一下如何获取微信通讯录名字(备注)列表?代码实现如下:

# 获取通讯录列表
def get_address_list():driver.find_elements_by_id('com.tencent.mm:id/cn_')[1].click()# 获取昵称(备注)address_list = driver.find_elements_by_id('com.tencent.mm:id/dy5')remarks = []for address in address_list:remark = address.get_attribute("content-desc")# 排除自己和微信官方号if remark != "自己的微信名" and "微信" not in remark:remarks.append(remark)return remarks

取到了微信通讯录列表之后,我们就可以对其进行遍历检测了,下面看一下如何实现检测自己的微信是否被删,代码实现如下:

# 判断是否被删
def is_delete(remark, count):if count == "1":time.sleep(2)print('点击微信搜索框')driver.find_element_by_id('com.tencent.mm:id/cn1').click()time.sleep(2)print('在搜索框输入搜索信息')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(remark)time.sleep(2)print('点击搜索到的好友')driver.find_element_by_id('com.tencent.mm:id/tm').click()time.sleep(2)# 转账driver.find_element_by_id('com.tencent.mm:id/aks').click()time.sleep(2)driver.find_elements_by_id('com.tencent.mm:id/pa')[5].click()time.sleep(2)driver.find_element_by_id('com.tencent.mm:id/cx_').click()time.sleep(2)driver.find_element_by_id('com.tencent.mm:id/cxi').click()time.sleep(5)# 判断是否被删is_exist = is_element_exist('com.tencent.mm:id/jh')if is_exist is True:return remarkelse:return False

上述方法中,如果检测到是删了自己微信的人就返回那个人的微信名(备注),然后我们将这些人记录起来;如果检测到不是删除自己微信的人就返回 False。

上述过程执行完了之后,我们就可以获取到所有删了自己微信的人了,接下来我们就可以将这些人都从自己微信通讯录中删除了,删除实现的代码如下:

# 删除把自己删除的人
def del_person(nicks):for inx, val in enumerate(nicks):time.sleep(2)if inx == 0:print('在搜索框输入搜索信息')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(val)else:time.sleep(2)print('点击微信搜索框')driver.find_element_by_id('com.tencent.mm:id/cn1').click()print('在搜索框输入搜索信息')time.sleep(1)driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(val)time.sleep(2)print('点击搜索到的人')driver.find_element_by_id('com.tencent.mm:id/tm').click()time.sleep(2)print('点击聊天对话框右上角...')driver.find_element_by_id('com.tencent.mm:id/cj').click()time.sleep(2)print('点击头像')driver.find_element_by_id('com.tencent.mm:id/f3y').click()time.sleep(2)print('点击联系人右上角...')driver.find_element_by_id('com.tencent.mm:id/cj').click()time.sleep(2)print('点击删除按钮')driver.find_element_by_id('com.tencent.mm:id/g6f').click()time.sleep(2)print('点击弹出框中的删除')driver.find_element_by_id('com.tencent.mm:id/doz').click()

至此,我们就利用 Python + Appium 实现了自动化找出微信中删除自己的人并将其删除的工作了。


http://www.ppmy.cn/news/11138.html

相关文章

【异常】记一次前端因资源无法加载导致白屏异常问题

一、背景 自从运维同事强烈要求前端的环境要使用多套的,参考文章 【项目】参考若依的前端框架去多环境 于是一番捣鼓与改造之后,看似已经顺利了 但运维说,前端还是有问题,需要他帮我改下,于是改了如下内容 什么嘛&a…

接口测试该怎么做?持证上岗的Charles,可以帮你做什么?

上篇文章,我们感受到tcpdump与wireshark的组合之美,原来工具与工具之前不只竞争,还有合作,你是否还记得上篇文章中有一个伏笔,那就是代理工具:charles。本文章针对charles进行讲解,带你继续体验…

C语言第30课笔记

1.strerror(errno要包含头文件errno.h) 2.perror头文件为stdio.h 3.一些字符函数 4.字母大小写转换函数 5.memmove理论上是memcpy的升级版(可以自己拷贝自己)。 6.匿名结构体类型在类型创建好了之后直接创建变量,只能用一次。两个完全相同的匿名结构体类型&#xf…

yolov3-tiny的darknet权重转onnx

前言 之前一直鸽了yolov3-tiny的onnx模型修复,今天终于把最后一个bug解决了,如果想直接享受成果的,直接点我的github仓库下载,使用说明都写了,这篇文章呢主要是给大家分享一下思路和过程,希望能够启发更多…

多线程之waitnotify

目录: 前言 1.wait()方法 2 notify()方法 3.wait & notify的代码示例: 4.关于notifyAll()方法 前言 线程最大的问题就是抢占式执行,随机调度。虽然线程在操作系统内核里的调度是随机的,但是可以通过一些办法来控制线程…

Java面向对象进阶之static

目录static静态关键字static:修饰成员变量,内存机制static是什么、修饰成员变量的方法总结static修饰成员变量的内存原理static:修饰成员方法、内存机制static修饰成员方法的基本用法总结static修饰成员方法的内存原理static的注意事项static…

后端人眼中的Vue(四)

七、Vue生命周期 ​ Vue的生命周期指的是Vue实例在页面中创建到销毁整个过程。Vue提供了在各个生命周期的钩子,钩子也叫Vue生命周期函数。这些生命周期函数是伴随着Vue实例创建、销毁的过程中自动触发的(不需要人为手动触发)。Vue实例生命周期…

ffmpeg图片转视频

视频转图片 ffmpeg -i test.mp4 -r 25 path_to_image/%05d.jpg有序图片转视频 ffmpeg -f image2 -i dirname/%05d.jpg -vcodec libx264 -r 25 -b:v 5969k test.mp4-f image2:图像转视频 -i dirname/%05d.jpg:输入 -vcodec libx264:采用264编…