起因:一次 300 块的保价失败
去年双十一前我在某平台买了台 27 寸 2K 显示器,2899 下单。第二天早上刷到同一个链接,页面价变成了 2599。我去找客服保价,客服说价保时效 7 天已经过了——其实没过,是我买的那家店把价保规则改成了「下单后 24 小时内」这种小字条款。300 块,就因为没盯住。
后来我就开始折腾 Deal 爆破手这类工具。先说结论,省得你抱太大期望:它不是神器,它是个筛子。它能做的事是把 2000 个 SKU 里那 3 个真降价的捞出来,剩下 1997 个是噪音。如果你指望装上它就天天捡漏,那大概率会失望。
这类工具到底在干什么:拆成三层看
市面上不管叫 Deal 爆破手、好价监控还是降价提醒,内核都是三层结构:采集层负责定时拉页面或调接口;判断层比对历史价格决定要不要推;推送层发到 TG、钉钉或者 Bark。
90% 的人卡在第二层。什么叫「降价」?是页面原价降了,还是到手价降了?是券后价降了,还是叠加了平台的满减之后才降?我一开始把阈值设成 5%,一天推 47 条,全是「原价 899 现价 879」这种,看两天就懒得点了。后来把阈值调到 12%,并且只比对「加入购物车后的实付价」,推送量直接掉到每天 5-6 条,可用性完全不一样。
这里有个我踩过的坑:历史价格的存储别用 JSON 文件追加,跑一个月文件能到 40 多 MB,每次读写都变慢。换成 SQLite,建一张 price_history 表,sku_id 加时间戳建联合索引,查一周最低价大概 12 毫秒,够用了。
三种部署方式的实测数据
本地 Docker:这是我最后留下的方案。命令大概长这样:docker run -d --name deal -v ./data:/app/data -e TG_TOKEN=你的token dealhunter:latest。镜像 380MB 左右,空跑内存占用 76MB,抓 200 个 SKU 的时候峰值能到 210MB。我挂在树莓派 4B 上,但提醒一句,SD 卡这么写下去撑不过半年,我换成了 128G 的 USB SSD,整机功耗从 3.2W 涨到 4.8W,一个月电费不到一块钱,可忽略。
云函数(腾讯云 SCF 或阿里云 FC):免费额度确实够用,但冷启动有 800ms 到 2 秒的延迟,抓取超时默认才 3 秒,页面稍微复杂点就被掐断。适合轻量接口型监控,不适合要渲染 JS 的页面。
NAS 上跑:群晖的 Docker 套件直接拉镜像就行,最省事,适合家里已经有 NAS 的人。缺点是 NAS 一般 7x24 开着,你不会有「专门为这事多花电费」的心理负担——但也容易忘了它还在跑,我有次三个月没看,Cookie 早失效了,白跑。
反爬和频率:别贪快
请求间隔我建议 30 秒起步。我一度压到 8 秒,第二周开始返回 403,换 IP 也没用,因为对方封的是 UA 加行为特征。后来发现一个反直觉的点:UA 别乱改,改得太花哨反而显眼,老老实实用手机端 UA 通过率更高。
代理这件事我最后放弃了。商业 IP 池按量计费,1 万次请求大概 20 到 30 块,我一个月要跑 8 万次,成本比省下来的钱还高。改成把 SKU 分成两个时间窗错峰跑,凌晨 2 点到 6 点跑一半,白天跑另一半,问题解决。
推送通道横向对比
TG Bot:免费,但群组消息有频率限制,大约每分钟 20 条,超了会被静默丢弃。
Server 酱:免费版一天 5 条,基本没法用,除非你只盯一个商品。
Bark:iOS 端免费、无条数上限,但节假日推送延迟能到 3 到 5 分钟,抢券场景别指望它。
钉钉机器人:每分钟 20 条,企业用户够用。
我最后是 TG 加 Bark 双通道,TG 用来翻历史记录,Bark 用来做即时提醒,一个不漏一个不丢。
跟现成方案比,自建到底值不值
TG 上的好价频道:0 成本,但信息滞后,同一条 deal 会被转 5 遍,而且你不知道它是真降价还是先涨后降。
Keepa:数据最全,亚马逊的历史价格曲线能拉到 2011 年,专业度没得说。订阅大概 19 欧一个月,折算人民币一百五左右,但它只覆盖亚马逊,我要盯的国行商品它管不着。
慢慢买:免费,覆盖京东天猫,但更新频率和推送及时性一般,热门商品还行,冷门的经常几天不更新。
自建的隐藏成本是维护时间。我算了一下,一个月大概要花 6 到 8 小时处理 Cookie 失效、页面改版、推送失败。按我的时薪算,其实不如直接买 Keepa。但我不后悔,因为我要监控的那几个品类,Keepa 根本不覆盖。
30 天的真实战果
217 个 SKU,触发推送 189 条,我实际下单 4 次。省下来的钱:显示器 300,硬盘 120,奶粉 85,一箱挂耳咖啡 60,合计 565。扣掉一台二手迷你主机 320 和电费,第一年是亏的。
但有个意外收获:因为天天看价格曲线,我大概摸清了几个品类的促销节奏,知道什么时候是真低点、什么时候是假动作。这个认知比那 565 块值钱。
几句实话
别一上来就搞全自动下单。先把采集跑通,看一周数据,你才知道哪些是噪音、阈值该设多少。我见过太多人第一天就配好了自动抢购,结果因为价格判断逻辑写错,用原价买了一堆东西。
还有个安全问题必须说:别把 Cookie 和 Token 传到公共仓库。我搜的时候见过真实的例子,有人把 tg_token 明文提交到 GitHub,被人拿去发广告,账号直接废了。配置文件记得加进 .gitignore,或者干脆用环境变量。