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

news2024/11/25 20:50: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 remark
    else:
        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.coloradmin.cn/o/154098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tools for better thinking

内容来自untools官网,感兴趣的可以去翻译一下,我只做下总结 理解系统 Concept mapConnection circlesIceberg ModelBalancing feedback loopReinforcing feedback loop 做出决策 Cynefin frameworkSix Thinking HatsSecond-order thinkingEisenhower Mat…

【LeetCode】753. 破解保险箱

753. 破解保险箱 题目描述 有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 。 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。 举个例子&#xff0c…

怎么看电脑配置?Windows和Mac系统配置的查看方法

电脑的配置一般指电脑硬件配件的高档程度和性价比,计算机的性能主要取决于主要的硬件配置。很多朋友在购买电脑之前应该注意查看电脑的配置,怎么看电脑配置?下面有关于Windows系统和Mac系统电脑配置的不同查看方式,一起来看看吧&a…

光遗传学应用中所涉及到的光纤产品盘点!

如上图所示,在光遗传学的应用中,会使用到如光遗传跳线、光遗传插芯针、光纤旋转器、光纤耦合器/分束器(12或22)等产品。对于这些产品,根据不同的应用,又涉及到光纤芯径、数值孔径NA、出纤长度、插芯直径等众…

如何拖拽图片放到指定的格子里

本文首发于微信公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。嗨!大家好,我是小蚂蚁。今天来分享一个如何在游戏中拖拽一个图片,然后把它放到指定的格子里&#xff0c…

网络编程(十)——基于UDP协议的套接字

TCP和UDP协议传输对比 TCP协议传输数据可靠,TCP传输数据后,如果收到接收方回应消息,则会在本机缓存中删除已发送消息;如果没有收到接收方回应消息,则会利用缓存继续发送消息。UDP协议传输数据相对来说不可靠&#xff…

学生看书用白炽灯和led灯哪个好?学生led护眼灯排行榜

我们都知道学生的晶状体是比较敏感的,不得不承认一个实际问题,LED灯已经普遍到日常生活中,不管是教室、企业、书房,使用LED灯居多,主要是因为它的电流稳定、光线柔和、光效效率高,所以LED灯的灯光没有紫外线…

Qt OpenGL(07)递归细分四面体法绘制球体

文章目录Qt OpenGL通过递归细分逼近球面思路下面就是绘制的代码:Widget.cpp顶点着色器片段着色器Qt OpenGL通过递归细分逼近球面 在OpenGL中绘制球面,不是太简单的事情。因为球面和圆都不是OpenGL所支持的图元,因此我们将通过一种称为递归细分…

飞宇科技在创业板IPO终止:长江证券撤回保荐,吴玉飞为实控人

2023年1月10日,深圳证券交易所披露的信息显示,江苏飞宇医药科技股份有限公司(下称“飞宇科技”)的保荐机构(长江证券)提交了撤回飞宇科技首次公开发行股票并在创业板上市申请的申请因此,深圳证券…

BOM(二): 元素偏移量offset 、元素可视区client 、元素滚动 scroll、动画

PC端网页特效元素偏移量offset元素可视区client元素滚动 scroll 系列动画元素偏移量offset 1.offset概述 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。 获得元素距离带有定位父元素的位置获得元素自身的大小(宽度高度&…

Python 字典(Dictionary)操作详解

这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下。 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。 一、创建字典 字典由键和对应值成对组成。字典也被称作关…

微信小程序云开发之新闻博客社区项目debug后的项目代码

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,html特效,vue2基础领域博主 本次文章主要时为我最近在哔哩哔哩上的新发布的视频做一个映射! 哔哩哔哩欢迎关注:小淼前端 哔…

【Python从入门到进阶】3、运行python代码

接上篇《2、Python环境的安装》 上一篇我们学习了如何下载安装Python编程环境,以及如何使用pip管理Python包。本篇我们来学习如何使用终端和执行文件运行python代码。 一、终端运行 我们可以在命令行终端进入python解释程序,直接输入python代码&#x…

Spring Cloud OpenFeign @SpringQueryMap注解

概述 我们在使用GetMapping方法是,对于多个参数都是通过RequestParam参数一个一个接取的,多个参数时会比较麻烦,能像RequestBody那样接取PostMapping的参数么?答案是可以的。 SpringQueryMap介绍 SpringQueryMap 注解是 spring…

关于数据管理、数据治理和数据资产,你搞得清楚吗?

全球数字化的趋势愈演愈烈,我国信息化规模日渐增大,我们也每天都在接收大量的数据,要想深度挖掘数据的价值,首先从搞清楚数据的概念入手。今天我们就来聊一聊数据管理、数据治理和数据资产的概念和它们之间的相互关系。 数据管理…

从低代码来看,何谓客户体验自动化

在当今竞争激烈的大环境下,拥有出色的产品或服务并不意味着100%成功,反而是客户在购买流程中的体验变得比以往任何时候都更加重要。 随着企业业务的发展,提供个性化的客户体验变得愈加困难,许多企业因无法提供令人满意的客户体验而…

JavaScript 与 C++ 的差异

在正式开始向各位前端开发者介绍 C 语言之前,我们先讨论一下 C 语言与 JavaScript 语言的差异(为了约束讨论的范围,这里就不提 HTML 和 CSS 了)。 C 语言于 1979 年由贝尔实验室的 Bjarne Stroustrup(本贾尼斯特劳斯特…

【web安全】——HTTP请求头注入

作者名:Demo不是emo主页面链接: 主页传送门创作初心: 舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

uni-app开发常用点

前言 应该会不定时更新,主要记录自己在uni-app开发过程中经常用到的东西。 组件库推荐: 1、https://v1.uviewui.com/ 我们老项目用到是这个的1.x版本,新版本没用过 2、https://vant-contrib.gitee.io/vant/v2/#/zh-CN/ 3、https://uniapp.d…

智能在线客服系统源码 国际版多语言多商户智能机器人源码

一套智能在线客服系统源码 多商户网页客服系统源码 支持二十种国际语言 带机器人自动回复。 框架:Thinkphp5workerman, 环境:nginxphp7.3mysql5.6 支持H5公众号APP小程序 私信了解更多源码内容! 系统功能特点: 1、…