yml2213
|
dce9ce2a5a
|
优化日志系统:网络请求降噪并按接口聚合,补齐双时间说明与实例标识,发布0.3.2
- 逐条网络日志(请求完成 / 接口返回异常 / 响应刷新CSRF已同步)从 info/warn 降为 debug:
实测一次 6 账号的模拟抢购里 233 条日志有 174 条(74%)属于这类;真实抢购会产生几千条,
把界面仅 800 条的内存日志冲掉,反而看不到关键信息。HTTP/解析/传输层错误仍为 error 级
- 新增按接口聚合的网络统计,抢购任务结束时输出一行,替代逐条刷屏:
"接口统计: 锁定兑换商品 ×341 失败341 平均=95ms 最慢=312ms 最后错误=活动火爆,请稍后再试"
- 日志文件开头新增表头:实例名、数据目录、双时间格式说明(本地时间 + D 斗鱼估算时间)、
并说明"校准完成前偏移为 0,只显示本地时间"。双时间一直存在却没有任何地方解释过,
多实例日志复制或汇总后也分不清来源
- 界面日志面板:显示日志级别并按级别着色(此前级别只存在于 CSS class,复制出去就丢);
新增"复制"按钮,按与日志文件一致的单行格式导出(此前直接复制会变成 5 行一条、
1204 行里其实只有 233 条日志)
- 设置页"日志显示等级"补充说明:Info 起只显示关键日志,需要逐请求细节时切到 Debug
- 新增测试:TestRequestStatsAggregatesByLabel、TestLogFileHeaderDocumentsFormat、
TestRunNowLogsAggregateInsteadOfPerRequest(断言必须有聚合行、且不得出现逐条请求日志)
|
2026-10-03 19:33:14 +08:00 |
|
yml2213
|
46c06180a5
|
重构锁单支付重试内核并修复多实例启动,发布0.3.0
- 抢购内核改为"每账号独立重试循环",移除轮次屏障:旧实现在 3 个中签账号卡住
60 秒支付退避时,另外 31 个账号空转 39 秒,还出现过"某一轮只跑 1 个账号、其余整轮没被尝试"
- 锁单退避改为读取配置的"重试间隔策略"(同一账号连续失败成倍放大,封顶 5 秒),
删掉硬编码 30 秒退避与"只重试一次"
- 锁单失败不再提前停止:限流(活动火爆/网络繁忙)继续重试;售罄也继续降频探测
(别人锁单后支付失败或锁单过期,库存会回流),只在窗口结束时按售罄/限流/普通失败分类上报
- 支付重试按斗鱼错误码决策:1644430001/1644400002/1644400014 视为"订单已受理、结果未定"
并快重试(300ms 起),取代按文案把"订单操作进行中"误判成频控的 60 秒退避;
不再设次数上限,只受 120 秒预算与锁单过期约束,超出预算如实报"支付结果未知"
- 已锁订单在 75 秒窗口结束后仍会支付完,不再受窗口约束
- 多实例:为每个实例分配独占的 WebView2 用户数据目录。Wails 默认所有实例共用
%APPDATA%\<可执行文件名>,而一个数据目录只能有一个浏览器进程,导致偶发开不出新实例、
必须全部关掉重开;实例占位因此提前到 wails.Run 之前完成
- 多实例:占位失败不再静默退回默认目录(会让两个进程共享 accounts.txt/config.json、
同秒启动还会写同一个日志文件),改为进程唯一的临时实例目录并记录降级原因
- 多实例:单个槽位锁被瞬时占用(杀软/索引器)时短暂重试,仍失败则继续试下一个槽位
而不是整个分配失败;日志文件改为独占创建,同秒启动自动追加 -2/-3 后缀
- 新增 %LOCALAPPDATA%\douyu-go\startup.log,记录每次启动与失败原因,
便于排查"窗口起不来"这类连应用日志都不会生成的问题
- 修复预热缓存日志每个账号打两遍、"账号尝试"计数误导(改为真实锁单/支付/直接兑换次数)
- 修复前端把含"成功"字样的失败文案显示成抢到(改为只认"成功|"前缀)
- 修复 jitterDuration 在基准小于 10ms 时 rand.Int63n(0) 会 panic 的隐患
- 设置页文案与作用域同步:重试间隔策略明确作用于锁单重试、"尝试包数"明确仅用于和平小店
|
2026-10-03 19:09:19 +08:00 |
|
yml2213
|
1f76c12b48
|
精英手册改为锁单支付并发布0.2.2
- 精英手册兑换改为 createExchangeOrder 锁单后 payExchangeOrder 支付,不再查询商品状态与预兑
- 电竞手册保留直接兑换,标准模式重新取鉴权,激进模式复用鉴权
- csrfToken 优先复用 Cookie,校验失败自动刷新后重试一次
- 锁单支付按频控/通用退避表重试,临近过期不再重试
- 定时复校发现抢购已开始则不再改写触发时刻
- 升级 wails 至 v2.15.0
|
2026-09-30 20:35:44 +08:00 |
|
yml2213
|
1cd94c0179
|
优化和平小店兑换记录查询
|
2026-08-09 12:54:37 +08:00 |
|
yml2213
|
8919d020c5
|
修复和平小店商品图片和库存展示
|
2026-08-09 12:38:08 +08:00 |
|
yml2213
|
1b697ced09
|
合并远程main并保留和平小店功能
|
2026-08-09 10:52:56 +08:00 |
|
yml2213
|
c41fd48b1c
|
fix: preserve xiaodian ios platform in asset queries
|
2026-08-09 10:10:49 +08:00 |
|
yml2213
|
feb72196c1
|
优化和平小店碎片兑换链路
|
2026-08-09 10:07:36 +08:00 |
|
yml2213
|
c6f16dfbee
|
增强和平小店账号管理
|
2026-08-09 09:18:41 +08:00 |
|
yml2213
|
dde2b43d82
|
feat: improve xiaodian seckill flow
|
2026-08-08 23:04:40 +08:00 |
|
yml2213
|
c84940a5dc
|
新增和平小店兑换记录查询
|
2026-08-08 19:44:39 +08:00 |
|
yml2213
|
51e91b0483
|
增加和平小店商品分类展示
|
2026-08-08 18:29:31 +08:00 |
|
yml2213
|
06ad1498da
|
优化和平小店商品列表界面
|
2026-08-08 18:01:10 +08:00 |
|
yml2213
|
395096e229
|
查询扭蛋碎片+点券
|
2026-08-08 17:50:00 +08:00 |
|
yml2213
|
379a9d58d3
|
小店商品列表shujuok
|
2026-08-08 17:40:16 +08:00 |
|
yml2213
|
c052a589d1
|
完善电竞手册鉴权与诊断日志
|
2026-07-29 14:24:26 +08:00 |
|
yml2213
|
f64838f8db
|
优化一些功能
|
2026-07-29 14:02:56 +08:00 |
|
yml2213
|
7c2c5a61a6
|
重构: 账号管理抽离、强类型返回、消除反射、删除死字段
- 抽离账号管理为独立 AccountStore,Scheduler 只持有引用,
职责单一化(scheduler.go 减少 ~110 行)
- Wails 绑定方法返回结构体替代 map[string]any(新增 responses.go),
前端获得强类型,字段名保持兼容无需改前端
- ExchangeRecord 移至 types 包,消除 types↔client 循环依赖
- extractAPIStatus 用 apiResponder 接口替代 reflect 逐字段查找,
types.APIResponse 与 ExchangeListResponse 实现 APIStatus 方法
- 删除 types.Account.Password 死字段(鉴权仅用 Cookie)
- 重新生成 Wails 绑定,前端 vue-tsc 类型检查通过
|
2026-07-29 12:47:01 +08:00 |
|
yml2213
|
ed3fd5f09e
|
fix: peacematch 兑换用 multipart/form-data(与抓包一致)
根据实际兑换抓包修正:
- Content-Type 从 urlencoded 改回 multipart/form-data(浏览器实际用 multipart)
- postMultipart 支持组合 token csrf\x00ctn,自动拆分并合并 cvl_csrf_token+acf_ccn 到 Cookie
- 移除不再需要的 postForm 方法和 net/url 导入
- 验证:表单字段(manualID/commodityID/num/rid/ctn)与抓包完全一致,
storedetail 确认无 preExchange 字段(时间校准修复正确)
抓包来源:/Users/yml/Desktop/抓包/douyu/7.29/电竞手册-兑换并查询信息与积分.har
|
2026-07-29 11:08:49 +08:00 |
|
yml2213
|
599f9d71f0
|
fix: 电竞手册用 ctn(acf_ccn) 鉴权替代 csrfToken
peacematch 与 peace 的兑换接口鉴权机制完全不同:
- peace: 表单发 csrfToken 字段,multipart 格式
- peacematch: 表单发 ctn 字段(值=acf_ccn),urlencoded 格式,
cvl_csrf_token 只放 Cookie,不需要 batchExchangeLimit/preExchange
改动:
- Activity 加 UseCTN/CTNURL 字段
- GenerateCSRF 对 UseCTN 活动额外 FetchCTN 获取 acf_ccn,组合返回
- 新增 postForm(urlencoded) 方法用于 peacematch 兑换
- Exchange 按 UseCTN 分流:peacematch 发 ctn 字段,peace 发 csrfToken
- BatchExchangeLimit/PreExchange 对 UseCTN 活动跳过(返回默认值)
- 参考 /Users/yml/codes/douyu_login_py 中 Python 实现
|
2026-07-29 11:05:46 +08:00 |
|
yml2213
|
8e52e12005
|
fix: 时间校准接口全局复用旧 peace/storedetail,修正活动名称
- 从 Activity 结构体移除 TimeAPIURL 字段,时间校准与活动无关,
统一用 constants.DefaultTimeAPI(peace/storedetail 能稳定返回 currentTime)
- 旧活动 peace DisplayName 从"和平手册"修正为"精英手册"
- 更改项目默认端口避免冲突:Vite 5173→15173,Wails dev 34115→34215
|
2026-07-29 10:48:42 +08:00 |
|
yml2213
|
f4d33d19c0
|
增加电竞手册
|
2026-07-29 10:36:44 +08:00 |
|
yml2213
|
d1b8fa0e46
|
修复兑换响应JSON解析Bug并优化时间校准
- 修复Exchange/BatchExchangeLimit响应data为空字符串时JSON解析失败,导致"点击太快"等错误无法被冷却机制捕获
- 复校时间从触发前10秒改为3秒,减少偏移漂移
- 新增校准偏移中位数平滑,保留最近3次取中位数过滤跳变异常
- 提前量从固定50ms改为动态值 max(50ms, errorBound + RTT/2)
- 复校时重新计算触发时间,适应校准偏移变化
|
2026-06-28 15:15:40 +08:00 |
|
yml2213
|
76c942f10d
|
修复抢购流程多项问题
- executeRound 四次加锁合并为单次,减少锁竞争
- shouldFallbackStandard token 匹配从宽泛改为精确匹配 cvl_csrf_token
- retryCooldownDuration 新增操作频繁/请求过多/请求太频繁三种冷却匹配
- behaviorCooldown 从 8s 降为 5s
- BestServerTimeCalibration 部分失败时不再返回 error,仅全败才报错
- warmupSchedule 增加 gen 计数器+warmupRunMu 互斥锁,防止 resync 时新旧预热并发
- ScheduleRun 中 clearWarmups 移入锁内 stopSchedulesLocked 之后执行
|
2026-06-27 17:03:19 +08:00 |
|
yml2213
|
7cb62c0078
|
新增: 兑换复验功能
- 新增 exchangeList 接口查询斗鱼真实兑换记录
- 前端添加「兑换复验」标签页
- 点击「🔍 复验」按钮可查询所有账号的兑换记录
- 复验结果与软件内部状态对比,用于验证抢购结果
- 移除 frontend/dist 的 git 跟踪
|
2026-06-26 11:10:33 +08:00 |
|
yml2213
|
154e55d484
|
初步优化成全部go+wails
|
2026-06-24 19:11:02 +08:00 |
|