@(微信公众号小技巧)[微信公众号|所有历史文章]

上一篇我们介绍了如何通过FiddlerChrome 得到知名大V所有历史文章的接口。那拿到接口之后该怎么办呢?你需要一个程序员,嗯!(ง •̀_•́)ง

郑重声明:
该方法获取微信公众号历史文章仅供参考,请勿恶意使用。另外说明一下,微信本身> 对于抓取数据的接口已经做了限制,如果频繁使用该接口进行数据抓取,微信会暂时> 禁止当前微信号获取所有公众号的历史文章。目测当前的禁止时间为5分钟。

接口简化

上一篇最后我们通过Chrome已经看到获取文章列表的URLhttps://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzI0MjA1Mjg2Ng==&f=json&frommsgid=1000000134XXXXX, URL 太长,后面的大串字符我以XXXXX代替。格式化之后如下图所示

为了简化接口,我们把没必要的参数删除,最后发现只有这几个参数是必须的

参数名 参数值 说明
action getmsg 这个URL的目的是干嘛的?获取message(消息)的
__biz MzI0MjA1Mjg2Ng== 这个参数与微信公众号一一对应,每个公众号都不一样
f json 获取数据的格式是JSON
frommsgid 1000000134 公众号文章的ID,该接口返回从该ID开始的10篇文章

公众号历史文章以时间顺序排列,离当前时间最近的文章排在最前面,因此我们可以得到以下规律第一篇文章的ID为1000000142,后续应该是1000000141,1000000140… …1000000133,总共10个ID。在获取文章列表后,以最后一篇文章的ID作为拼接下一个URL的frommsgid,其他参数不变。这样就可以循环获取所有的历史文章了。

自动化获取

我们知道了获取历史文章的规律后,接下来就是怎么通过程序来实现自动获取并输出内容。
URL https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzI0MjA1Mjg2Ng==&f=json&frommsgid=1000000134 是真实的可用的地址,在我的浏览器中执行的结果如下,其中参数已经通过红色框标注。

那你把这个URL拷贝到自己的浏览器中可用看到同样的结果吗?不出意外的话是不可以的。原因就是因为这个接口的正常使用是有条件的,那就是必须获得鉴权。那如何使得浏览器获得跟微信客户端同样的权利,然后再使用该接口呢?

这个就不用麻烦大家自己去测试接口了。经过测试发现在Fiddler最开始的响应中有两个Cookie的写入操作,如下图所示

我们将这两个Cookie写入浏览器,就可以通过以上简单的URL获取公众号历史文章了。另外如果想通过程序自动获取,那只需要在请求的时候带上这两个Cookie内容,并不断修改frommsgid就可以获取公众号所有的历史文章了。

最后再次说明一下,频繁请求会被禁止访问所有公众号的历史文章 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄.