Coder Social home page Coder Social logo

ddshop's Introduction

ddshop

购物情况有所改善,并且叮咚增加了安全风控检测,导致频繁使用程序 账号会被封禁。

团购网站,可以查询所在地区的所有团购信息:
https://tg.xuan-niao.com

该项目理论上不会再跟踪 叮咚买菜 的新更新,代码可供大家参考。

安装

Releases

Github Release 下载

Docker

docker pull zc2638/ddshop:latest

源码

go install github.com/zc2638/ddshop/cmd/ddshop@latest

使用

  1. 创建配置文件config.yaml
  2. 修改配置文件中的配置项
  3. 执行程序

配置

点击查看 完整配置

bark:
  key: ""               # Bark 通知推送的 Key
push_plus:
  token: ""             # Push Plus 通知推送的 Token
  
# 自动任务的配置,不配置 periods 将持续执行
regular:
  success_interval: 100 # 执行成功 再次执行的间隔时间(ms), -1为停止继续执行
  fail_interval: 100    # 执行失败 再次执行的间隔时间(ms), -1为停止继续执行
  periods: # 执行周期
    - start: "05:59"
      end: "06:10"
    - start: "08:29"
      end: "08:35"

# 叮咚买菜的配置
ddmc:
  cookie: ""         # 使用抓包工具获取 叮咚买菜上的用户 `cookie` (DDXQSESSID)
  pay_type: "wechat" # 支付方式:支付宝、alipay、微信、wechat
  channel: 3         # 通道: app => 3, 微信小程序 => 4
  interval: 100      # 连续发起请求间隔时间(ms)
  retry_count: 100   # 每次请求失败的尝试次数, -1为无限

命令行工具

执行以下命令前,将 <custom-config-path> 替换为实际的配置文件路径,例如:config/config.yaml

ddshop -c <custom-config-path>

Docker

执行以下命令前,将 <custom-config-dir> 替换成宿主机存放配置文件的目录

docker run --name ddshop -it -v <custom-config-dir>:/work/config zc2638/ddshop 

抓包

Charles抓包教程
Charles 抓包 PC端微信小程序
微信小程序支持PC版,所以只需要安装抓包程序,打开 叮咚买菜微信小程序,直接进行抓包即可,无须进行手机配置。

声明

本项目仅供学习交流,严禁用作商业行为!
因他人私自不正当使用造成的违法违规行为与本人无关!
如有任何问题可联系本人删除!

ddshop's People

Contributors

tiantianbigwang avatar zc2638 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ddshop's Issues

直接执行go时出现以下报错

root@iZbp17xlwhqgtqvcszh6kzZ:~/test/ddshop# go run cmd/ddshop/main.go
build command-line-arguments: cannot load embed: malformed module path "embed": missing dot in first path element

抱歉,本人非做go。对go的包机制不是很懂,请问这个需要怎么解决呢?

interval好像无效

目测不管设置多少都是一个抢购速度,用config和命令行bug均复现。

同时config里面的periods好像也无效。

很难抢到菜,逻辑似乎有问题

提交订单失败后就又重新跑一边获取购物车,配送时间 ,应该是 循环获取购物车,成功后循环获取配送时间段,成功后循环提交订单,提交订单失败又分几种,1. 购物车商品全部是无效的->退出 2. 购物车商品部分无效->更新购物车 3. 无配送时间段->循环获取配送时间段 4. 网络繁忙->继续提交订单。 就几种状态,建议用一个状态机,for循环

for _, reserveTime := range multiReserveTime {
		sess := session.Clone()
		sess.UpdatePackageOrder(reserveTime)
		wg.Go(func() error {
			startTime := time.Unix(int64(sess.PackageOrder.PaymentOrder.ReservedTimeStart), 0).Format("2006/01/02 15:04:05")
			endTime := time.Unix(int64(sess.PackageOrder.PaymentOrder.ReservedTimeEnd), 0).Format("2006/01/02 15:04:05")
			timeRange := startTime + "——" + endTime
			logrus.Infof(">>> 提交订单中, 预约时间段(%s)", timeRange)
			if err := sess.CreateOrder(context.Background()); err != nil {
				logrus.Warningf("提交订单(%s)失败: %v", timeRange, err)
				return err
			}

			successCh <- struct{}{}
			return nil
		})
	}

无法识别的状态码,用的是010版本

WARNING[2022/04/15 05:58:04] 将在 100ms 后重试
WARNING[2022/04/15 05:58:04] 部分数据加载失败: { "success": false, "code": -3100, "msg": "", "tips": { "duration": 400, "limitMsg": "当前页面拥挤,部分数据加载失败", "loadingMsg": "数据加载中,请稍等...", "loadErrorMsg": "加载失败,请重新尝试" }, "data": {} }
WARNING[2022/04/15 05:58:04] 将在 100ms 后重试
WARNING[2022/04/15 05:58:05] 部分数据加载失败: { "success": false, "code": -3100, "msg": "", "tips": { "duration": 400, "limitMsg": "当前页面拥挤,部分数据加载失败", "loadingMsg": "数据加载中,请稍等...", "loadErrorMsg": "加载失败,请重新尝试" }, "data": {} }
WARNING[2022/04/15 05:58:05] 将在 100ms 后重试
WARNING[2022/04/15 05:58:05] 部分数据加载失败: { "success": false, "code": -3100, "msg": "", "tips": { "duration": 400, "limitMsg": "当前页面拥挤,部分数据加载失败", "loadingMsg": "数据加载中,请稍等...", "loadErrorMsg": "加载失败,请重新尝试" }, "data": {} }
WARNING[2022/04/15 05:58:05] 将在 100ms 后重试
ERROR [2022/04/15 05:58:05] 检查订单失败: 无法识别的状态码: {"msg":"系统异常","code":1,"timestamp":"2022-04-15 05:58:23","success":false,"exec_time":null}

账号成功被封 T_T

image

购物车直接加载不出来 ,同一个网络下的另外一个手机可以正常显示,小程序 和 app端都是这样子

找不到Cookie

老哥,我找不到那两个网址的包.
电脑端安装了证书,放到了受信任的根目录下. 而且打开的PC的微信叮咚买菜小程序>
抓包工具中没有显示那两个网址.

账号估计被封

目前能加入购物车,能从购物车转到结算页面,选择地址永远都是:前方拥挤,请稍后再试,而且无法选择支付方式(只有微信),无法正常通过APP下单

商品信息有变化 错误

INFO [2022/04/11 18:14:38] >>> 生成订单信息
ERROR [2022/04/11 18:14:38] 检查订单失败: parse response failed: { "code": 5013, "msg": "当前下单人数过多,请稍后再试!", "success": false, "data": {} }

请教

请问下ddshop --cookie 是直接cmd里面运行吗。我从release下的exe

确定有货,但是一直下单失败

提交订单(2022/04/13 16:07:29——2022/04/13 22:30:00)失败: 无法识别的状态码: {"success":false,"code":-1,"msg":"操作失败","data":{"station_id":"5c2f3b00716de13e768b9cbe","tradeTag":"interError"},"tradeTag":"interError","server_time":1649836949,"is_trade":1}

但我手工进去却下单成功了

参数错误

WARNING[2022/04/12 06:00:56] 提交订单失败: 无法识别的返回码: -3001, msg:
INFO [2022/04/12 06:00:56] >>> 提交订单中
WARNING[2022/04/12 06:00:56] 提交订单失败: 无法识别的返回码: -3001, msg:
INFO [2022/04/12 06:00:56] >>> 提交订单中
WARNING[2022/04/12 06:00:56] 提交订单失败: 无法识别的返回码: -3001, msg:
INFO [2022/04/12 06:00:56] >>> 提交订单中
WARNING[2022/04/12 06:00:58] 提交订单失败: 无法识别的返回码: 1, msg: 参数错误
INFO [2022/04/12 06:00:58] >>> 提交订单中
WARNING[2022/04/12 06:00:58] 提交订单失败: 无法识别的返回码: -3001, msg:
INFO [2022/04/12 06:00:58] >>> 提交订单中
WARNING[2022/04/12 06:00:58] 提交订单失败: 无法识别的返回码: -3001, msg:
INFO [2022/04/12 06:00:58] >>> 提交订单中

叮咚加入了封号的逻辑

今天试了好几个号,发现叮咚对不同的账号做了不同限制,具体如下:
新注册账号或提交次数正常的账号,可以顺利进入结算界面,并打开配送时间;
提交次数较多的,在上海的地址只能进入结算,打不开配送时间,但是在别的城市可以正常下单;
提交次数极多的,没有用脚本的,出现重新加载界面,偶尔可以进入结算,很难打开配送时间,但是在别的城市可以下单。
提交次数超级超级多,用脚本的,直接购物车空白,或者重新加载界面,别的城市也无法下单,就是封号了!

cookie

cookie抓到了,老哥能详细说一下怎样在脚本中设置 的嘛

抓包是最新的Cookie,用户信息和收货地址都获取到了,获取购物车中的有效商品时返回访问过期重新登陆

如题
去定Cookie是最新的,每次都可以获取到用户ID名称和收货地址
以下为输出结果:

? 请选择支付方式 微信
INFO [2022/04/15 21:38:07] 已选择支付方式:微信

INFO [2022/04/15 21:38:07] =====> 获取购物车中有效商品
WARNING[2022/04/15 21:38:07] 尝试次数: 1, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:07] 尝试次数: 2, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:07] 尝试次数: 3, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:07] 尝试次数: 4, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:07] 尝试次数: 5, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:07] 尝试次数: 6, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:08"}
WARNING[2022/04/15 21:38:08] 尝试次数: 7, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}
WARNING[2022/04/15 21:38:08] 尝试次数: 8, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 21:38:07"}

账号可能被封的情况说明

判断情况:

  1. 尝试添加一个其它城市的地址,也无法正常下单

解决方法:

  1. 打电话客服 或 联系在线客户,反应无法下单的问题

有其他情况,可添加补充

正确的cookie,但是报这个错误

WARNING[2022/04/16 06:03:51] 尝试次数: 38, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 37, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 36, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 35, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 34, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 33, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 32, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 31, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 30, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 29, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 28, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 27, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 26, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 25, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 24, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 23, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}
WARNING[2022/04/16 06:03:51] 尝试次数: 22, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-16 06:03:50"}

key 和token问题

模板里面key 和token在哪个请求里面啊,为啥我找了一遍都没找到? 感谢了

docker运行,能发出通知来吗?

我这边报以下错误,没声卡支持?

ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default
WARNING[2022/04/19 11:35:54] 通知失败: Music: oto: ALSA error: No such file or directory

使用IOS的Cookie提示”您的访问已过期,请重新登录“

版本:0.1.0
使用的Cookie:来自于叮咚买菜IOS版APP

日志:

INFO   [2022/04/15 06:29:48] =====> 获取购物车中有效商品
WARNING[2022/04/15 06:29:48] 尝试次数: 1, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 2, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 3, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 4, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 5, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 6, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 7, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 8, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 9, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 10, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 11, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 12, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:48] 尝试次数: 13, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:49] 尝试次数: 14, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
WARNING[2022/04/15 06:29:49] 尝试次数: 15, 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}
ERROR  [2022/04/15 06:29:49] 全选购物车商品失败: 无法识别的状态码: {"code":1111,"msg":"您的访问已过期,请重新登录","success":false,"timestamp":"2022-04-15 06:29:45"}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.