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

640?wx_fmt=gif

作者:星安果

来源:AirPython

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

1

目 标 场 景

最近,有一个朋友告诉我,她在某平台上购买了一部手机,收到货之后发现商品质量挺好的,价格也不贵。

临了随手给了个好评,商家最后还给她发一个 小红包,她把这个商品分享给了我。

640?wx_fmt=jpeg

本篇文章的目的是利用 Python 自动化完成商品购买的操作。

ps:本文仅限用于技术交流,请勿用于其他用途。

2

准 备 工 作

在编写代码之前,需要做如下准备工作:

1、配置好 Android ADB 开发环境

2、Python 虚拟环境内安装 pocoui 依赖库

3、操作剪切板的应用 APK,下载链接见文末

3

编 写 代 码

我们分 7 个步骤来实现这个功能,分别是:打开目标应用客户端、搜索关键字到商品列表界面、裁剪原图拿到商品主图、商品匹配、商品收藏和浏览、购买商品、获取订单号和截图。

1 步,使用 Airtest 自动化打开目标应用。

# 目标应用
package_name = '应用包名'
activity = 'Home Activity'def __pre(self):"""准备工作:return:"""# 删除缓存文件remove_cache('./part.jpg', './screenshot.png', './uidump.xml')home()stop_app(package_name)start_my_app(package_name, activity)

打开应用之后,就可以进行第 2 步操作了。

通过预先得到的关键字,置入到输入框中,然后点击搜索按钮,一直等待搜过列表出现为止。

需要注意的是,有些控件元素需要点击多次才能算一次有效的点击事件。

def __search_good_by_key(self):"""通过关键字搜索商品:return:"""self.poco(id_page_main_button_search).wait(5).click()perform_view_input(self.poco, id_page_search_edittext_search, self.key)# 点击搜索self.poco(id_page_search_button_search).wait_for_appearance()while self.poco(id_page_search_button_search).exists():print('点击一次搜索')perform_view_id_click(self.poco, id_page_search_button_search)# 等待列表加载出来self.poco(id_page_goods_rv).wait_for_appearance()

第 3 步,剪切原图,需要对原图中多余的白色区域进行删除,只保留左侧的商品主图。

640?wx_fmt=jpeg

通过 遍历 x 轴、y 轴,拿到每一个像素的颜色值,如果是连续的白色就做一个标识,进而拿到主图的上、下、左、右坐标值,最后利用 cv2 库进行裁剪,得到商品主图

def crop_main_img(img_path):"""获取商品主图:return:"""img = cv2.imread(img_path)# 图片大小(高、宽、the pixels value is made up of three primary colors)size = img.shapeimg_height = size[0]img_width = size[1]channels = size[2]# 1080*458print(f'图片宽度:{img_width},高度:{img_height}'# 标识数组,针对x轴和y轴arr_x = []arr_y = []# 遍历宽,得到主图的x轴坐标for x in range(img_width):is_black = True# 遍历高for y in range(img_height):# 获取颜色值color_position = img[y, x]if (color_position == color_white).all():passelse:is_black = Falsearr_x.append(is_black)# 遍历高,得到主图的y轴坐标for y in range(img_height):is_black = True# 遍历高for x in range(img_width):# 获取颜色值color_position = img[y, x]if (color_position == color_white).all():passelse:is_black = Falsearr_y.append(is_black)position_x = get_space_index(arr_x)position_y = get_space_index(arr_y)main_img_path = "./head_img.jpeg"# 剪切# 裁剪坐标为[y0:y1, x0:x1]cropped = img[position_y[0]:position_y[1], position_x[0]: position_x[1]]cv2.imwrite(main_img_path, cropped)return main_img_path

4 步,商品匹配。

拿到商品主图之后,利用 Airtest 在当前页面进行元素查找,如果没有找到,就滑到下一个元素;否则,就拿到匹配商品的坐标。

def __search_good_from_list(self):"""从列表中匹配商品:return:"""# 循环的图片查找while True:try:pos = loop_find(Template(self.main_img_path), timeout=10, threshold=0.95)except TargetNotFoundError:print('滑动一页')self.__swipe(True)else:print('找到了')# 屏幕宽度和高度screen_size = self.poco.get_screen_size()print(screen_size)# 点击的坐标点(宽、高)# (0.22407407407407406, 0.8550925925925926)position_click = (pos[0] / screen_size[0], pos[1] / screen_size[1])print(position_click)self.poco.click(position_click)break

 5 步,商品收藏和浏览。

跳转到商品信息界面之后,先收藏商品,然后跳转到商品详情页面和评论页面。

在预先设置的浏览时间内,执行休眠、滑动操作。

def __browser_good_detail(self):"""浏览商品:return:"""# 切换到详情Tabself.poco('com.**:id/taodetail_nav_bar_tab_text', text='详情').click()# 滑动时长为: self.browser_detail_timebrowser_start = datetime.datetime.now()browser_end = browser_startwhile (browser_end - browser_start).seconds < self.browser_detail_time:# 休眠一会time.sleep(random.randint(2, 5))# 滑动一次self.__swipe(True)# 结束时间browser_end = datetime.datetime.now()print('详情页面查看完毕')

 6 步,购买商品。

商品的购买操作很简单,只要点击一个购买按钮即可完成;基于安全考虑,这里选择收货地址、输入支付密码手动输入。

def __buy_good(self):"""购买商品:return:"""# 立即购买self.poco('**/detail_main_sys_button', text='立即购买').click()# 选择商品属性sleep(10)# 确定购买self.poco('**/confirm_text', text='确定').parent().click()# 提交订单self.poco(text='提交订单').click()# 手动输入密码或者指纹sleep(10)

7 步,获取订单 ID 及商品截图。

640?wx_fmt=jpeg

通过 Monitor 观察发现,订单号文本元素很难通过属性或者子、父关系拿到。

可以通过点击复制按钮,将订单号粘贴到系统的剪切板,然后利用 adb + clipper 这款 App拿到剪切板中的内容。

def __get_order_no(self):"""获取订单编号:return:"""global copy_elementwhile True:# 由于手机屏幕的限制,【复制】按钮第一页不一定能显示出来try:copy_element = self.poco(text='复制')except Exception as e:print('没有找到元素,往下滑动一页')self.__swipe(True)break# 复制到剪切版本copy_element.click()# 从剪切板拿到数据result = exec_cmd('adb shell am broadcast -a clipper.get')[1]# 匹配出订单号result = re.findall(r'data="(.*)"', result)order_no = ''if result and len(result) > 0:order_no = result[0]print(order_no)return order_no

接着利用 adb 命令截取当前屏幕,然后保存到 PC 端,即完成了全部操作。

 

4

结 果 结 论

通过以上的步骤,即可以完成自动化挑选商品、浏览、购买等一系列操作。

需要补充的是,由于手机分辨率的不一致,导致商品主图匹配会存在一定的误差;但由于主图宽、高比是一致的,可以通过缩放图片达到 适配 的目的。

我已经将全部源码,包含文中使用的 APK 上传到后台上,关注公众号后回复「 羊毛 」即可获得下载链接。

留言打卡第二季 DAY 36

今日的留言话题是回忆下之前用公众号分享的用Python做的好玩的事情,关于留言打卡的规则可以参考,请按照昵称+天数(请以自己实际打卡的天数为准,如day1 or day2 or day3)+ 留言内容(不少于15字)的方式留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68339.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

来来来,教你如何智慧薅羊毛!

提到边缘计算&#xff0c;熟悉ToB技术的朋友&#xff0c;首先可能想到的就是运营商的5G MEC&#xff08;移动边缘计算&#xff09;&#xff0c;以及云计算中的融合边缘系统理念。 的确&#xff0c;作为全球公认的创新技术趋势&#xff0c;边缘计算如今已经被广泛用于云计算、5G…

互联网薅羊毛指南

点击上方“程序猿杂货铺”&#xff0c;“星标或置顶公众号” 第一时间获取价值内容 阅读本文大概需要 9 分钟 本文经授权转载于公众号 | Python爱好者社区 作者 | 王大伟 微软最有价值专家&#xff08;MVP&#xff09; 薅羊毛&#xff0c;一种参与各种优惠活动的新型说法&#…

CSDN给你一个薅羊毛的机会!你真的不要吗?

抢红包、集福卡、转锦鲤等等&#xff0c;每年过年过节&#xff0c;各种价值几十亿的瓜分活动&#xff0c;对于网络冲浪选手来说&#xff0c;眼花缭乱但也乐趣满满。 可现实是&#xff1a;你抢了5毛8&#xff0c;人家抢了好几万&#xff01; 甚至前段时间&#xff0c;字节跳动安…

go-cqhttp QQ机器人入门

有关go-cqhttp QQ机器人的一些小问题 基础介绍介绍一些名词***2022-04-07更新***小问题汇总&#xff1a; 基础介绍 go-cqhttp机器人是基于onebot协议的一个应用,官网&#xff1a;https://docs.go-cqhttp.org/可以制作QQ机器人。娱乐性还是蛮强的。之前研究的时候发现网上的教程…

【Re:从零开始的QQ机器人搭建】——基于go-cqhttp和python

【Re&#xff1a;从零开始的QQ机器人搭建】—— 基于go-cqhttp 警告&#xff1a;小心智械危机&#xff08; 前言 之前酷Q用的好好的&#xff0c;谁知道刚打完工会战不到2天tx就封了大部分机器人。所幸小部分有生力量保留了下来&#xff0c;必可活用于下次机器人搭建。 一、…

使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程

NoneBot是一个基于Python 3.8的异步、开源和可扩展的框架&#xff0c;用于构建和运行聊天机器人&#xff0c;支持各种聊天平台&#xff0c;如Telegram&#xff0c;Discord和WeChat。它是基于nonebot库构建的&#xff0c;提供了一个易于使用的界面&#xff0c;用于创建聊天机器人…

教你使用python搭建QQ机器人

注&#xff1a;本文中Linux系统指令均为Ubuntu使用&#xff0c;centos等请根据指令按系统情况改动。 目录 一、环境配置 二、配置go-cqhttp 三、安装nonebot 四、运行机器人 五、插件 六、最后 一、环境配置 1、python版本>3.8.0。如果版本不对请更新版本&#xff0c…

中级 PHP 程序员应该掌握的面试题

PHP 不仅是世界上最好的语言&#xff0c;还是世界上最奇特的语言&#xff0c;奇特之处是很多难以理解的语法&#xff0c;还有一眼看不出运行结果的程序。下面我整理了几道中级水平的面试题&#xff0c;大家可以看看&#xff1a; 请选择以下代码运行的结果&#xff1a; 程序解释…

“二向箔”其实并不存在丨《三体》里的数学问题

《三体》电视剧的播出&#xff0c;还原了很多原著小说中的“名场面”&#xff0c;引发了公众和书迷的广泛关注和讨论。对于等不及电视剧更新去翻书的人&#xff0c;亦或是“原著党”的脑海里&#xff0c;“名场面”一定少不了《三体3&#xff1a;死神永生》中&#xff0c;“歌者…

疫情期间再读三体(2)——程心为啥这么讨人厌

最近疫情期间看完我的三体这部三体改编的神级动画后&#xff0c;又把三体的小说找出来读了一遍&#xff0c;最近把第三部看完了&#xff0c;其中程心是这一部的主要角色&#xff0c;其中很多的剧情都是靠这个人物进行推动的。这个剧情人物也展开大家大量的讨论&#xff0c;下面…

最近爆火的“元宇宙”概念,是在“割韭菜”吗?

来源&#xff1a;物联网智库好像一夜之间&#xff0c;元宇宙火出了圈。其概念不仅引发投资界和科技圈的关注&#xff0c;就连近日上映的科幻电影《失控玩家》也贴上了“元宇宙”的标签&#xff0c;为这一概念推波助澜。 科技巨头们都争先恐后地想往自己身上贴上“元宇宙”的标签…

元宇宙作为风口究竟是时代的进步还是割韭菜之王

元宇宙这个词应该是当下最火爆的话题了吧&#xff0c;每个资本家都在虎视眈眈的盯着这块儿蛋糕 &#xff0c;那么作为我们电商或者中小型企业家能否分到这一杯羹呢&#xff0c;我想最近的元宇宙NFG会带给你答案。 那么首先我们一起来看看NFG是什么&#xff0c;它指的是非同质化…

万物皆可元宇宙?警惕资本炒作,识破韭菜骗局

要说近两年来最热门的科技话题&#xff0c;其中必然有“元宇宙”一词&#xff0c;从国外的微软打造企业元宇宙、脸书改名为Meta&#xff0c;到国内腾讯、字节、百度、阿里等多家头部企业争先涌入&#xff0c; 2021年被业内戏称为“元宇宙元年”。 尽管“元宇宙”一词炒得火热&…

警惕元宇宙

10月28日&#xff0c;Facebook的创始人马克扎克伯格宣布将公司名字由“FACEBOOK”更改为“META”&#xff0c;随后&#xff0c;便引发了“元宇宙”热。元宇宙概念从科技圈迅速“出圈“&#xff0c;一度占据各大平台的热搜榜和头条榜&#xff0c;引发热议。有人说&#xff0c;这…

一个简单的登录注册界面流程介绍

登录页面实现 其他页面的实现可以到github上克隆下来 login_interface login_server 一、用户登录 1、密码登录 流程&#xff1a; 用户输入密码&#xff1b;表单使用正则验证用户名和密码格式&#xff1b;点击登录&#xff0c;对密码进行加密&#xff0c;并发送登录验证请求…

Netflix 团队解决了 Linux 内核中的 FUSE 死锁

Laf 公众号已接入了 AI 绘画工具 Midjourney&#xff0c;可以让你轻松画出很多“大师”级的作品。同时还接入了 AI 聊天机器人&#xff0c;支持 GPT、Claude 以及 Laf 专有模型&#xff0c;可通过指令来随意切换模型。欢迎前来调戏&#x1f447; <<< 左右滑动见更多 &…

独家 | 我们都是AI免费的数据劳动力(附链接)

作者&#xff1a;Melissa Heikkil 翻译&#xff1a;李洪君 校对&#xff1a;王晓颖本文约1700字&#xff0c;建议阅读5分钟AI聊天机器人的回答听起来聪明、少涌现些有害又无意义的言论的秘诀&#xff0c;在于使用一种从人类反馈的强化学习技术。 ANNA SOROKINA 让AI聊天机器人的…

编程语言中,循环变量通常都用 i?你知道为什么吗?

01 前天&#xff0c;我在朋友圈发了一个问题&#xff1a; 为什么编程中&#xff0c;循环变量通常都是用 i ? 没想到&#xff0c;回复的人这么多&#xff01;要连翻好几页。 这个问题&#xff0c;有 2/3 的人回答正确&#xff0c;有少部分人知道&#xff0c;但是不太确定。 习惯…

我的ChatGPT学习笔记003

大家好啊&#xff0c;我是了不起&#xff01; 前一段时间ChatGPT突然火爆&#xff0c;大佬们纷纷下场。我也跟着努力学习&#xff0c;做了一些笔记。 下面将陆续放出笔记&#xff0c;共享给小伙伴们&#xff01;这是放出的第二篇&#xff0c;和小伙伴们与时俱进哈~~ 笔记三&…

【超详细】R语言实现各种数据可视化

文章目录 1 主成分分析可视化结果1.1 查看莺尾花数据集(前五行&#xff0c;前四列)1.2 使用莺尾花数据集进行主成分分析后可视化展示 2 圆环图绘制3 马赛克图绘制3.1 构造数据3.2 ggplot2包的geom_rect()函数绘制马赛克图3.3 vcd包的mosaic()函数绘制马赛克图3.4 graphics包的m…