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

在这里插入图片描述

目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记

0 引言

提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险,抢红包本身只是个娱乐活动,这样做就得不偿失了。

为了自动抢红包,python能帮我们实现吗?

答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。

1 环境

操作系统:Windows

Python版本:3.7.2

手机系统:Android

2 需求分析

这里我们的需求是实现自动抢红包。首先要打开微信,进入到指定的群聊,识别微信红包、执行抢红包的动作。这就是关键的步骤,简单清晰。

因为电脑版本的微信没有抢红包的功能,我们只能手机微信,那么就需要把手机连上电脑,通过电脑控制手机来自动抢,那就需要确保「adb」命令可正常执行。

识别微信中的消息,是红包还是普通的信息,这里我们通过聊天消息的元素标识来判断。这里我们借助了「Airtest IDE」工具来实现。

3 前置准备

3.1 打开手机的USB调试

要正常使用「adb」需要打开USB调试,设置项通常出现在手机系统设置中的[开发人员选项]里面。

在这里插入图片描述

在手机上打开USB调试后,接下来我们通过Airttest IDE验证 adb 运行是否正常。

3.2 下载安装Airtest IDE

开始之前先,先解释下airttest相关概念:

Airtest 是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。

Poco是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用。

AirtestIDE 是一个我们配套推出的跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写脚本。

Airtest IDE 的下载地址:http://airtest.netease.com/

下载之后,解压打开就可以使用,Airtest IDE的界面如下:

在这里插入图片描述

使用AirtestIDE对Android应用进行自动化操作,第一步就需要连接Android设备。

  1. 请使用USB线连接手机,手机上出现的 允许USB调试 弹窗,点击 确定。
  2. 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新。
  3. 点击列表内对应设备的 Connect 完成连接。
  4. 若设备未刷出,点击 refresh ADB 按钮。

在这里插入图片描述

若连接遇到问题,请参考Airtest的官方教程:Android真机连接

4 抢红包流程回顾

打开微信,在最左侧的Tab页,微信消息列表,我们需要从这里选择指定的群聊来抢红包。

在AirtestIDE中,我们可以通过暂停功能,冻结当前的UI树形结构来精确地检视UI控件,我们先来分析下这个页面中元素标识。 在这里插入图片描述 ▲聊天页面中整体的群聊消息的元素标识 com.tencent.mm:id/d1v

在这里插入图片描述 ▲聊天页面中单个群聊消息的元素标识 com.tencent.mm:id/b6e

接下来进入我们准备要抢红包的群聊中,识别出红包并执行抢红包的动作。

我们先来看看红包的标识: 在这里插入图片描述 ▲红包标识的示例1 com.tencent.mm:id/aql

在这里插入图片描述 ▲红包标识的示例2 com.tencent.mm:id/aql

点击红包,记录下弹出的大红包页面中“开”的元素标识 在这里插入图片描述 ▲大红包页面中”开“的标识 com.tencent.mm:id/d02

这里我们需要判断是红包是否有效,比如已被领完或是已被自己领取的红包就是无效的,我们在执行时可以跳过这些。 在这里插入图片描述 ▲已领取红包的标识 com.tencent.mm:id/apk

在这里插入图片描述 ▲已被领完红包的标识 com.tencent.mm:id/apk

我们用的各元素的标识都已取到,接下来就是组织我们的代码。

5 代码梳理

首先得打开微信,利用Airtest启动app应用,只须一行代码即可搞定,如下

# 打开手机微信
poco(text='微信').click()

获取当前页面中所有所有群聊的名称

# 群聊消息的元素标识
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 = input('请指定群聊名称:')
if chat in Chat_names:
    index = Chat_names.index(chat)
    # 点击进入指定的群聊
    Chat_msg[index].click()
在微信聊天页面中,获取当前页面中的所有消息元素。

msg_list = poco("android.widget.ListView").children()

遍历消息并查找红包

for msg in msg_list:
    # 微信红包的标识
    LuckyMoney = msg.offspring('com.tencent.mm:id/aql')
    # 已失效红包(比如已领取、已被领完)的标识
    Invalid = msg.offspring('com.tencent.mm:id/aqk')

    # 判断红包是否有效并抢起来!
    if LuckyMoney:
        pass

在LuckyMoney中定义抢红包的动作

if Invalid.exists() and (Invalid.get_text()=='已领取' or Invalid.get_text()=='已被领完'):
    print(f'红包已无效,跳过……')
    continue
else:
    print(f'发现一个新红包,抢起来!')
    poco("com.tencent.mm:id/d1v")
    msg.click()

    click_open = poco("com.tencent.mm:id/d02")
    if click_open.exists():
        click_open.click()
    keyevent('BACK')

6 后记

若我们在一台电脑上并不想安装Airtest IDE,还能执行这个脚本吗?

当然可以,只需要安装好「pocoui」这个第三方库就可以“抛弃”它了!

pip install pocoui

利用 AirtestIDE 创建一个项目时,设备类型选中 Android,就会在编码区生成一段初始化的代码。

from airtest.core.api import *
auto_setup(__file__)

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

我们自己编写的Python代码中也需要加上这段初始化的代码。

再次强调,在执行脚本时要确保手机连上电脑,并确保「adb」命令正常运行。

对Airtest有兴趣的小伙伴,可以参考airtest官方教程:AirtestIDE官方文档

关注公众号「Python专栏」,后台回复:python抢红包,获取本文所涉及的完整代码

转载于:https://my.oschina.net/u/1778027/blog/3060476

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 微信自动抢红包是指使用Python编程语言编写一个程序,可以自动检测并抢夺微信红包。下面我将简要介绍实现此功能的一种方法: 首先,我们需要使用Python中的自动化测试工具,例如Appium或PyAutoGUI,来模拟用户在微信中的操作。这些工具可以帮助我们自动化模拟用户的点击、滑动等操作。 其次,我们需要使用Python中的图像处理库,例如OpenCV,来识别微信红包页面。我们可以通过分析红包页面的特征,例如红包图标、文字提示等,来判断红包是否出现。 一旦检测到红包出现,我们就可以使用自动化测试工具模拟点击红包,并进入红包详情页面。在该页面,我们可以使用相同的方法判断红包是否已经被抢过。 如果红包尚未被抢过,我们可以模拟点击打开红包。如果红包已被抢过,则可以返回上一页,继续检测下一个红包。 需要注意的是,为了避免被微信检测出异常行为,我们应该设置一定的点击间隔,并在每次点击后进行适当的休眠。此外,我们还应该注意不要频繁的点击红包,以免引起他人的不适或麻烦。 总结起来,Python可以通过自动化测试工具和图像处理库实现微信自动抢红包的功能。当然,红包的识别和抢夺是一个复杂的过程,需要考虑到各种情况的处理。以上只是一种简要的实现思路,具体的代码编写需要根据实际情况进行调整和完善。 ### 回答2: Python 可以通过调用微信的接口来实现自动抢红包功能。首先,我们需要安装一些必要的库,如itchat、time、random等。然后,我们可以使用itchat库来登录微信,并注册好相应的消息处理函数。 当收到红包消息时,我们可以在消息处理函数中编写相应的逻辑来自动抢红包。通过itchat获取红包的发送者、红包的金额等信息,并编写自动点击红包、输入口令等操作的代码。可以使用模拟点击的方式来点击屏幕上的红包图标,并模拟输入口令等操作来自动领取红包。 为了避免被封号或者频繁出现验证码等问题,我们可以在代码中加入一些延时操作、随机等待时间,并合理设置红包的打开速度。同时,为了提高代码的稳定性和可靠性,可以加入异常处理机制来处理各种异常情况。 在实际使用中,我们还可以结合一些其他技术,如图像处理、OCR识别等来提高自动抢红包的成功率。例如,可以使用图像处理技术来识别屏幕上的红包图标,并自动点击红包。也可以使用OCR识别技术来自动识别红包口令并自动输入。 需要注意的是,使用Python自动抢红包属于一种自动化行为,可能涉及到一些法律和道德问题。在进行相关操作前,请务必了解相关规定,并确保自己的行为符合法律法规和道德规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值