我在做一个小程序,卖点之一是公众号文章合订阅读——自己挑作者,文章每天合成一叠。动手第一天就撞墙:**微信公众号没有官方 RSS,也没有对外的公开 API。**市面上一切「订阅公众号」的产品,走的全是野路子。
野路子只有两种物理形态:
- 拉(轮询):你定时去问「有新文吗」。快慢取决于你多久问一次,以及窗口对不对得上。
- 推(webhook):别人替你盯着,有新文主动通知你。快慢只取决于他的检测延迟,一般是分钟级。
这是结构差异,不是参数差异。接下来七条路的实测,反复验证的就是这一句话。
(文中未开源的商业服务一律用代号:JZL、QY、JM。开源的直接实名。)
一、RSSHub:开源神器,但公众号路由它自己也要绕路
RSSHub 是把万物转成 RSS 的开源神器,我们一直在用它抓微博。但翻源码核验后发现:它的公众号路由依赖第三方服务——它也在绕路,只是把绕路这步外包了。结论:开源 ≠ 能抓公众号,这条路我们没走。
二、wewe-rss:免费的先跑通流程
开源项目,走微信读书侧。部署免费,Docker 一把起。我们 9 月就部署了,它最重要的作用是给后面所有付费方案当了对照基线——你现在知道的「谁快谁慢谁漏了文」,全靠有个免费的在旁边陪跑。现在它处于备用状态。
三、wechat2rss:便宜、全文、漏得少,但慢
闭源付费软件,15 元/月,和 wewe-rss 同走微信读书侧。五个号实测 15 天:发文到入库中位 9~21 小时;风控间歇性拒绝(36 小时里告警 10 次,能自动退避自愈);但漏文最少,正文全文自带。
一句话:便宜、全文、漏得少,就是撑不起「快讯」两个字。
四、JZL:选中间商,看头部玩家的生产账本
按次计费的公众号数据 API:列表 0.14 元/次、正文 0.04 元/篇。怎么发现的这段最值钱——9 月底我读了卡兹克开源的 AIHOT 项目(github.com/KKKKhazix/AIHOT)源码,发现它的公众号信源走的就是这家。开源项目的依赖清单是免费尽调:头部玩家真金白银在生产环境用的东西,比自己一个个试错便宜多了。
实测(每日拉一轮):稳,零失败。但两个硬伤:
- 速度取决于你多久问一次——白天发的文,要等到深夜那一轮才进库(中位 0.8~13 小时);
- 结构性漏文:列表窗口只认「昨日 0 点到今晨 2 点」的发文,窗口外发的文永久错过。15 天双通道对照,漏了 8~9 篇。
想快也行:半小时拉一轮,30 个号 6048 元/月。按次付费买得到稳,买不到快。
五、平台后台接口自建:试错 24 小时的死路,但数据是真的
用公众号平台侧的内容接口,拿自己小号的凭证直接查别人的文章列表。听上去离数据源最近,实际死得最快:
- 第一发成功,拿到目标号标识,信心满满;
- 几分钟内 4 发 3 拒(错误码 200013),继续硬试,会话直接作废(200003);
- 等 24 小时再探,还是全拒——不是滚动窗口放人,是账号被打上长尾标记,降到每天一次也不放行;
- 换网络环境对照:同样被限。限流记账号不记 IP,换出口没用。
同一天我还确认了:专业玩家用这批接口的终局形态是代理池+账号池+托管收费。个人开发者打不起这场军备赛,撤。但「4 发 3 拒、24 小时不放行、记账号不记 IP」这三条实测,比方案本身值钱——撤回只花了 24 小时,没赌运气。
六、QY:唯一一条「推」,快得降维打击
订阅推送服务:服务端替你盯公众号,新文 webhook 推到我接口。9 篇真实推送实测:发文到推送 1~3 分钟,中位 2 分钟——比最快的拉通道还早 15 个小时。
硬伤也直说:推送没有正文字段(只有标题+链接+时间);只收群发文章,非群发会漏。免费档 5 个号正在试用,付费 50 个号 69 元/月。
工程上有个细节值得抄:上游「失败不重试,一次定终局」,所以接收端必须先把原始推送原样落盘、再解析入库——本地留全量原始包,是唯一能事后补救的底牌。
七、chatlog 自建电脑微信接收器:最土,也最难杀死
在一台不关机的电脑上挂微信小号,开源工具 chatlog 读本地消息库转 RSS。软件全免费,成本≈电费,理论分钟级,全文自带。代价是要养一台常开电脑+一个小号+偶尔扫码续命。
我先收着当逃生门:哪天中间商全断供或涨价到离谱,它就是最后的路。
结果矩阵
| 路线 | 形态 | 发文→入库实测 | 30 个号月成本 | 漏文 | 正文 | 现状 |
|---|---|---|---|---|---|---|
| RSSHub 公众号路由 | 拉 | 未走 | — | — | — | 弃用 |
| wewe-rss(开源) | 拉 | — | 0 | — | 全文 | 备用基线 |
| wechat2rss | 拉 | 中位 9~21h | 15 元 | 最少 | 全文 | 后备 |
| JZL | 拉 | 0.8~13h | 126 元起;半小时轮 6048 元 | 结构性漏 | 另购 0.04/篇 | 对账+买正文 |
| 平台后台自建 | 拉 | 未投产 | —(风控死) | — | — | 已撤回 |
| QY | 推 | 1~3 分钟 | 69 元 | 只收群发 | 无 | 主通道候选 |
| chatlog 接收器 | 拉 | 理论分钟级 | ≈电费 | 未知 | 全文 | 逃生门储备 |
五条方法论
- 先分形态再谈优劣:推和拉是结构差异,拉想追上推,要么把轮询密度堆到不可承受,要么认命。
- 单通道永远不知道自己漏了多少。同一批号双通道对跑,才量出「结构性漏文 8~9 篇/15 天」这个数。要测通道质量,先上对照。
- 选中间商别看广告,看头部玩家的生产账本。开源项目的依赖清单是免费尽调。
- 离平台越近,死得越快;但死的过程有数据价值。三条风控实测让撤回只花 24 小时。
- 便宜+快的现实解是组合而非单选。
我现在的答案
耳朵和眼睛分开雇:QY 当耳朵(分钟级发现新文)+ JZL 当对账员(每晚一轮查漏补缺,顺带按需买正文)+ wechat2rss 观察到 12 月再说。全套 30 个号约 195 元/月。
QY 免费档 11 月 10 号到期。到时候我会带着七天完整数据,决定要不要付这个产品第一笔定期开销——69 元。到时候再写一篇。