618 前夜,我盯着后台的订单曲线,它像一条濒死的鱼,偶尔抽搐一下。团队里两个小孩在钉钉上问我,老板,咱们的优惠券策略是不是要再调一下?我没回。我调不动了,不是策略问题,是心气儿没了。去年这时候,我还能通宵改爬虫,今年,光是应付渠道压货和团队内耗,就把我榨干了。
所谓的“全网最低价”机器人,其实是个缝合怪。核心是去年写的那个比价爬虫,用 Selenium 硬怼各家电商的页面,当时为了绕过反爬,折腾 DOM 树和动态加载差点把头薅秃。今年加了个企业微信的推送接口,定时跑,发现历史低价就自动发消息到群里。代码就两百来行,但写它的时候,我感觉自己像在给一艘漏水的破船打补丁。船是团队这摊业务,补丁是我仅剩的那点技术本能。
他们不懂。他们觉得老板就应该去喝酒、拉关系、画大饼。但我知道,2020 年这光景,关系说没就没。上个月一个谈好的渠道,因为对方公司现金流断裂,直接黄了。画的大饼,我自己都快咽不下去了。只有这个破机器人,它抓取、解析、比价、推送,逻辑冰冷清晰,从不多说一句废话。它给我的确定性,比任何一个拍着胸脯的合伙人都多。
我为什么非得自己写?因为焦虑。618 这种大促,价格波动每小时都在变,靠人工盯就是扯淡。更深的焦虑是,我发现自己离代码越来越远,离“不可控”越来越近。管人太他妈累了,每个人的情绪都是一个黑盒,需求文档写得再细,也防不住他突然给你来个“我觉得这样更好”。而代码,你喂给它什么,它就吐出什么,这种纯粹的因果关系,在2020年成了我的精神避难所。
技术细节上,这次踩的坑在频率控制。京东和天猫对高频访问掐得特别死,直接用多线程猛冲,几分钟 IP 就给你封了。我搞了个随机的延时队列,模拟人工操作间隔,还在请求头里轮换了一堆 UA。核心比价算法其实特简单,就是抓取当前价,遍历我本地数据库里过去 90 天的价格记录,算个最低价。如果当前价低于历史最低价的 95%,就触发通知。这里有个阈值,不能设成 100%,不然一些小的价格波动(比如优惠券叠加的偶然情况)会频繁报警,把人搞疯。这个 5% 的缓冲区间,是拿去年一整年的数据试出来的。
写着写着,我胃又开始拧着疼。这才想起晚上又没吃饭,灌了两杯冰美式顶着的。身体也在报警。去年体检一堆箭头,脂肪肝、心律不齐。当时没当回事,觉得赚到钱就能解决。现在钱没赚到多少,自由没了,身体也快垮了。我突然觉得,这个机器人或许还应该加个功能:不是监控商品价格,是监控我的身体数据。久坐超过一小时就报警,心率异常就报警。可能后者才是更底层的“最低价”预警——你在透支你的人生本金。
团队那个做运营的姑娘,还在追问我推送文案要不要更活泼一点,加个表情包。我说,不用,就纯文本,价格、商品名、历史最低价日期,三行。花里胡哨的东西,最后都是干扰项。在这个所有人都拼命制造噪音、想尽办法从你口袋里掏钱的夜晚,我只想要一点干净的、确定的信息。就像这个破机器人一样,它不说话,它只是告诉你一个事实。而这个事实,可能是我今晚,唯一能抓住的东西。
窗外的城市灯火通明,无数个直播间在嘶吼。我的屏幕亮着,爬虫安静地跑着,像深海里的探测器,发送着微弱但稳定的信号。我不确定我的团队明天会怎样,不确定下个月的流水。但至少,在算法跑完的这一秒,我知道哪个牌子的纸巾,在哪家店,是真的便宜了五毛钱。这是一种微不足道的、近乎可笑的掌控感。但在这失控的 2020 年,它是我能为自己构建的,最小的、最坚固的堡垒。














