注册

抓包技术的应用示例:薅瑞幸羊毛 🦙

前言


最近瑞幸在搞活动,每天免费送10000份咖啡,我是个不喝咖啡的人儿,所以没咋关注,今早我们的团宠小妹,拉着我 10点整拼手速,想着帮她抢一杯,于是点开瑞幸咖啡小程序主页,banner 栏轮播图中有一张海报入口,操作一通下来,果然,没抢到。


手速不够快不是主要原因,手指操作延迟 + 系统页面跳转耗时加起来到 http 发出就已经耽误了1 -2 秒钟了,这个时间才是关键,本文从技术角度探讨下怎么在最小成本比如几分钟内,实现一个小工具,来解决这个问题。


抓包工具


首先需要一个抓包工具,iphone 手机可以用 stream, 有几个注意点:


1、默认安装后是无法抓取 https 类型的,需要在设置里进行相关配置:



如果您要抓取 HTTPS 的请求,需要先启动抓包,然后安装 CA 证书后,去设置-通用-关于-证书信任设置 里信任 CA,才可以查看请求的内容。



Pasted image 20230601122258.png


2、注意小程序里面哦(原生的可能抓不到),拿到的接口名如下:


https://mkt.lkcoffee.com/ladder/capi/resource/m/promo/activity/send


stream 提供了 curl 的拷贝,将其复制并导入到 postman 中。


WechatIMG247.png


postman 导入&复现


点击 import 按钮,在弹窗中选择 raw text 将复制的 curl 字符串粘贴进去,点击确认,就成功的将 这个 http 接口导入到了 postman 中,尝试点击 send 按钮,发现拿到了正确的响应,验证了该接口已经可以正常使用。


截屏2023-06-01 12.43.31.png


Pasted image 20230601122933.png


自动化脚本?


其实到这一步,已经实现了目标,点击 send 直接发送请求,大大提升了抢到的概率,如果你还想更进一步,那么可以尝试将其封装成 自动化脚本,来实现定时、自动、重复发送;


点开右侧代码块,选择语言,假设选择 python(也可以任意选择你擅长的语言),然后就自动生成 python 版本的可执行代码片段,我们就在这个基础上拓展功能;


截屏2023-06-01 12.48.19.png


示例代码如下:

import requests
import time

url = "http://example.com" # 将此处的 URL 替换为你要请求的地址
payload = {}
headers = {
#将 postman 中的headers 复制过来
}

start_time = "09:59:55" # 设置开始请求的时间
end_time = "10:00:30" # 设置结束请求的时间

def make_request():
response = requests.get(url, headers=headers, data=payload)
if "成功" in response.text:
print("响应内容:", response.text)
raise SystemExit # 中断程序

while True:
current_time = time.strftime("%H:%M:%S", time.localtime())
if current_time >= start_time and current_time <= end_time:
make_request()
time.sleep(1) # 每秒检查一次当前时间


将其保存到本地并通过 python 指令来执行,就可以运行了。


总结


用今天的午睡时间,写了这篇文,以瑞幸的营销活动为例子,带你感受了下技术的魅力,其中涉及到了抓包、自动化脚本、定时任务、请求策略、stream 和 postman 等知识;


然后我想问下大家,对于其带来的潜在公平问题,你们怎么看呢?欢迎讨论。


作者:Ethan_Zhou
链接:https://juejin.cn/post/7239539290535690277
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册