刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码)

测试开发社区  6天前

文章转载自公众号  AirPython , 作者 星安果

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

1

目 标 场 景

以今日头条极速版为首,包含趣头条、东方头条、全名小视频在内的 App 都有看新闻、视频送金币的活动,当金币达到一定量后,就可以提现到微信、支付包。

如果单纯靠人工去点击看新闻和视频,会浪费很多时间。本文的目标是利用 Python 驱动手机去看新闻和视频,每天帮我们薅一个早餐钱。

下面以「东方头条」客户端为例展开说明。

2

准 备 工 作

元素的定位需要借助 Airtes,需要在 PC 端进行安装,具体可以参考上一篇。另外这里以 Android 系统手机为例,所以提前配置好了 adb 环境。

另外,需要在虚拟环境内安装「pocoui」库。

pip3 install pocoui

3

分 析 思 路

首先我们需要利用 adb 命令打开东方头条 App。

使用 Android Studio 的 Analyze Apk 工具,可以获取应用包名和初始 Activity 分别是:

com.songheng.eastnews

com.oa.eastfirst.activity.WelcomeActivity

然后使用「adb shell am start」命令去打开东方头条的客户端。

# 应用包名
package_name = 'com.songheng.eastnews'# 初始Activity
activity = 'com.oa.eastfirst.activity.WelcomeActivity'def start_my_app(package_name, activity_name):"""打开应用adb shell am start -n com.tencent.mm/.ui.LauncherUI:param package_name::return:"""os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))start_my_app(package_name, activity)

由于第一次打开应用,会有一个显示广告的界面,我们需要通过 Airtest 获取到「跳过广告」元素,执行点击操作,让应用快速进入到主页面。

def __pre_and_skip_ads(self):"""预加载和跳过广告:return:"""# 1.广告页面元素的出现# 两种样式:跳过、跳过广告*秒try:poco('com.songheng.eastnews:id/aoy').wait_for_appearance(10)except Exception as e:print('等待广告元素异常')print(e)ads_element = poco(name='com.songheng.eastnews:id/aoy', textMatches='^跳过广告.*$')ads_element1 = poco(name='android.widget.TextView', text='跳过')# 跳过广告(0s)if ads_element.exists():print('跳过广告1!!!')ads_element.click()if ads_element1.exists():print('跳过广告2!!!')ads_element1.click()# 2.等到到达主页面poco('com.songheng.eastnews:id/g_').wait_for_appearance(120)

到达主页面之后,我们发现主要有 3 种方式获取金币,分别是「阅读文章」、「播放视频」、「播放小视频」,另外一种获取金币的方式就是归纳于其他方式中。

首先,我们使用 Airtest 来分析新闻 Tab 的列表。

新闻列表可以通过获取 name 为「com.songheng.eastnews:id/g_」 的元素,再取其所有子元素就能获取到第一页的新闻列表。

lv_elements = poco('com.songheng.eastnews:id/g_').children()if not lv_elements.exists():print('新闻列表不存在')return# 遍历每一条新闻
for news_element in lv_elements:# 新闻标题news_title = news_element.offspring('com.songheng.eastnews:id/pb')#作者author_element = news_element.offspring('com.songheng.eastnews:id/a4f')

需要注意的是,上面获取的新闻列表中有很多广告和点击下载的内容,需要过滤掉。

# 4.过滤广告
# 到这里标识此条新闻:是一条有效的新闻【包含广告】
# 注意:部分广告【包含点击标题就自动下载,左下角显示广告字眼等】要过滤掉
# 场景一:
if news_element.attr('name') == 'android.widget.FrameLayout':print('广告!这是一个FrameLayout广告,标题是:%s' % news_title.get_text())continue# 常见二:点击标题直接下载其他应用
ads_tips_element = news_element.offspring(name='com.songheng.eastnews:id/a4f', text='广告通')
if ads_tips_element.exists():print('广告!这是一个【广点通】广告,标题是:%s' % news_title.get_text())continue# 常见三:有效角标识是广告的图标【奇虎广告】
ads_tips_element2 = news_element.offspring('com.songheng.eastnews:id/q5')
if ads_tips_element2.exists():print('广告!广告标题是:%s' % news_title.get_text())continue

只有判断是一条正常的新闻,才点击新闻的标题元素进入新闻详情页面,如果右下角的「时间条元素」存在才代表阅读此篇新闻能获取到金币。

red_coin_element = poco('com.songheng.eastnews:id/aq8')
if not red_coin_element.exists():print('当前新闻没有红包,返回!')self.__back_keyevent()continue

为了更真实的模拟人为看新闻这一操作,随机地模拟向上或向下滑动屏幕。

这里设置每篇文章阅读时间为 30 秒,阅读完成之后,执行返回操作,直到回到主界面,这样就完成了查看一篇新闻获取金币的流程。

oldtime = datetime.datetime.now()
while True:self.__swipe(True if random.randint(0, 1) == 0 else False)newtime = datetime.datetime.now()interval_time = (newtime - oldtime).secondsif interval_time >= 30:print('阅读30秒新闻完成')breakself.__read_key_news()

接着可以从下往上滑动页面,获取到新的页面的新闻列表,循环的进行阅读。

 while True:self.watch_news_recommend()print('查看一页完成,继续查看下一页的新闻。')# 滑动下一页的新闻poco.swipe([0.5, 0.8], [0.5, 0.3], duration=1)

另外,注意应用的标题栏隔一段时间可以领取金币,定义一个方法去领取。

def get_top_title_coin(self):"""顶部金币领取仅仅在新闻首页的时候才可以领取:return:"""get_coin_element = poco(name='com.songheng.eastnews:id/arq', text="领取")if get_coin_element.exists():print('顶部有金币可以领取!')get_coin_element.click()print('领完金币后可以关闭对话框!')# 关掉对话框self.__back_keyevent()else:print('顶部没有金币或者不在首页')

然后可以点击视频 Tab 去切换到视频页面。和看新闻一样,这里同样是获取视频列表元素去遍历查看视频。

 def __video(self):"""查看视频:return:"""poco('com.songheng.eastnews:id/ko').click()while True:# 视频列表poco('com.songheng.eastnews:id/a0z').wait_for_appearance()sleep(2)self.__read_key_news()video_elements = poco('com.songheng.eastnews:id/a0z').children()print('video items是否存在:')print(video_elements.exists())# 遍历视频# 注意:视频播放完全可以提前返回for video_element in video_elements:# 1.标题元素video_title_element = video_element.offspring('com.songheng.eastnews:id/a3q')# 播放按钮video_play_element = video_element.offspring('com.songheng.eastnews:id/nj')# 2.必须保证【视频标题】和【播放按钮】都可见if not video_title_element.exists() or not video_play_element.exists():continue# 3.标题video_title = video_element.offspring('com.songheng.eastnews:id/a3q').get_text()print('当前视频的标题是:%s,播放当前视频' % video_title)# 点击播放视频video_play_element.focus("center").click()# 4.播放视频self.play_video()print('播放下一个视频')self.__back_keyevent()# 滑动到下一页的视频poco.swipe([0.5, 0.8], [0.5, 0.3], duration=0.2)

观看小视频获取金币的操作最为简单。首先切换到小视频 Tab,获取到第一个视频的元素,执行点击操作,开始播放小视频。

poco('com.songheng.eastnews:id/kr').click()# 加载出列表元素,点击第一项进入
poco('com.songheng.eastnews:id/a0p').child('com.songheng.eastnews:id/g_').wait_for_appearance(60)
poco('com.songheng.eastnews:id/a0p').child('com.songheng.eastnews:id/g_').children()[0].click()

最后只需要等待视频播放 30 秒之后,使用 swipe 函数向左滑动屏幕切换到下一个视频,就可以实现反复播放获取金币的操作。

while True:sleep(30)# 向左滑动poco.swipe([0.9, 0.5], [0.1, 0.5], duration=0.2)

4

结 果 结 论

执行程序,手机会自动打开东方头条客户端,执行阅读新闻、看视频和小视频的一系列操作。

最后只需要将阅读新闻、播放视频和小视频的时间分配好,一个客户端获取金币达到上限后,就关闭应用,然后切换到其他 App 客户端,继续阅读新闻和视频,就可以实现薅多个平台的羊毛。

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

我已经将看新闻刷金币全自动化脚本全部源码上传到github上:https://github.com/xingag/app_spider/tree/master/%E4%B8%9C%E6%96%B9%E5%A4%B4%E6%9D%A1

阅读原文

刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码)相关推荐

  1. 薅羊毛 | 让Python每天帮你薅一个早餐钱

    阅读文本大概需要 12 分钟. 1 目 标 场 景 以今日头条极速版为首,包含趣头条.东方头条.全名小视频在内的 App 都有看新闻.视频送金币的活动,当金币达到一定量后,就可以提现到微信.支付包. ...

  2. 让Python每天帮你薅一个早餐钱

    1 目 标 场 景 以今日头条极速版为首,包含趣头条.东方头条.全名小视频在内的 App 都有看新闻.视频送金币的活动,当金币达到一定量后,就可以提现到微信.支付包. 如果单纯靠人工去点击看新闻和视频 ...

  3. python用一行代码编写一个回声程序_Python源码分析2 - 一个简单的Python程序的执行...

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...

  4. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  5. iphone看python文件_Python实战 | 只需 ”三步“ 爬取二手iphone手机信息(转发送源码)...

    原标题:Python实战 | 只需 "三步" 爬取二手iphone手机信息(转发送源码) 本次实战是爬取二手苹果手机的信息,共爬取了300部手机信息,效果如下: 开发环境 环境:M ...

  6. python qt gui快速编程_《PYTHON QT GUI快速编程 PYQT编程指南》源码

    文件名大小更新时间 <PYTHON QT GUI快速编程 PYQT编程指南>源码\chap01\answers.txt9882007-06-27 <PYTHON QT GUI快速编程 ...

  7. python撩人的代码,老师教已毕业的学生,用Python代码每天不定时撩女友,附源码文件...

    原本就是学生会主席,在学校如此优秀的他,毕业参加工作,依然展现出好强的一面. 每天认真的工作,即使在工作之余也要用来给自己充电,所以难免会忽略女友,不够关心,免不了发脾气,甚至是争吵. 有一天,曾经大 ...

  8. python程序员专用壁纸_程序员炫技必备:用Python生成马赛克画!(文末附源码)...

    原标题:程序员炫技必备:用Python生成马赛克画!(文末附源码) 源 | Python与数据分析文 | 强哥 大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本 ...

  9. 计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

最新文章

  1. 数据库期末复习样卷,临时抱佛脚高分通过考试
  2. Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件...
  3. 皮一皮:这车是要开上天啊...
  4. Android 系统(78)--应用安装时间长
  5. C++-采样函数GridSampling(采样提速必备)
  6. 数据库练习(1)——建立数据库
  7. 基于注解的组件扫描——Spring IOC/DI(五)
  8. 点击树形相应车型,置顶
  9. 上网账号口令怎么获取_如何获取自己路由器的上网账号和上网口令
  10. 中介者(Mediator)模式实例
  11. 科大讯飞AIUI唤醒报错25102
  12. 热烈欢迎中国中小商业企业协会叶焙副会长、沈亚桂秘书长一行莅临萝卜科技
  13. USACO2018JAN Gold
  14. 苹果Airplay协议以及AirTunes流程总结
  15. 什么是Java的反射机制
  16. 仙剑三功略(结局,冶炼,魔剑养成)
  17. 诛仙哪里炼器服务器最稳定,告别炼器难 《诛仙2》顶级炼器师云集诛仙电台
  18. 炫龙毁灭者KP2笔记本U盘重装系统方法图文详细教学
  19. 模块管理 Guice
  20. 做前端码农没有技术含量?

热门文章

  1. Slick2D游戏引擎基础知识和开发环境搭建
  2. YDOOK:Python 通过系统直接播放音频音乐的各种方式 mp3 wav
  3. CentOS7系统下将多个磁盘合并到根目录
  4. js中的对象、函数定义以及形参和实参
  5. 产品、测试与开发如何协作
  6. C语言数组——交换位置
  7. Sony相机型号对比
  8. 树莓派安装python坑太多
  9. adb shell getevent
  10. 关于 InputStream 类的 available() 方法