请允许我标题夸张一下,其实并不是真正买菜自由,我想买什么买什么,只不过通过代码来代替自己做一些事情。
博主人在上海,这边什么情况大家也都清楚,所以买菜就是生 gou 存 huo 的首要条件。
之前每天抱着手机刷叮咚,熬夜早起抢菜,大多数都是无用功,你根本抢不到。直到大奇分享了我一个程序,抢菜问题算是解决了。
但是这一切都有一个很重要的前提,你的购物车里首先得有货 T_T 。
我知道叮咚每天不定时会有一些东西放出来可以捡漏,但是我又不想经常抱着刷机,咋办?当然是求助于代码了。
说干就干
思路就很简单,两步走:
- 抓包,分析目标接口。
- 代码调用接口。
抓包
我是window10系统,用的 fiddler 进行抓包,这里可以直接打开微信PC版上的叮咚小程序进行抓包,很方便。
据我手动操作时候观察,在首页分类的下方列表会出现一些可以捡漏的商品。因为站点处于上海,所以这个列表商品数量很少,那就它了。
接口路径是/search/rankingList
,也想试试的童鞋就不用自己再去找了。
接着就是分析接口,拿到请求入参,请求头,响应体,这里就不作赘述了。
编码
编码的话,我就直接在抢菜的程序上新增了,因为之前的代码里已经做好了一些请求头固定参数的配置了。实际上你怎么写都行,只要可以模拟请求就好。
程序的实现,我的需求大概是这样:
- 可以定时的去请求接口。
- 我入参是个列表,里面是我需要的商品名称。
- 当接口里存在我的商品的时候,播放一分钟铃声提醒我。
- 一些其他的异常处理。
代码很简单,这里使用 hutool 里提供的库去发起 http 请求。
我在接口的返回里一直拿到list
这个节点,这里面都是商品。然后简单粗暴转为字符串,再遍历我的目标商品,看看是否存在,存在就播放一分钟铃声,返回true
。
接下来再另一个类,main 方法里调用上面的方法。
这里我们千万不要暴力调用叮咚的接口,所以我设置了等待时间,间隔时间在 30s 到 60s 之间,最后运行程序即可。
作为一名测试猿,自己写的程序还是要测试一番的,调试各种情况没问题后就跑起来吧。
好吧,一边水文一边等待我的铃声响起。。。
希望疫情早点结束,回归正常生活。