# dingdong **Repository Path**: gelove/dingdong ## Basic Information - **Project Name**: dingdong - **Description**: 叮咚买菜助手 - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-04-22 - **Last Updated**: 2022-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 叮咚买菜助手 [![dingdong-release](https://github.com/gelove/dingdong/actions/workflows/go.yml/badge.svg)](https://github.com/gelove/dingdong/actions/workflows/go.yml) ## 4月25日 **最好用一个账号抢菜, 另一个账号捡漏下单和监听配送时段** ## 下载安装 从 [Github Release](https://github.com/gelove/dingdong/releases) 下载对应系统的最新版本 ## 抢菜 ### 通过抓包获取叮咚小程序的网络请求, 模仿接口调用, 配置文件中 header 和 form 里的必要参数需要根据自己抓包到的数据进行设置 ### iphone 1. iphone上通过App Store安装Stream 2. 打开叮咚买菜微信小程序和Stream, Stream点击"开始抓包" 3. 回到叮咚买菜微信小程序, 商品加入购物车并结算提交(无需付款)使得小程序发起网络请求 4. 回到Stream停止抓包并查看抓包历史, 点击按域名, 会看到 maicai.api.ddxq.mobi 这个域名下的请求 感谢群友 hhhhg~ 提供的教程 windows端小白教程.docx [Stream 抓包教程(IOS)](https://www.jianshu.com/p/8a0fe2500f24) [Charles 抓包教程(MacOS, Windows)](https://www.jianshu.com/p/ff85b3dac157) ![微信群](https://github.com/gelove/dingdong/blob/main/assets/wechat.jpeg) QQ群: 60768433 (golang & rust & flutter & 区块链 交流学习) ### 配置文件 config.json 设置 ```js base_concurrency // 除了提交订单的其他请求并发数 默认为1 submit_concurrency // 最后提交订单的并发数 默认为2 snap_up // 抢购 0关闭, 1 六点抢, 2 八点半抢, 3 六点和八点半都抢 advance_time // 抢购提前进入时间 单位:秒 默认为15 pick_up_needed // 闲时捡漏开关 false关闭 true打开 在抢购高峰期之外的时间捡漏 使用时需同时打开监视器 monitor_needed // 监视器开关 监视是否有可配送时段 monitor_interval_min // 监视器调用接口的最小时间间隔 单位:秒 默认为25 (防止接口调用过于频繁, 被叮咚风控) monitor_interval_max // 监视器调用接口的最大时间间隔 单位:秒 默认为35 notify_needed // 通知开关 发现有可配送时段时通知大家有可购商品 使用时需同时打开监视器 notify_interval // 通知间隔 单位: 分钟 ``` #### 通过接口修改配置文件 GET 请求 localhost:9999/set 浏览器中打开 , 并设置想要修改的参数 | 参数 | 说明 | 参数 | |:---------------------|:------------|:---------------------------------:| | base_concurrency | 基础并发数 | 除了提交订单的其他请求并发数, 默认为1 | | submit_concurrency | 提交并发数 | 最后提交订单的并发数, 默认为2 | | snap_up | 抢购模式 | 0 关闭, 1 六点抢, 2 八点半抢, 3 六点和八点半都抢 | | advance_time | 抢购提前时间 | 提前一段时间执行一些预备任务(如获取购物车) 单位:秒 默认为15 | | pick_up_needed | 捡漏开关 | 0 关闭 1 打开 | | monitor_needed | 监视开关 | 0 关闭 1 打开 | | monitor_interval_min | 监视的最小时间间隔 | 监视器调用接口的最小时间间隔 单位: 秒 | | monitor_interval_max | 监视的最大时间间隔 | 监视器调用接口的最大时间间隔 单位: 秒 | | notify_needed | 通知开关 | 0 关闭 1 打开 | | notify_interval | 通知间隔 | 数字 单位: 分钟 | | an_users | 通知用户(安卓) | 安卓使用 PushPlus 推送通知 | | users | 通知用户(苹果) | 苹果使用 Bark 推送通知 | **例子** | api | 说明 | | :-----| :---- | | localhost:9999/set?users=xxx,yyy | 添加需要通知的用户, 第一个是自己的 barkID, 其他为需要通知到的朋友(只能通知与你同属一个叮咚发货站点的用户) | | localhost:9999/set?snap_up=1 | 六点抢购 | | localhost:9999/set?pick_up_needed=1 | 打开捡漏,在抢购高峰期之外的时间捡漏(需同时打开监视器) | | localhost:9999/set?monitor_needed=1 | 打开监视器 在抢购高峰期之外的时间监视是否可以配送 | | localhost:9999/set?notify_needed=1 | 打开推送通知(需同时打开监视器) | | localhost:9999/set?notify_interval=5 | 设置推送时间间隔(防止太过频繁) | ## 可配送时段监听 ![effect](https://github.com/gelove/dingdong/blob/main/assets/effect.jpeg) ### 当有可配送时段时, 发送通知到手机 ### 安卓手机接收通知 #### 微信上关注 "pushplus 推送加" 公众号 ![PushPlus](https://github.com/gelove/dingdong/blob/main/assets/PushPlus.jpeg) #### 点击 激活消息, 并回复 "激活消息", 等待激活成功 #### 点击 功能, 在按钮列表中点击 个人中心 #### 点击 开发设置, 点击 Token 并一键复制 #### 粘贴Token到配置文件的 "an_users" 中 ### 苹果手机接收通知 #### 1.安装 bark 得到自己的 barkID, 并将其粘贴到配置文件的 "users" 中 ![user](https://github.com/gelove/dingdong/blob/main/assets/user.jpeg) #### 2.配置文件中 users 为一组需要通知的 bark userID #### 3.bark 需打开允许通知 ![notify](https://github.com/gelove/dingdong/blob/main/assets/notify.jpeg) ## 打包 打包到release目录下 ```shell make build # 默认打包为macOS darwin-amd64 Intel处理器 make build ARCH=arm64 # macOS M1处理器 make build OS=linux # linux make build OS=windows # windows ``` ## 执行程序 **将 config.example.json 重命名为 config.json** **确保与程序同一目录中包含 sign.js 和 config.json** ### macOS 在终端中执行 ```ssh ./dingdong ``` ### windows 在CMD中执行 ```ssh ./dingdong.ext ``` ### 版权说明 **本项目为 GPL3.0 协议,请所有进行二次开发的开发者遵守 GPL3.0 协议,并且不得将代码用于商用。**