获取公众号历史文章:从微信读书开始

获取公众号历史文章:从微信读书开始

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

文章介绍通过微信读书接口获取公众号历史文章的方法:将公众号的__biz经base64解码后拼接为bookId(加MP_WXS_前缀),再调用/web/mp/articles等接口获取文章列表与正文,并用/api/mp/cover兜底。作者开发了配套插件,并提醒存在风控限制,仅最新文章较稳定。

🔎

延伸解读

核心换算:从 __biz 到 bookId

文章指出,微信读书将每个公众号视为一个 bookId,其格式为 MP_WXS_ 前缀加上 __biz 的 base64 解码结果。例如 __biz=MzA5NTQ0NjU3Mw== 解码后得到 3095446573,拼接为 MP_WXS_3095446573。作者还实现了 bizToFakid() 函数,处理 URL 编码、URL-safe base64 转换、补全 padding,并用正则校验结果是否为 5 到 20 位数字,确保转换的健壮性。

接口调用与风控限制

获取文章列表主要依赖 /web/mp/articles 接口,参数为 bookId 和 offset,步长 50。但作者提醒,该接口存在风控,错误码 -2041 表示触发风控,-2042 表示未收录。实际测试中,只能稳定获取最新文章,历史文章获取很少甚至失败。可用 /api/mp/cover 接口作为单篇兜底,但需注意其返回结构嵌套,且 statusCode 大于等于 400 时可能包含错误码。

登录检查与公众号添加

调用 /web/shelf/bookIds 可检查微信读书登录状态,未登录时 errCode 为 -2010。登录后,可过滤出以 MP_WXS_ 开头的 bookId。若需添加公众号,可通过 POST /mp/shelf/addToShelf 接口,body 为 {"bookIds":["MP_WXS_…"]}。此外,文章还提到利用公众号后台的 searchbiz 接口按名称搜索公众号,返回的 fakeid 可直接转换为 bookId,作为不完全依赖微信读书的补充方案。

❓

Q&A

为什么现在很多浏览器插件无法转载其他公众号文章了?

因为微信官方已经关闭了相关接口,例如 wechat-article/wechat-article-exporter 所依赖的接口已失效,导致这些插件功能无法使用。

如何通过微信读书获取公众号的历史文章?

核心思路是将公众号的 __biz 经 base64 解码后拼接为 bookId(格式为 MP_WXS_ + 解码结果),然后调用 /web/mp/articles 接口,传入 bookId 和 offset 参数获取文章列表,再用 /api/mp/cover 接口兜底。

微信读书获取公众号文章时有哪些风控限制?

微信读书风控相对没那么严,但仍有风控问题,只有最新文章能稳定获取,通过 /web/mp/articles 接口测试来看只能获取很少部分文章,甚至获取不了。

公众号的 bookId 是怎么计算出来的?

bookId = 'MP_WXS_' + base64解码(__biz)。例如 __biz=MzA5NTQ0NjU3Mw== 解码为 '3095446573',则 bookId 为 MP_WXS_3095446573。

如何通过文章链接找到对应的公众号并关注?

通过文章链接解析得到公众号的 __biz,解码后拼接得到 bookId,从而获取公众号信息,这样可以在某篇文章处关注公众号。也可以通过 POST /mp/shelf/addToShelf 添加公众号到书架。

获取公众号文章时,/web/mp/articles 接口返回哪些关键字段?

该接口返回 reviews 数组,其中包含 reviewId、mpInfo.title、mpInfo.time 等关键字段,reviewId 可用于拆解得到公众号文章并解析链接。

🏷️

标签

➡️

继续阅读