- 退避上限从 5 秒压到 1.5 秒(含抖动最长约 1.9 秒),连续失败放大倍数 8→4,抖动 50%→25%: 2026-10-03 实测库存只活了约 1.1 秒(PC2 四个实例 18:00:00.171~18:00:01.101 一直能锁到 同一个礼包),而 PC1 默认实例的 31 个号在 18:00:00.225 失败后一直睡到 18:01:09.379, 唯一有货的那段窗口被退避吃掉;超过 2 秒的等待都可能正好错过库存回流 - 首发请求不再随机等 150-700 毫秒,改为"第 0 个账号立即发出 + 其余按 8ms 步长错开", 整批铺开不超过 300 毫秒(账号再多也不会拖长)。定时器本来就提前约 100ms 触发以补偿 RTT, 再抖几百毫秒等于把这个提前量整个抵消,请求实际落到 t+150ms~t+650ms - 锁单成功到首次支付的等待从 2-4 秒压到 300-700 毫秒:这段纯属把关键路径上的时间白送出去, "订单操作进行中"现在按"已受理、结果未定"快重试,不需要靠等待规避 - 支付退避上限同步收紧:频控 3s→2s,其它 2s→1.2s(在途仍为 300ms→1s) - 新增 TestRetryDelayNeverBacksOffLong:遍历 75 秒 × 40 次连续失败,断言任何一次退避都 小于 2 秒,并覆盖"重试间隔策略被配到 5000ms"的极端配置 - 新增 TestFirstWaveStartsImmediately:单账号步长必须为 0、位次从 0 递增、 2/34/100/500/2000 个账号下步长 ≤8ms 且整批铺开 ≤300ms - 设置页文案同步:退避"任何一次等待都不超过约 2 秒"、首发错开说明
36 lines
1.3 KiB
Go
36 lines
1.3 KiB
Go
package constants
|
|
|
|
import "time"
|
|
|
|
// Version 应用版本号,与 wails.json version 同步。
|
|
const Version = "0.3.1"
|
|
|
|
// BuildTime 构建时间,由编译时 ldflags 注入。
|
|
var BuildTime = "unknown"
|
|
|
|
const (
|
|
BaseURL = "https://www.douyu.com"
|
|
UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"
|
|
DefaultAttempts = 2
|
|
DefaultConcurrency = 150
|
|
ProductCacheTTL = 30 * time.Second
|
|
|
|
DefaultAppDataDirName = "douyu-go"
|
|
DefaultConfigFile = "config.json"
|
|
DefaultAccountFile = "accounts.txt"
|
|
DefaultLogDir = "logs"
|
|
DefaultSuccessDir = "success_images"
|
|
|
|
// LegacyDefault* 是旧版本相对工作目录存储的位置,仅用于首次迁移。
|
|
LegacyDefaultConfigFile = "config.json"
|
|
LegacyDefaultAccountFile = "data/user.txt"
|
|
|
|
// DefaultTimeAPI 服务端时间校准接口。
|
|
// 斗鱼服务器时间与活动无关,统一用精英手册的 storedetail(能稳定返回
|
|
// data.preExchange.currentTime),所有活动共用。
|
|
DefaultTimeAPI = BaseURL + "/wgapi/ordnc/activity/peace/storedetail?manualID=G4KA4Qnz4LDp7&commodityID=20260120QYOOB_bag274&rid=9263298"
|
|
)
|
|
|
|
// CST 中国标准时间 UTC+8。
|
|
var CST = time.FixedZone("CST", 8*3600)
|