台海新闻网

Python自动抢红包,超详细教程,再也不会错过微信红包了

片断:手机需要root,需要为iPhone越狱。移动电话根植或越狱并不容易。同时,它将给手机的安全带来一些风险。红包本身只是一种娱乐活动,所以不值得为此付出代价。

Python学习交流组:1004391443

为了自动获取红包,Python可以帮助我们实现它吗?

答案是肯定的,本文将让大家探讨如何使用Python来实现自动红包。

操作系统:Windows

Python版本:3.7.2

手机系统:Android

2需求分析

这里我们的要求是实现自动抓取红包。首先,你必须打开微信,输入指定的群聊,识别微信红包,并执行抓取红包的动作。这是关键步骤,简单明了。

由于微信的电脑版不具备抓取红包的功能,我们只能使用手机微信,那么我们需要将手机连接到电脑并控制手机自动抓取它。然后我们需要确保“adb”命令可以正常执行。

在微信中识别消息是红包或普通信息。这里我们通过聊天消息的元素标识符来判断。这里我们使用“Airtest IDE”工具来实现。

3.1打开手机的USB调试

要正常使用“adb”,您需要打开USB调试。设置项目通常出现在电话系统设置的[开发者选项]中。

cd0cc1e838dc4f269d2313d79c4fa8e7

在手机上打开USB调试后,我们通过Airttest IDE验证adb是否正常工作。

3.2下载并安装Airtest IDE

在开始之前,解释一下最新概念:

Airtest是一款面向游戏和应用的跨平台,基于图像识别的UI自动化测试框架。支持平台是Windows,Android和iOS。

Poco是一个基于UI控件识别的自动化测试框架。目前,它支持Unity3D/cocos2dx - */Android原生app/iOS原生app /微信applet。它也可以被其他引擎用于访问poco-sdk。

AirtestIDE是一个跨平台的UI自动化测试编辑器,它带有我们内置的Airtest和Poco插件功能,可用于快速轻松地编写脚本。

下载Airtest IDE的地址:

下载后,将其解压缩即可使用。 Airtest IDE的界面如下:

09b42c36146a429a9af6904aacf0523e

要使用AirtestIDE自动化Android应用程序,第一步是连接到Android设备。

请使用USB线连接手机,手机上会出现USB调试弹出窗口,然后单击“确定”。单击连接面板中的刷新ADB按钮,将刷新设备列表。单击列表中相应设备上的“连接”以完成连接。如果设备未闪烁,请单击刷新ADB按钮。ac77fac37e384c0ca8183292451df200

如果您在连接时遇到问题,请参阅官方Airtest教程:Android真机连接

打开微信,在最左边的Tab页面,微信消息列表中,我们需要从这里选择指定的群组聊天来抓取红包。

In AirtestIDE, we can use the pause function to freeze the current UI tree structure to accurately view the UI controls. Let's first analyze the element identifiers in this page.

6bf3a5721b374dfc8daec487411b2041

▲The element identifier of the overall group chat message in the chat page com.tencent.mm: id/d1v

3962c5b7e72348b697226106abe6e75c

▲The element identifier of a single group chat message in the chat page com.tencent.mm: id/b6e

Next, enter the group chat we are going to grab the red envelope, identify the red envelope and perform the action of grabbing the red envelope.

Let's first take a look at the logo of the red envelope:

ce841a107c904e439eafa0520d357fd7

▲ Example of red envelope identification 1 com.tencent.mm: id/aql

e65a1e0027ce446da74def1b4334af3d

▲ Example of red envelope identification 2 com.tencent.mm: id/aql

Click on the red envelope to record the "open" element identifier in the pop-up red envelope page

6b6cd17c5e6d46a984f9ab58c4736e1c

▲The logo of the "open" in the red envelope page com.tencent.mm: id/d02

Here we need to determine whether the red envelope is valid, such as the red envelope that has been received or has been picked up by itself is invalid, we can skip these when we execute.

a6579e67dd5a407faf26187875a398fd

▲Identified red envelope com.tencent.mm: id/apk

305e35eb0d6442f1853191ec592caab8

xx▲红包的标识已收到com.tencent.mm: id/apk

我们使用了每个元素的标识,下一步是组织我们的代码。

首先,您必须打开微信并使用Airtest启动应用程序。您只需要一行代码就可以获得它,如下所示:

#Open Mobile WeChat

POCO(文本='微信')。单击()

获取当前页面上所有群组聊天的名称

#群聊消息的元素ID

Chat_msg=poco(name='com.tencent.mm: id/d1v')。offspring('com.tencent.mm: id/b6e')

#获取当前页面上所有群组聊天的名称

Chat_names=[]

Chat_names=list(map(lambda x: x.get_text(),Chat_msg))

选择并输入指定的群聊

#指定红包

的群聊名称

聊天=输入('请指定群聊名称:')

如果在Chat_names:中聊天

Index=Chat_names.index(chat)

#单击进入指定的群组聊天

Chat_msg [指数]。点击()

在微信聊天页面中,获取当前页面中的所有消息元素。

Msg_list=poco('android.widget.ListView')。children()

遍历邮件并找到红包

对于msg_list:中的msg

#微信红包的标识

LuckyMoney=msg.offspring('com.tencent.mm: id/aql')

#的红红包(如已收到,已收到)logo

无效=msg.offspring('com.tencent.mm: id/aqk')

#确定红包是否有效并抓住它!

如果LuckyMoney:

定义在LuckyMoney中抓取红包的动作

如果Invalid.exists()和(Invalid.get_text()=='收到'或Invalid.get_text()=='已收到'):

打印(f'红包无效,跳过.')

继续

否则为:

打印(f'找到一个新的红包,抓住它!')

Poco('com.tencent.mm: id/d1v')

Msg.click()

Click_open=poco('com.tencent.mm: id/d02')

如果click_open.exists():

Click_open.click()

的keyEvent( 'BACK')

如果我们不想在计算机上安装Airtest IDE,我们可以执行此脚本吗?

当然,你只需要安装第三方库“pocoui”来“丢弃”它!

Pip安装pocoui

使用AirtestIDE创建项目时,如果选择Android作为设备类型,则会在编码区域中生成初始化代码。

来自airtest.core.api import *

Auto_setup(__文件__)

来自poco.drivers.android.uiautomation导入AndroidUiautomationPoco

Poco=AndroidUiautomationPoco(use_airtest_input=True,screenshot_each_action=False)

我们还需要将这个初始化代码添加到我们自己的Python代码中。

同样,确保在执行脚本时手机已连接到计算机并且“adb”命令正在运行。

对于那些对Airtest感兴趣的人,可以参考官方的最新教程:AirtestIDE官方文档