剖析一下“抢茅台“脚本底层逻辑

news2024/11/17 7:53:33

本文作者:梁冬冬

前言今天你撸茅台了么👇? 撸茅台已经成为社会现象🙌,茶余饭后讨论的最佳实践😇

2022年双十一大促已经完美收官,兄弟姐妹克服种种困难与挑战… 备战的会议室忙碌中带着紧张,当峰值过后的喜悦不言而喻,今年备战室里听着对面的兄弟讲述了他抢茅台的经过,以及对马上来临的整点茅台活动期待,我也立马参与进去,但是…没抢到😭, 带着种种的疑问,百度了下网上抢茅台的种种手段与方法,发现里面的猫腻还真不少,同时作为风险人也想不断的通过各种技术手段识别发现风险,让羊毛党无处躲藏;也许,竞争对手比你想象中要更加的强大, 今天就带你走近抢茅台的脚本,领略下TA们有趣的灵魂;

下面的列表是我总结网络上普遍存在的一些抢购的方式,这些方式的共性是:模拟单人或多人的操作行为,在最短的时间内完成抢购流程;

类型方式热度先进性
后端接口脚本http协议👍👍👍
webUI脚本webdriver👍👍👍👍👍👍👍👍
appUI脚本webdriver and 无障碍模式👍👍👍👍👍👍👍👍
adb命令脚本adb协议👍👍👍👍👍👍👍👍

一、webUI脚本解析:

下面是一段网络上比较常见的某宝的一种抢茅台的脚本,底层逻辑是: 模拟人点击操作路径,通过脚本重放,循环实现定时、自动化、多并发等操作,最终实现代码替代人工操作抢走商品;

像人一样控制浏览器:脚本里是基于webdriver的一种浏览器驱动方式,可以通过驱动来控制浏览器实施控制页面操作,例如里面使用频繁的find_elemnt_by_id是通过页面ID识别的(ID可以通过控制台元素定位获取到),find_element_by_link_text通过精准匹配页面上的文案,是辨识元素的一种方式;**click()**是识别元素后的鼠标点击动作;

像人一样进入登录:脚本里面的run_driver方法,里面调用了login_in方法,里面的逻辑大概是模拟用户输入用户名+密码,点击登录按钮后,实现登录;

• **像人一样的循环抢购商品:**抢购茅台会有对应的抢购时间,这里的times就是作者设定的抢购时间,循环体里面会判断当前时间是否大于等于times时间,如果出现大于等于后,会进入到第二个循环体,寻找下单的按钮然后进行点击操作;在点击成功后继续进入到提交订单页面,通过link_text识别文案,进行点击操作,最终成功抢购商品成功,进入到待付款页面;else,如果抢购后无法结算,脚本会通过驱动重新打开商品页面,然后选择商品,重新走判断时间的逻辑,以上;

二、后端接口脚本解析

下面的代码是之前GitHub很火的抢购京东飞天茅台jd_seckill脚本,一度被很多人使用(现项目已经停止),底层逻辑:绕过前端UI,整体流程通过协议接口层串联,可以通过自定义控制抢购的速度,最终实现代码替代人工操作抢走商品;

• **后端接口串联整体流程实现登录:**通过登录访问二维码页面、获取Token票据、校验票据,获取cookies

串联接口实现抢购流程:点击“抢购”按钮后,会有两次跳转302,最后达到订单结算页面,这里返回第一次跳转后的URL,作为商品的抢购链接;

三、APPUI脚本 以及 adb命令方式 解析

APPUI脚本方式 底层逻辑是:通过手机端(安卓、IOS或模拟器等)通过UI自动化工具或adb命令的方式控制app以及webview来模拟人操作,实施抢购的过程;

• **直接进入商品抢购页面,通过adb命令操作抢购:**os.system是py调用shell的一种方式,adb的全称为Android Debug Bridge,就是起到调试桥的作用; 通过adb shell input tap命令,可以控制手机操作点击手机区域(注:区域为传递的X,Y轴的坐标),通过这种方式可以连续操作手机进行抢购活动

appUI脚本攻击方式,是通过工具化的手段,例如Uiauto.js、uiautomator、appium等等,实现的手机控制app(内置的webviewH5需要结合webdriver)实现模拟人为操作,实施抢购;

• **setup方法:**封装了驱动的一些必要参数,系统的类型、设备名称、app包名、首页面活动页、使用的浏览器驱动的地址(H5)等等关键核心驱动说明

• **appium:**此案例里面使用了appium工具操作,所以remote方式链接appium-server

• **核心模拟路径:**所有的操作路径,业务逻辑封装在test_search里,通过坐标点击 以及 H5页面的操作,在while True里面无限循环进行抢购商品

四、风险防守、识别篇:

再高明的攻击手段,在智能风控面前下,都会毕露无遗,风险侧通过关联黑名单、设备指纹、生物探针、风险标签(群控、设备聚集性、陀螺仪、云手机等等)可以识别出来人的操作轨迹,按压行为等等,可快速识别风险,锁定风险,消除风险;(注:由于机密性比较强,此处不做过多详细说明😃)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用户规模持续上涨,外卖行业未来的发展趋势如何?还能从里盈利?

外卖跑腿行业随着互联网移动支付及网络的普及得到了高速发展,相关数据显示2022年外卖行业规模进一步上升至8117亿元,外卖市场发展速度增速加快,并且也带动了各大主流外卖平台的发展,在2021年外卖用户规模达5.44亿人,占…

从工厂打螺丝到月薪9.5k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”,后来发现如果不努力不可能有美好的事情发生! 初中毕业进厂5年,创业经商多次战败,为了生计辗转奔波 初中毕业后我就进了工厂,第一份工作是做模具加工。从500元一…

Python:用一行代码在几秒钟内抓取任何网站

如果你正在寻找最强大的 Python 抓取工具?不要再看了!这一行代码将帮助你立即启动并运行。 Scrapeasy Scrapeasy 是一个 Python 库,可以轻松抓取网页并从中提取数据。它可用于从单个页面抓取数据或从多个页面抓取数据。它还可用于从 PDF 和 …

算法设计与分析 SCAU10346 带价值的作业安排问题

10346 带价值的作业安排问题 时间限制:1000MS 代码长度限制:10KB 提交次数:25 通过次数:9 题型: 编程题 语言: G;GCC;VC;JAVA Description 已知n项作业E{1, 2, … ,n} 需要完成,只有一台机器,同一时刻至多完成一个作业, 而且每项作业需要…

Msyql数据库入门基础教学

目录 文章目录二、数据库三、为什么要使用数据库?四、 数据库相关的概念⑤SQL语句操作修改表insert基本使用update语句delete语句二、数据库 数据库的种类有许多,企业中常用的有MySQL、Oracle,其中MySQL使用最多,是因为他开源免费…

和外国bi相比,国产bi软件更适合中国企业

提起国外bi和国产bi软件之争,经常有人说国外bi软件起步更早,经验更丰富,功能更强大。无可否认国外bi软件发展起步早,也确实功能强大,但当他们来到中国却往往会面临着本土化难题,经常出现水土不服现象&#…

【Hack The Box】linux练习-- Jarvis

HTB 学习笔记 【Hack The Box】linux练习-- Jarvis 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1f3…

基于docker-k8s的web集群

目录 网络拓扑图 基于docker-k8s的web集群搭建 项目描述 详细步骤 1、集群ip地址的规划 2、Ansible批量部署服务器 3、创建k8s集群 4、配置NFS服务 5、pv,pvc,与NFS融合 6、配置Nginx负载均衡 网络拓扑图 基于docker-k8s的web集群搭建 项目描述…

web前端期末大作业基于html+css+javascript+jquery制作家乡主题风景网页设计与实现——张家口

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

【Hack The Box】Linux练习-- Popcorn

HTB 学习笔记 【Hack The Box】Linux练习-- Popcorn 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1f…

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm贝儿幼儿教育管理系统》 该项目分为2个角色,管理员、用户。 用户可以浏览前台,包含功能有: 首页、幼儿园信息、活动信息、就餐信息…

CAS号:1676104-79-2

所有细胞渗透性肽C(Npys) rrrrrrr - nh₂的d模拟物。 编号: 129180中文名称: H-Cys(NPys)-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-CAS号: 1676104-79-2单字母: H2N-C(Npys)-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-NH2三字母: H2N-Cys(Npys)-DArg-DArg-DArg-DArg-DArg-…

Kotlin 开发Android app(八):Kotlin类对象class

只要是面向对象的编程语言,基本上都有类Class的用法,只是好不好用,好不好记而已,面向对象是c开始引入的,但是c 关于类的东西,弄的太复杂,其实在真正的项目中,很少用到非常多复杂的概…

论文阅读:Practical Deep Raw Image Denoising on Mobile Devices

论文阅读: Practical Deep Raw Image Denoising on Mobile Devices 旷视 2020 ECCV 基于深度学习的降噪方法在近几年得到了大量的研究,这些方法的效果也霸榜了很多公开的数据集。不过这些方法用到的网络模型都很大,无法在手机端侧运行。这篇…

安装 DolphinDB Python API

1. 下载 whl 包 根据 CPU 架构、操作系统,从官方网站 pypi.org 下载对应的 Python API 安装包。 对应 x86_64, Python3.8 的包: 下载链接 2. pip 离线安装 pip install dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl 3. 验证安装是否成…

数理天地杂志数理天地杂志社数理天地编辑部2022年第20期目录

数学基础精讲《数理天地》投稿:cn7kantougao163.com 函数定义域求法分析探讨 刘志勇; 2-3 不等式证明之极值点偏移问题探究 鲁媛媛; 4-5 利用导数突破函数的图象问题 王法金; 6-7 导数求解函数单调性的类型及分析 陈泓; 8-9 关注解三角形的一个常考…

JDK下载安装及环境配置

一、文章导读 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java 那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 二、JDK版本描述 学习环境中, 我们通常…

诊所要使用微信预约系统,需准备哪些资料?

许多诊所想在自己的微信公众号里,做一个预约挂号的功能,但无论是做公众号预约系统,还是预约小程序,都需要具备以下几类资料: 营业执照 诊所为患者提供线上预约挂号功能,需要借助于微信企业服务号或者小程序…

什么是CRM系统?为什么现代企业都在使用?

如今市场竞争日益激烈,不少企业管理者通过各种方式,试图寻找一个合适并有效的解决方案,以此来帮助他们解决企业管理各种难题,让企业业绩不断提高,获得持续的成功。 而企业管理软件的出现填补了企业管理领域的空缺。从…

clickhouse 多维分析函数

前言 clickhouse的强大之处在于充分利用内存计算的高效性从而快速得到计算结果,尤其是对于一些需要做聚合分析、统计等场景下,clickhouse提供了一些按维度分析的函数,本文将介绍clickhouse常用的几类多维分析函数。 groupby函数 还记得在mys…