# huya-go 虎牙活动积分兑换/抢购的 Go 复刻版。支持两种传输层,CLI 与 GUI 默认都走 `http`: - `http`(默认):走 `https://cdnws.api.huya.com/`,兼容原有命令。 - `wss`:实验实现。CLI 需要显式指定 `-transport wss`,GUI 在设置里切换;已按浏览器 HAR 改为 TAF `WebSocketCommand` 外层和 WSS 初始化流程,仍建议先用真实 Cookie 小流量验证。 ## 构建 CLI: ```bash go test ./... go build -o huya-go ./cmd/huya-go ``` GUI: ```bash cd frontend npm install npm run typecheck cd .. wails build -debug -nopackage ``` GUI 二进制输出到 `build/bin/huya-gui`。开发时可以使用 `wails dev` 启动 Wails + React + Ant Design 界面。 ## Cookie 推荐把账号 Cookie 放到本地文件,一行一个账号: ```text yyuid=...; udb_uid=...; guid=...; ... ``` 不要把 Cookie、token、JWT 提交到仓库或写进文档。 ## 常用命令 GUI 界面提供账号预览、奖品列表、积分查询、兑换记录、直接兑换、监控抢购、实时日志。 CLI 示例: 查询奖品列表: ```bash ./huya-go -cmd list -sid 2203 -cookie-file cookie.txt ``` 查询积分: ```bash ./huya-go -cmd score -sid 2203 -cookie-file cookie.txt ``` 直接兑换指定 PID: ```bash ./huya-go -cmd exchange -sid 2203 -pid 12889 -cookie-file cookie.txt -transport http ``` 按奖品名轮询并抢购: ```bash ./huya-go -cmd monitor -sid 2203 -name 小黄鸭 -cookie-file cookie.txt -transport http -loops 20 -delay 120 -concurrency 5 ``` 定时开始: ```bash ./huya-go -cmd monitor -sid 2203 -pid 12889 -cookie-file cookie.txt -transport http -at "2026-07-06 20:00:00" ``` ## 日志 GUI 日志同时输出到界面和磁盘: - 路径:`<系统用户配置目录>/huya-go/logs/huya-go.log`(macOS 为 `~/Library/Application Support/huya-go/logs/huya-go.log`,Windows 为 `%AppData%\huya-go\logs\huya-go.log`)。 - 单文件上限 5MB,超出后滚动为 `huya-go.log.1` ~ `huya-go.log.5`,最旧的被丢弃。 - 界面「日志」页签顶部显示当前路径,可一键打开日志目录或复制路径。 ## 参数说明 - `-cmd`:`list`、`score`、`records`、`exchange`、`monitor`。 - `-sid`:活动 SID,必填。 - `-pid`:奖品 PID。`exchange` 必填,`monitor` 可用 `-pid` 或 `-name`。 - `-max-price`:目标奖品最高积分,`0` 表示不限制(CLI 与 GUI 设置都支持)。 - `-min-left`:目标奖品最少剩余库存,`0` 表示不限制(CLI 与 GUI 设置都支持)。 - `-cookie`:单账号 Cookie。 - `-cookie-file`:多账号 Cookie 文件。 - `-transport`:`http` 或 `wss`,默认 `http`;WSS 仍为实验通道。 - `-wss-host`:WebSocket host。默认留空,自动调用 `launch.queryHttpDns` 解析(带 TTL 缓存、多 host 轮询),解析失败时回退内置默认 host;需要固定时可显式指定。 - `-timeout`:单次调用超时秒数。 - `-loops`、`-delay`、`-concurrency`:轮询次数、轮询间隔、并发账号数。 - `-stop-after-success`:`monitor` 中任一账号成功后是否停止。 - `-v`:输出调试日志。 ## 已确认的小黄鸭参数 2026-07-06 浏览器手动抢购抓包确认: - `sid=2203` - `pid=12889` - 奖品名:`套装-潮萌小黄鸭` - 消耗积分:`988` 远端配置里的子奖品代码不能直接当兑换 PID,实际兑换以 `scoreExchangePrize` 请求里的 `pid` 为准。 ## 精英宝典/幸运币(2026-10-13 抓包) `m-shop.huya.com` 积分中心的兑换记录里确认到: - `sid=2277` - `pid=13409` - 奖品名:`幸运币礼包(小)` - 消耗积分:`20` - 订单号格式:`sOrderId_2277_13409__<时间戳>_<随机>` 该活动的列表/积分/兑换接口与 `sid=2203` 走同一套 `webActUI`,可直接用 `-cmd list -sid 2277` 验证;同一次抓包里「开通精英宝典 / 购买精英币」属于商城付费链路(`shopMiddleUI.*` + 支付宝),本项目未实现,详见 `WSS_NOTES.md`。