4

叮咚抢菜-派送时段监听及推送工具

 2 years ago
source link: https://blog.51cto.com/u_15680916/5373447
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

叮咚抢菜-派送时段监听及推送工具

原创

人在上海,居家一个月,感谢政府和公司时不时的“空投”,主食是不缺的,但是菜真的不够吃,于是这几天也开始加入了叮咚抢菜的大军,然而几天了一次都抢不到;

昨晚上无意中打开叮咚买菜,发现竟然有个时间段可以派送,抓紧买了一袋馄炖皮(别的几乎都卖完了),这个事情提醒了我,叮咚买菜的可派送时间段(运力)是动态变化的,那么我只要写一段程序,监听其变化,在有空余的派送资源时候提醒下我,然后在手动去下单,理论上应该可以买到菜;

今早上 6 点 再一次抢菜失败后,我忍不住了,爬起来开始实践这个半自动外挂的想法。

获取叮咚买菜的 api

我只需要获取可派送时间段这一个 api 就好了,我是 iphone 手机,所以需要找一个合适的抓包工具,我使用 stream 来替代 pc上的fiddle, 有几个注意点:

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

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

叮咚抢菜-派送时段监听及推送工具_抓包

2、叮咚买菜 App 里面是无法抓取 maicai.api.ddxq.mobi 此域名下的接口的,需要抓包小程序的版本。

然后我顺利的拿到了此接口,​​url: 'https://maicai.api.ddxq.mobi/order/getMultiReserveTime'​​, stream 提供了 curl 的拷贝,将其导入到 postman 中,验证了是可正常返回结果的,然后将curl 的格式进行转换为 node request 的版本。

叮咚抢菜-派送时段监听及推送工具_Node.js_02

搭建 node 项目

新建一个git 仓库,将我们的代码放进去,通过node 环境执行一下,然后会发现控制台的console 是乱码的,这个问题经过排查是由于一个 header 配置 ​​Accept-Encoding: 'gzip, deflate, br'​​导致的,gzip压缩会导致乱码,我将其删掉,再次验证结果就正常了。

然后写一个轮询函数,定时来查询此接口,然后对响应数据进行解析,当发现可派送时间段有空余的时候,提示到我,消息提示我用的 Bark 这个ios 系统下的开源工具。

使用 Bark 来实现消息推送到我的 iphone 手机,Bark是一个开发者的专属推送工具,免费、稳定,在 appleStore 中下载 bark 应用后,打开将生成专属 BarkId,如图,复制链接,通过 get post 等形式都可以触发消息推送事件。

叮咚抢菜-派送时段监听及推送工具_Node.js_03
叮咚抢菜-派送时段监听及推送工具_抓包_04
叮咚抢菜-派送时段监听及推送工具_消息推送_05

希望能通过这个小程序能早点买到菜吧,我真的太难了。

--更新4th:增加支持 美团买菜运力监控。

--更新3th:为避免风险,暂不做下单了,有兴趣的,自行获取代码研究吧。

--更新2th:自动下单 Api 正在测试中,请关注。

--更新1th: 程序执行2小时后,第一次抢到菜。


本文只是个人技术分享,只是简单提供个思路,请任何人不要用于商业用途,若有任何侵权问题,请联系本人删除。

 ​github 程序源码​

合集:​ ​我的 github 博客及案例源代码​

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK