欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Python自动抢红包,从此再也不会错过微信红包了!

发布时间:2024/1/8 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python自动抢红包,从此再也不会错过微信红包了! 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

作者 | 上海小胖

来源 | Python专栏(ID:xpchuiit) 


目录:

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设备。

  • 请使用USB线连接手机,手机上出现的 允许USB调试 弹窗,点击 确定

  • 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新。

  • 点击列表内对应设备的 Connect 完成连接。

  • 若设备未刷出,点击 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抢红包,获取本文所涉及的完整代码

    留言打卡 DAY 44


    今日的留言话题是聊聊你此前抢红包的有趣经历,关于留言打卡的规则可以参考,请按照昵称+天数(请以自己实际连续打卡的天数为准,如day1 or day2 or day3)+ 留言内容(不少于15字)的方式留言


    ◆ ◆ ◆  ◆ ◆


    长按二维码关注我们



    数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。


    管理员二维码:



    猜你喜欢

     

    总结

    以上是生活随笔为你收集整理的Python自动抢红包,从此再也不会错过微信红包了!的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。