精华内容
下载资源
问答
  • 2022-01-10 15:32:31

    导语:

    快要过年了~话说铁汁除夕也怎么过的呀?小时候只顾着放鞭炮现在不一样了小编是除夕夜只顾着各个群里蹲红包。

    但是手动抢肯定没戏,毕竟手can谁也没办法!

    那就只能试试能不能通过编程的方式实现自动化抢红包了!

    跟小编一样财迷的铁汁们 可以往下滑了👇👇

    正文

    现在捋一下思路,微信群发红包的基本情况是:每一次发红包都会与上一次有一些时间间隔,实现自动化抢红包的基本思路如下:

    • 手动清空之前微信群中的红包记录

    • 执行自动化抢红包程序,进入发红包的微信群(可以暂时将其顶置),循环检测群中是否有红包,发现红包则点击红包

    • 检测红包是否被领取(判断点击后的红包是否出现开字),如果红包未被领取,则点击开字领取红包,再返回群聊界面删除已被领取的红包记录;如果红包已被领取,则返回群聊界面删除已被领取的红包记录,之后以此类推

    环境

    本文主要环境如下:

    • Win7

    • 小米5s

    • Python3.7

    • Appium1.5

    • 微信7.0.20

    如果对环境搭建不熟悉的话,可以看一下:Python + Appium 自动化操作微信入门 和 我用 Python 找出了删除我微信的所有人并将他们自动化删除了

    .实现

    接下来我们开始手动敲代码,下面一起来看一下具体实现。

    首先看一下配置信息,代码实现如下:

    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 is_element_exist(driver, by, value):
        try:
            driver.find_element(by=by, value=value)
        except Exception as e:
            return False
        else:
            return True

     因为红包无论是被自己领取还是被他人领取,之后都要删除领取后的红包记录,所以我们再来定义一个删除已领取红包的方法,代码实现如下:

    # 删除领取后的红包记录
    def del_red_envelope(wait, driver):
        # 长按领取过的红包
        r8 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8")))
        TouchAction(driver).long_press(r8).perform()
        # 点击长按后显示的删除
        wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/gam"))).click()
        # 点击弹出框的删除选项
        wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/doz"))).click()

    长按领取后红包的效果图如下:

    图片

    点击长按后显示的删除项之后的效果图如下:

    图片

    我们接着来看一下进入红包群后的主程序实现,代码如下:

    while True:
        # 有红包则点击
        wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8"))).click()
        print("点击了红包")
        # 判断红包是否被领取
        is_open = is_element_exist(driver, "id", "com.tencent.mm:id/den");
        print("红包是否被领取:", is_open)
        if is_open == True:
            # 红包未被领取,打开红包
            wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/den"))).click()
            # 返回群聊
            wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/dm"))).click()
            # 删除领取过的红包记录
            del_red_envelope(wait, driver)
        else:
            # 返回群聊
            driver.keyevent(4)
            # 删除领取过的红包记录
            del_red_envelope(wait, driver)

    我们通过视频来看一下整体效果:

    end

    这期就分享到了学会的铁汁们动手去试试啦~为过年抢红包做准备🙈喜欢记得三连哦!家人们的支持是小编更新最大的动力💪

    想领取更多完整源码跟Python学习资料可私信我点击这行字体

    
                                            
    更多相关内容
  • Python 来全自动抢微信红包

    千次阅读 2020-03-05 17:11:00
    最近在做手机app自动化测试,想用python写个自动抢微信红包的程序,先在网上查了一下,发现红包教程要么是用itchat模块做到红包提醒功能,要么root手机后用Xposed框架,这...

    最近在做手机app自动化测试,想用python写个自动抢微信红包的程序,先在网上查了一下,发现抢红包教程要么是用itchat模块做到红包提醒功能,要么root手机后用Xposed框架,这两种方式都不是我想要的结果。于是我决定用appium模块实现此功能,最后发现仅用了80行代码,整个过程只涉及到元素检测和模拟点击操作,非常简单易懂,下面给大家详细介绍一下我是如何实现的。

    整体思路:

    这是整个程序的框架图,首先需要模拟登录微信,然后进入微信聊天界面,接着进入循环过程:

    打开第一个聊天窗口,检测有无未领取的红包,若无,则直接返回;

    若有,先检测是否被领完,若未领完则打开该红包,若领完则返回。

    通过设置适当时间间隔,就可以一直检测最新消息中有无红包。

    环境配置:

    首先需要安装appium并配置相关环境。主要方法是:

    先在官网下载安装appium,然后安装Android SDK,但是直接安装的话会有各种bug,很不方便,我的方法是先安装Android Studio,在它里面可以安装Android SDK,最后再安装JAVA,并配置JAVA_HOME和CLASSPATH两个参数的环境变量,这套流程下来以后就可以使用appium了。

    appium使用简介

    appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用,支持IOS、Android及FirefoxOS平台。作为自动化测试工具,主要是先定位app界面的元素,再通过模拟点击、滑动等动作来操控手机,从而达到自动化测试的效果。

    Python调用appium模块前,要先打开appium客户端

    再点击start Server

    再点击右上角的搜索框

    接着配置4个参数,第一个是手机系统版本,第二个是手机具体型号(在手机设置-关于手机中可以找到),第三、四分别是微信APP的appPackage和appActivity参数,获取方法如下:

    1.首先在Android SDK安装文件夹下找到aapt.exe工具,并记住该路径。

    2.下载微信app到电脑,保存位置,打开命令行,执行如下代码:

    其中上面是aapt.exe工具所在的位置,红色遮住的是微信APP所在的位置,回车,在返回结果中寻找

    这是微信APP的appPackage参数

    这是微信APP的appAcivity信息。

    到此,我们的准备工作就完成了,下面就开始抢红包操作了。

    自动抢红包流程:

    第一步:模拟登录

    主要是用appium模拟按键操作,步骤是比较好理解,代码如下:

    其中第一行的desired_caps既是上述的四个参数。

    本次采用的是QQ号登陆方式,效果如下:

    第二步:循环点击第一个聊天窗口所在的坐标

    一般情况下,最新消息都是在最上方,所以我们只需循环打开第一个聊天窗口,检测有无未领取的红包即可。

    需要注意的是,微信订阅号和一般聊天窗口的返回元素是不同的,要做好区分,本文是识别到微信订阅号后直接删除该聊天框。

    第三步:判断当前联系人窗内的红包是否未领取

    有时候聊天界面会有好多红包,有已被自己领取的,有未被自己领取的,我们首先要排除掉已领取的红包,先来分析一下已领取的红包:

    已领取的红包多了“已领取”3个字

    它的元素为:

    所以我们只需要分析一下红包元素里是否存在‘com.tencent.mm:id/aul’,就可以判断该红包是否已领取,代码如下:

    若存在,说明红包已领过,则返回;若不存在,则进入第四步领取红包。

    第四步:领取红包

    因为不能确定每个未被自己领取的红包是否已被别人领完,所以打开红包以后还要检测一下红包是否被领完

    分两种情况:

    1.红包未被领完,则点击领取;

    2.红包已被领完,则返回。

    点击下面叉号返回:

    第五步:整体效果展示

    下面给大家演示一下全自动抢红包的整个流程:

    友情提示语:抢红包虽爽,但也要注意礼尚往来哦!

    PS:本文完整代码可在微信后台回复:qhb 获得

    继续送书,前天中奖的朋友是:@坏蛋的坏,麻烦看到以后,在后台加我微信,告诉我快递信息,之后安排寄给你。

    今天也会从留言区中抽一位朋友,送出下面一本书,后续公布中奖人,感兴趣的话就留言吧,中奖率还是蛮高的。多说句,如果你留言了,那么一定要关注我之后的推文,说不定你就中奖了,如果你忘记了,我就会发给别人。

    /今日留言主题/

    我经常抢不到红包抢到了也很小, 你呢?

    /今日送书一本/

    展开全文
  • 文 |某某白米饭来源 |Python 技术春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Pytho...

    文 | 某某白米饭

    来源 | Python 技术

    春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不抢到红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Python 写一个自动抢红包代码

    启动入口

    启动程序的配置和公众号文章《用 Python + Appium 的方式自动化清理微信僵尸好友》的配置一样

    from appium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from appium.webdriver.common.touch_action import TouchAction
    from selenium.webdriver.support import expected_conditions as EC
    
    desired_capabilities = {
        'platformName': 'Android', # 操作系统
        'deviceName': '2a254a02', # 设备 ID
        'platformVersion': '10.0.10', # 设备版本号,在手机设置中查看
        'appPackage': 'com.tencent.mm', # app 包名
        'appActivity': 'com.tencent.mm.ui.LauncherUI', # app 启动时主 Activity
        'noReset': True # 是否保留 session 信息 避免重新登录
    }
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
    # 设置等待超时时间
    wait = WebDriverWait(driver, 60)
    

    点击进入聊天窗口

    微信在一般情况下最新的聊天记录将被放在第一个,所以只需要打开第一个聊天窗口检查有没有红包就可以了,用 id 为 com.tencent.mm:id/e3x 可以找到所有的聊天信息,我们取第一个聊天群的索引

    # 进入第一个聊天框
    red_packet_group = driver.find_elements_by_id('com.tencent.mm:id/e3x')[0]
    red_packet_group.click()
    

    找到红包

    进入聊天群后,红包图片检查是否存在红包,它的 id 为 com.tencent.mm:id/r2

     # 检查红包
    reds = driver.find_elements_by_id('com.tencent.mm:id/r2')
    if len(reds) == 0:
        driver.keyevent(4)
    

    抢红包

    点击红包后会出现以下 3 种情况

    1. 红包已经被自己领取了

    2. 红包手慢了没抢到

    3. 红包未领取

    前两种情况红包已经失效了,最后一种才是可以打开的红包

    红包已经失效了

    在上面代码中都是用 id 检查元素是否存在,这里使用查找文字已存入零钱手慢了判断红包是否已经失效

    # 判断元素是否存在
    def is_element_exist_by_xpath(driver, text):
        try:
            driver.find_element_by_xpath(text)
        except Exception as e:
            return False
        else:
            return True
    
    
    # 领取了
    is_open = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "已存入零钱")]')
    # 没抢到
    is_grabbed = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "手慢了")]')
    
    if is_open or is_grabbed:
        driver.keyevent(4)
    

    打开红包

    打开红包比较简单,只需要找到  字的 id

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/den"))).click()
    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/dm"))).click()
    

    删除红包

    最后我们将红包删除,防止红包被重复打开。当长按红包时,微信红包会出现删除按钮

    TouchAction(driver).long_press(red).perform()
    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/gam"))).click()
    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/doz"))).click()
    

    总结

    这是学习并使用 Appium 的第三篇文章,Appium 可以将手机操作自动化,大家学废了吗?

    源码:https://github.com/JustDoPython/python-examples/tree/master/moumoubaimifan/wxRedPacket

    往期链接:
    
    新一代Notebook神器出现,Jupyter危险了!
    
    手机最强Python编程神器,在手机上运行Python
    
    “克隆战争”来了?100 多个知名网站克隆版的开源代码
    
    阿里最强 Python 自动化工具开源了!
    
    ·················END·················你好,我是Sitin涛哥,非著名程序员,项目经理,现在创业中。在公众号和视频号「涛哥聊Python」分享我的升级打怪经验!很开心能够遇到你,欢迎添加我的微信 pengtaoshow ,备注来意,一起进步。
    
    
    展开全文
  • 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没到,这次???不由自主的叹了一口气 ... 过了一会,内心的情绪逐渐平复了。 心想:“难道就这么放弃了吗?晚饭还吃泡面...

    1. 概述

    刚刚收到了两个消息,一个好消息,一个坏消息。

    先说好消息,好消息就是微信群里有人要发红包,开心~

    不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ...

    过了一会,内心的情绪逐渐平复了。

    心想:“难道就这么放弃了吗?晚饭还吃泡面(泡面感觉有被冒犯到

    )?但是手动抢肯定没戏,毕竟手can谁也没办法!那就只能试试能不能通过编程的方式实现自动化抢红包了!”

    现在捋一下思路,微信群发红包的基本情况是:每一次发红包都会与上一次有一些时间间隔,实现自动化抢红包的基本思路如下:

    手动清空之前微信群中的红包记录

    执行自动化抢红包程序,进入发红包的微信群(可以暂时将其顶置),循环检测群中是否有红包,发现红包则点击红包

    检测红包是否被领取(判断点击后的红包是否出现开字),如果红包未被领取,则点击开字领取红包,再返回群聊界面删除已被领取的红包记录;如果红包已被领取,则返回群聊界面删除已被领取的红包记录,之后以此类推

    2. 环境

    本文主要环境如下:

    Win7

    小米5s

    Python3.7

    Appium1.5

    微信7.0.20

    3. 实现

    接下来我们开始手动敲代码,下面一起来看一下具体实现。

    首先看一下配置信息,代码实现如下:

    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 is_element_exist(driver, by, value):

    try:

    driver.find_element(by=by, value=value)

    except Exception as e:

    return False

    else:

    return True

    因为红包无论是被自己领取还是被他人领取,之后都要删除领取后的红包记录,所以我们再来定义一个删除已领取红包的方法,代码实现如下:

    # 删除领取后的红包记录

    def del_red_envelope(wait, driver):

    # 长按领取过的红包

    r8 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8")))

    TouchAction(driver).long_press(r8).perform()

    # 点击长按后显示的删除

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/gam"))).click()

    # 点击弹出框的删除选项

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/doz"))).click()

    长按领取后红包的效果图如下:

    点击长按后显示的删除项之后的效果图如下:

    我们接着来看一下进入红包群后的主程序实现,代码如下:

    while True:

    # 有红包则点击

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8"))).click()

    print("点击了红包")

    # 判断红包是否被领取

    is_open = is_element_exist(driver, "id", "com.tencent.mm:id/den");

    print("红包是否被领取:", is_open)

    if is_open == True:

    # 红包未被领取,打开红包

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/den"))).click()

    # 返回群聊

    wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/dm"))).click()

    # 删除领取过的红包记录

    del_red_envelope(wait, driver)

    else:

    # 返回群聊

    driver.keyevent(4)

    # 删除领取过的红包记录

    del_red_envelope(wait, driver)

    最后,我们通过视频来看一下整体效果:

    源码在公号 Python小二 后台回复 201123 获取。

    原创不易,如果觉得有一些帮助,希望大家给个分享、在看、赞。

    展开全文
  • 春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Python 写一个自动抢红包代码 启动入口 启动程序的配置和公众号文章...
  • 提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险...
  • 0 引言 提到红包,就不得不提Xposed框架,它简直是个红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。...首先要打开微信,进入到指定的群聊,识别微信红包、执行红包
  • 强大!用 60 行代码自动抢微信红包

    千次阅读 2021-01-27 15:14:06
    春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Python 写一个自动抢红包代码 启动入口 from appium import webdriver ...
  • 一、Airtest的介绍1)Airtest的简介Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。 Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言...
  • 于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。环境准备appium环境安卓手机usb数据线python环境实现思路我们收到红包和消息都是自动置顶到第一个,于是我们打开...
  • 0 引言提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个...为了自动抢红包python能帮我们实现吗?答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。1 环境操...
  • 0 引言提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个...为了自动抢红包python能帮我们实现吗?答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。1 环境操...
  • 每逢过年过节,大家都会在微信群里联系祝福自己的亲朋好友,有时候还会在群里发红包,让大家去,其实并没有多少人在乎红包里那点钱,主要还是为了烘托气氛,图个彩头。但是气氛归气氛,要是每次总是到最小的红包...
  • 描述有时候产品有这么一些需求,当用户满足一定条件时,给他发一定金额的红包微信各个服务是独立的,比较蛋疼,要用红包功能,首先你需要注册一个微信商户平台账号。代码位置 分支pay-20160802微信支付比较烦,...
  • 来源:python专栏github:https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/Tool/Grab_LuckyMoney目录:0 引言1 环境2 需求分析3 前置准备4 抢红包流程回顾5 代码梳理6 后记0 引言...
  • 公众号“菜鸟学Python”,设为 “星标”第446篇原创,和30w+一起学Python!过年期间,家人和朋友之间少不了的是互相发红包,钱多钱少不重要,重要的是对朋友的一份情谊和自己的...
  • python微信红包自动化测试脚本

    千次阅读 多人点赞 2021-07-07 15:10:25
    代码如下(python): # coding=utf-8 from appium import webdriver import time desired_caps = { 'platformName': 'Android', #使用哪种平台 'deviceName': '158bcb1', #启用设备名称 ...
  • 今天,小编就带领大家用Python来制作一个自动抢红包的程序,不用动手就可以红,一起来看看吧。01.准备工作用到的工具如下:Airtest IDE编辑器;一部Android手机;Windows系统的电脑;一根连接手机和电脑的数据线;...
  • 自动抢微信QQ红包自动抢房
  • Python实现自动抢红包功能

    万次阅读 多人点赞 2019-05-24 07:31:00
    点击上方“程序IT圈”,选择“置顶公众号”每天早晨7点半,准点开车本文来源于AirPython目 标 场 景可能有人每天都忙碌于各类微信群中,专注抢红包。那是否可以利用 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,959
精华内容 783
关键字:

python自动抢微信红包