薅羊毛 | Python 带你抢视频红包,不放过一个红包!

基于python的快手视频自动看视频赚积分应用(多设备多线程) 下载资源后解压,电脑连接手机,打开usb调试,手机进入快手视频播放页面,电脑上直接运行main.exe,就可以放着自动运行,仅供学习交流使用,如有疑问可以私信我或者看我的博客:https://blog.youkuaiyun.com/ycx901221/article/details/105323632 立即下载

640?wx_fmt=jpeg

阅读文本大概需要 15 分钟。

1

目 标 场 景

如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸。

640?wx_fmt=jpeg

与传统的红包不一样,视频红包包含位置的不确定性、大小不确定性、元素 ID 的不确定性等......这些不确定性都会导致抢红包的操作变得异常的复杂。

本篇文章的目的是利用 Python 自动化实现「抢视频红包」这一骚操作。

ps:本文仅用作学习交流,请勿用于其他用途。

2

准 备 工 作

在开始编写脚本之前,需要做如下准备

1、一部 Android 手机,并在 PC 端配置好 ADB 运行环境

2、Python 虚拟环境下安装自动化依赖库、图片对比依赖库

3、PS 或者其他图片编辑软件

# 自动化依赖
pip3 install pocoui

# 图片对比依赖
pip3 install aircv

3

编 写 代 码

第一步,我们需要借助 Airtest 驱动手机打开目标短视频 App。

# 目标应用的包名和LaunchActivity
self.package_name = 'com.**.weishi'
self.home_activity = 'com.**.oscar.module.splash.SplashActivity'

# 回到主界面
home()
# stop_app(self.package_name)

# 打开应用
start_my_app(self.package_name, self.home_activity)

第一次打开应用的时候,会弹出一个警告对话框。

640?wx_fmt=png

这里利用「异步线程」去处理。

循环检测对话框元素是否存在,一旦出现,就模拟点击操作,关闭这个对话框。

def __handle_dialog(self):
    """
    处理警告对话框
    :return:
    """
    count = 0
    while count < self.wait_for_dialog_timeout:
         tip_notice = self.poco('com.tencent.weishi:id/title_text', text=u'青少年保护功能提示')
         try:
            if tip_notice.exists():
                # 关闭
                print('出现警告对话框,关闭之。')
                self.poco('com.tencent.weishi:id/close_btn').click()
                break
            else:
                pass
         except Exception as e:
            print('产生异常了')

         time.sleep(1)
         count += 1

# 异步处理
threading.Thread(target=self.__handle_dialog, name='thread1').start()

第二步,「判断」当前播放的视频是否是一个包含红包的视频。

通过对大量视频的观察,可以看出视频内包含两类红包,分别是普通视频红包、问答视频红包。

640?wx_fmt=png

通过 Android SDK 自动的工具 Monitor 查看界面元素。

可惜的是,这个互动红包元素标识「元素 ID 不存在」,并且 Text 属性也为空,没法利用传统的方式来获取到。

640?wx_fmt=png

我换一种方式来实现,利用「图片对比」技术来判断互动红包元素是否存在,进而判断视频是否是一个包含红包的视频。

利用「PS」把互动红包元素图片从屏幕截图中裁剪出来。

需要注意的是,由于这个元素形状不规则,这里只能裁剪一个规则的矩形区域,不能截取其他多余的区域,否则会导致图片比对会失败。

640?wx_fmt=png

接着利用 adb 命令截取手机屏幕的图片,然后保存到本地。

def save_screenshot_to_pc(desc):
    """
    获取屏幕截图
    desc 截图保存路径
    :return:
    """
    exec_cmd('adb shell /system/bin/screencap -p /sdcard/screenshot.png')
    exec_cmd('adb pull /sdcard/screenshot.png %s' % desc)

然后就可以利用「aircv」库,利用上面裁剪的图和屏幕截图进行比对,判断裁剪的互动红包元素是否能匹配到。

当匹配指数为 0.8 以上的时候,就认为当前视频内一定包含红包。

def find_image(source_path, part_path):
    """
    匹配模板
    :param source_path: 原图片
    :param part_path: 待匹配的图片
    :return:
    """
    # 原始图像
    source = ac.imread(source_path)

    # 待查找的部分
    part = ac.imread(part_path)

    result_raw = ac.find_template(source, part)

    # 匹配图片中心点坐标
    if result_raw and result_raw.get('confidence') >= 0.8:
        center_position = result_raw.get('result')
        print(result_raw)
    else:
        center_position = None
    return center_position

第三步,如果判断当前视频内包含互动红包元素,就可以执行「抢红包」的操作了。

首先,利用 Monitor 截取红包出现那一刻的界面元素树,依然可以看到红包图片元素不存在 ID 和 Text 属性。

640?wx_fmt=png

然后我首先想到是否可以利用上面的方式,通过局部图片匹配去拿到红包图片的中心点坐标。

640?wx_fmt=jpeg

可是通过大量的测试发现,视频中红包图片元素的大小「存在不确定性」,用 PS 截取的图片不能适用于所有视频。

640?wx_fmt=png

最后,只能通过分析元素的层次结构,拿到存在元素 ID 的最近一级父类元素,然后再去得到红包元素,进而得到「bound」属性值。

vp = self.poco('com.tencent.weishi:id/hippy_container')
if vp.exists():
     # 元素
     try:
           red_package_element = vp.children()[0].children()[0].children()[0].children()[0]
     except Exception:
           print('产生一个异常')
           continue

     # 获取bound()属性
     element_size = red_package_element.get_bounds()

拿到红包图片元素的 bound 属性之后,就可以计算出红包图片元素的中心点坐标。

640?wx_fmt=png

def get_element_center_position(poco, bound):
    """
    获取元素的中心点坐标
    :return:
    """
    # 获取手机屏幕的宽、高
    screen_width = poco.get_screen_size()[0]
    screen_height = poco.get_screen_size()[1]

    # 元素的中心点坐标
    center_position = (bound[1] + bound[-1]) / 2 * screen_width, (
            bound[0] + bound[2]) / 2 * screen_height

    return center_position

我们都知道一段视频中,红包出现的时间存在不确定性。

通过对红包图片出现前和出现后的元素树进行对比,可以发现,当红包出现的时候,红包图片元素「存在多个子元素」。

因此可以循环获取 UI 元素树,直到红包元素存在子元素的时候,就退出循环。

# 一直等待红包元素出现,才执行点击操作
if len(red_package_element.children()) > 0:
     print(center_position)
     break
else:
     # print('等待红包出现可以点击')
     pass

通过点击红包元素的「中心点坐标」,就可以完成抢视频红包的最后操作。

 # 获取到红包坐标之后,执行点击点击操作,直到抢到红包为止
exec_cmd('adb shell input tap %d %d' % (center_position[0], center_position[1]))

4

结 果 结 论

通过上面的操作,完成了抢普通视频红包的操作,循环操作就可以拿到应用内的所有的普通视频红包。

针对问答视频红包,利用 Monitor 可以直接拿到题目和答案的文本内容,这需要针对题目内容和答案进行一次匹配。

我已经将源码上传到后台上,关注公众号后回复「 ws 」即可获得下载链接。

640?wx_fmt=jpeg

?关注“AI学习社区”

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。


/ 每日赠书专区 /

640?wx_fmt=jpeg

本书简介:

本书主要内容与数据爬取相关,包括编写爬虫所需要的基础编程知识,如Requests包、Scrapy框架和数据库的使用,到项目实战教程,适合Python基础入门的读者。如果你是其他行业的从业者,想进入IT行业成为一位爬虫工程师,又或者你已经是IT行业的从业者,本书在能够让你在对爬虫工程师的工作内容有所了解的同时,也能让你掌握作为一个爬虫工程师所需要具备的基础技能。

?↑↑点击上方小程序即可购买

恭喜上期通过留言成功混脸熟的读者:皮卡丘爆发小宇宙,赠送一本《深入浅出Python机器学习》

请中奖同学联系小编:wanglaoshi201907

640?wx_fmt=png


近期专栏推荐

1. 

2. 

3. 

4. 

Android-快手抢红包是一款开源Android抢红包插件.rar 立即下载

相关推荐

python抢红包 以及 手气最佳问题*

抢红包 以及 手气最佳问题 抢红包问题 # 输入总金额以及红包数,随机分配红包里的金额 from random import uniform money = float(input('please enter the total money: ')) people = int(input('please enter the number of people: ')) def red_packet(money,people,types='r'): result = [] if types=='u': temp = money/people real

薅羊毛 | Python 自动化带你轻松赚钱

作者:星安果来源:AirPython阅读文本大概需要 10分钟。1目 标 场 景最近,有一个朋友告诉我,她在某平台上购买了一部手机,收到货之后发现商品质量挺好的,价格也...

数据森麟 3899

【开关电源】开关电源实战经验分享

开关电源原理设计、Layout设计经验分享

weixin_42098658的博客 4172

薅羊毛 | Python 自动化带你轻松赚钱(完结版)

阅读文本大概需要 10 分钟。 1、目 标 场 景 最近,有一个朋友告诉我,她在某平台上购买了一部手机,收到货之后发现商品质量挺好的,价格也不贵。 临了随手给了个好评,商家最后还给她发一个 小红包,她把这个商品分享给了我。 本篇文章的目的是利用 Python 自动化完成商品购买的操作。 ps:本文仅限用于技术交流,请勿用于其他用途。 2、准 备 工 作 在编写代码之前,需要做如下准备工作:...

AirPython的博客 1万+

KEIL5编译报错L6200E:__stdout重定义问题分析与解决

本文深入分析KEIL5编译报错L6200E中__stdout重定义问题的根源,指出因未完整定义__stderr导致与标准库stdio_streams.o冲突。提供完整重定义标准流、启用MicroLIB库等解决方案,帮助开发者彻底解决Symbol multiply defined错误,提升嵌入式开发效率。

uran的专栏 958

AVEVA PDMS 二次开发之PML实战:从宏到自定义窗体的效率提升

本文详细介绍了AVEVA PDMS二次开发中PML语言的应用,从基础宏编写到高级窗体开发,全面提升工程设计效率。通过实战案例展示如何利用PML实现批量操作、流程自动化和交互优化,帮助工程师快速掌握这一强大工具。

weixin_42549451的博客 341

手把手教你如何利用Python薅羊毛(快手极速版)

不说多话,我们直接进入正文: 一、项目简介 快手极速版看视频,可以有金币奖励,但是需要人手不停的一个视频一个视频的滑动,利用Python的强大功能,通过代码实现自动刷视频,有效解放双手的同时可以薅点羊毛搞个早饭钱。 软件准备: 1、Python环境安装 https://www.python.org/downloads/ 2、夜神模拟器 https://www.yeshen.com/ 3、adb 工具 (git代码包里面已下载,拿来直接用) 当前为windows下操作~ 二、开始动手动脑 2.1

m0_74942241的博客 9977

PX4自定义uORB消息与MAVLink消息映射实战:从飞控到QGC地面站完整流程解析

本文详细解析PX4飞控中自定义uORB消息与MAVLink消息映射的完整流程,涵盖从飞控内部消息定义、MAVLink消息创建到QGC地面站接收显示的全链路实践。重点介绍如何使用mavlink inspector工具进行调试,解决版本兼容性和多实例消息处理等常见问题,为无人机开发者提供可靠的实时数据监控方案。

ll5678的博客 1069

python图片裁剪对比_薅羊毛 | Python 带你抢视频红包,不放过一个红包!

来源:AirPython1目 标 场 景如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸。与传统的红包不一样,视频红包包含位置的不确定性、大小不确定性、元素 ID 的不确定性等......这些不确定性都会导致抢红包的操作变得异常的复杂。本篇文章的目的是利用 Python 自动化实现「抢视频红包」这一骚操作。ps:本文仅用作学习交流,请勿用于其...

weixin_29268331的博客 129

Openwork 入门指南:开源 AI 桌面助手快速上手

Openwork是一款开源的AI桌面代理工具,提供类似Claude Cowork的免费替代方案。它支持本地运行,确保隐私安全,并能高效处理文件整理、文档读写等任务。支持多种AI模型,通过MIT许可完全免费。安装简单,仅需运行命令行或下载桌面版,需配置API Key后即可使用。操作直观,支持多步骤规划和权限控制,适合自动化重复工作。目前主要支持macOS,未来将扩展至Windows/Linux。建议从简单任务入手,逐步掌握这一高效的数字助手工具。

3806

k3s cpu load 和 cpu 使用率很高处理

在这期间还执行过缩减 sqlite3 数据库操作,不知道是哪个操作起了作用,亦或者两个操作有影响,删除 ns 促进了数据库缩减的执行(没删除之前数据库缩减不成功,db文件大小未减小,但不确定是不是执行完 VACUUM 之后需要时间 db 文件才会减小,或者是因为删除了 ns 才导致其减小),再或者是两个操作都起了作用。kubectl get ns 发现有很多卡在删除状态的 ns。k3s 官网关于这个问题的谈论。执行如下脚本删除掉这些 ns。有人详细说过这个问题。

weixin_40548182的博客 685

python自动化广告收益_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...

一、目标场景如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸。​与传统的红包不一样,视频红包包含位置的不确定性、大小不确定性、元素 ID 的不确定性等......这些不确定性都会导致抢红包的操作变得异常的复杂。本篇文章的目的是利用 Python 自动化实现「抢视频红包」这一骚操作。本文仅仅用于学习交流技术!请勿用于其他用途!二、准备工作在开始编写脚本之...

weixin_31437055的博客 1629

XYC Q8开源掌机刷第三方系统教程

分区结束后直接将各种游戏文件放入OD分区的Roms文件夹下

m0_60352504的博客 4571

qpython开发辅助视频_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...

一、目标场景如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸。​与传统的红包不一样,视频红包包含位置的不确定性、大小不确定性、元素 ID 的不确定性等......这些不确定性都会导致抢红包的操作变得异常的复杂。本篇文章的目的是利用 Python 自动化实现「抢视频红包」这一骚操作。本文仅仅用于学习交流技术!请勿用于其他用途!二、准备工作在开始编写脚本之...

weixin_39641738的博客 118

thinkphp 微信商户转账到微信用户零钱(v3密钥版)(含SDK和文档)

一种是用v3密钥的接口:微信商户转账到零钱(听说是v2接口的微信商户容易被限制,后来就改成v3了)这几天做项目有一个需求,小程序用户提交记录后,商家后台审核通过自动转账到用户的微信零钱中.今天分享下如何实现自动打款,v3微信商户转账到零钱。接口返回状态查看原因。

hanzhuhuaa的博客 428

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

红包还能这么玩?60行代码教你模拟群发手气红包

对于抢红包,想必大家都不会陌生,一次次的红包抢的就是个手气,抢的就是个刺激。但是为了体验这种抢红包的快感,需要大家真金白银的发到大家手里,抢多抢少难免会有点心理波动。今天,小编就带领大家...

cainiao_python的博客 1654

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android调用python_python自动撸支付宝基金答题红包

python自动撸支付宝基金答题红包背景在一个套利撸羊毛群里,一群小伙伴每天在不懈地撸支付宝的基金红包,于是自己也加入了撸红包大军。于是就重复地在不同的基金里面,看有没有答题红包,有的话就点进去,回答一个及其容易的题目,当然,答错了也会提示你让你选择另外一个答案的。领完红包,还要看看这个红包能否买货币基金或者短期理财,或者退而求其次,能买债券基金也行的,前提得要它的红包金额能否覆盖手续费,而且波动...

weixin_34149824的博客 485

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

人机对战?学会Python简直开挂!

我最近看中了一款CPU,结果被价格劝退。本来想提前练练手速,等到六一八那天再冲。结果被来我家玩的表弟知道了,他嘿嘿一笑。“这年头还靠手速?我来帮你抢。”只见他打开电脑,刷刷输入几行代码,瞬...

tanqingbo的博客 246

redis 红包 python_python自动撸支付宝基金答题红包

背景在一个套利撸羊毛群里,一群小伙伴每天在不懈地撸支付宝的基金红包,于是自己也加入了撸红包大军。于是就重复地在不同的基金里面,看有没有答题红包,有的话就点进去,回答一个及其容易的题目,当然,答错了也会提示你让你选择另外一个答案的。领完红包,还要看看这个红包能否买货币基金或者短期理财,或者退而求其次,能买债券基金也行的,前提得要它的红包金额能否覆盖手续费,而且波动不能太大。于是玩了几次后,...

weixin_39775896的博客 873
上一篇: 深度学习最热的方向有哪些?来听听百度的大佬怎么说
下一篇: 4-6个月,如何拿下今日头条39W年薪算法offer?
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值