您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
剖析一下"抢茅台"脚本底层逻辑
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
剖析一下"抢茅台"脚本底层逻辑
团座是个云小白
2023-03-16
IP归属:北京
207160浏览
本文作者:梁冬冬 ### **前言**: **今天你撸茅台了么👇? 撸茅台已经成为社会现象🙌,茶余饭后讨论的最佳实践😇** 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,如果抢购后无法结算,脚本会通过驱动重新打开商品页面,然后选择商品,重新走判断时间的逻辑,以上; ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-11-15-18-42KzZ55BsQbnSVufNL.png) ### **二、后端接口脚本解析** **下面的代码是之前GitHub很火的抢购京东飞天茅台jd_seckill脚本,一度被很多人使用(现项目已经停止),底层逻辑:绕过前端UI,整体流程通过协议接口层串联,可以通过自定义控制抢购的速度,最终实现代码替代人工操作抢走商品;** • **后端接口串联整体流程实现登录:**通过登录访问二维码页面、获取Token票据、校验票据,获取cookies • **串联接口实现抢购流程**:点击“抢购”按钮后,会有两次跳转302,最后达到订单结算页面,这里返回第一次跳转后的URL,作为商品的抢购链接; ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-11-16-10-38OGpT6DIdah13f7wh.png) ### **三、APPUI脚本 以及 adb命令方式 解析** **APPUI脚本方式 底层逻辑是:通过手机端(安卓、IOS或模拟器等)通过UI自动化工具或adb命令的方式控制app以及webview来模拟人操作,实施抢购的过程;** • **直接进入商品抢购页面,通过adb命令操作抢购:**os.system是py调用shell的一种方式,adb的全称为Android Debug Bridge,就是起到调试桥的作用; 通过adb shell input tap命令,可以控制手机操作点击手机区域(注:区域为传递的X,Y轴的坐标),通过这种方式可以连续操作手机进行抢购活动 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-11-16-15-59DDB11teTpA8p57uM57.png) **appUI脚本攻击方式,是通过工具化的手段,例如Uiauto.js、uiautomator、appium等等,实现的手机控制app(内置的webviewH5需要结合webdriver)实现模拟人为操作,实施抢购;** • **setup方法:**封装了驱动的一些必要参数,系统的类型、设备名称、app包名、首页面活动页、使用的浏览器驱动的地址(H5)等等关键核心驱动说明 • **appium:**此案例里面使用了appium工具操作,所以remote方式链接appium-server • **核心模拟路径:**所有的操作路径,业务逻辑封装在test_search里,通过坐标点击 以及 H5页面的操作,在while True里面无限循环进行抢购商品 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-11-16-16-12ahvTqi9i11twSDl19.png) **四、风险防守、识别篇:** 再高明的攻击手段,在智能风控面前下,都会毕露无遗,风险侧通过关联黑名单、设备指纹、生物探针、风险标签(群控、设备聚集性、陀螺仪、云手机等等)可以识别出来人的操作轨迹,按压行为等等,可快速识别风险,锁定风险,消除风险;(注:由于机密性比较强,此处不做过多详细说明😃)
原创文章,需联系作者,授权转载
上一篇:使用“宝塔一键迁移”工具,将单机版typecho博客系统迁移到京东云cvm云主机
下一篇:京东探索研究院 | 2023年十大科技趋势
团座是个云小白
文章数
24
阅读量
64079
作者其他文章
01
京东探索研究院 | 2023年十大科技趋势
日迈月征,朝暮轮转。这一年里,科技开拓者们,产业同行者们用科技汇聚向上的力量步入了数智时代的 “星辰大海”。数字化是我们创造出来的一个永恒并且充满活力的装置,数智技术正在以前所未有的速度发展,并引发颠覆式的变革。
01
Mysql 和 Redis 数据如何保持一致
Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能
01
【案例分享】如何利用京东云建设高可用业务架构
公有云及私有云客户可通过使用京东云的弹性IAAS、PAAS服务,创建高可用、高弹性、高可扩展、高安全的云上业务环境,提升业务SLA,提升运维自动化水平,降低资源成本及运维成本。有业务迁移上云需求,希望构建云上高可用业务架构的客户或对云上高可用架构规划有兴趣的读者可以一看。
01
剖析一下"抢茅台"脚本底层逻辑
百度了下网上抢茅台的种种手段与方法,发现里面的猫腻还真不少,同时作为风险人也想不断的通过各种技术手段识别发现风险,让羊毛党无处躲藏;也许,竞争对手比你想象中要更加的强大, 今天就带你走近抢茅台的脚本,领略下TA们有趣的灵魂
团座是个云小白
文章数
24
阅读量
64079
作者其他文章
01
京东探索研究院 | 2023年十大科技趋势
01
Mysql 和 Redis 数据如何保持一致
01
【案例分享】如何利用京东云建设高可用业务架构
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号