引言
总结了几种微信公众号历史文章采集的方案,供大家参考一下。众所周知新版本的微信客户端已经无法抓取历史消息页的包了,无论是直接抓包还是通过Proxifier或其他中间人代理的方式都只能抓到封面图片,没有页面文章数据。不过,经过大量尝试发现还是有部分方法可以支持我们继续采集公号历史消息页的方法,本文将汇总常见的微信公众号历史消息页采集技术,并对每种方案的采集规则、优势与劣势进行详细解读。
方案一:历史消息页API接口
历史消息页:https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MjA4MjA4MA==&scene=124#wechat_redirect
通过在微信客户端访问上述地址,可以访问到该页面。可以观察到与上面抓不到包的页面是不一样的,这个页面是老版本微信历史消息页的入口,目前还可以正常访问,通过翻页参数就可以持续获取历史数据了。
数据获取接口:
GET https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MjM5MjA4MjA4MA==&f=json&offset=10&count=10&is_ok=1&scene=124&uin=MTk4MzAxNjUzMg%3D%3D&key=d720dc6f5ede84cc5b88faf7bffa78bec261b038b2ad99dd40b006158a8797c520723b625b8fdf656295c4c7822a141197d6f9669bdd1eb7b87feaa76826169e750e45c29a4dabd97e121b19d257a1330c1e2e9c6b7f17aff069834d2599950ca3d612397b579288d4e51300d11e6ea6187f00770440458b0c0559e2d922f46e&pass_ticket=zmNP7pmochcTbBts1%2B%2FBp71fFRX%2BPHLz7Uh2W1XVTCf9FAYpJcelY7J6Mu%2FgYlo6CQzOLYFHKRs7c9VI7puXOA%3D%3D&wxtoken=&appmsg_token=1264_n4OTjva7scPeb%252FCww_2FQetBZGd2sTjbKKEGDQ~~&x5=0&f=json HTTP/1.1
关键参数解析:
参数 | 说明 |
biz | 公号id |
offset | 翻页参数 |
uin | 微信号id |
key | 采集关键参数 |
除了key之外的参数都可以通过其他方式获取,key参数的生成必须要通过微信客户端访问历史消息页才可以生成,所以最常规的做法就是通过自动化点击目标公号的历史消息页地址,通过抓包获取到key后再进行采集。
缺陷:这个缺点就很明显了,首先每个公号都需要点击一次对应的页面(因为每个公号点击产生的key是不通用的),整个自动化流程会非常繁琐,而且自动化点击作为必须动作整体的执行效率还有稳定性都不高,个人少量采集可以采用这种方案。
方案二:万能key
原理和上述方案一致,也是通过访问历史消息页的数据接口进行数据获取。不同之处在于万能key是通用的,可以跨公号进行数据采集,这样就不需要每次执行采集任务前进行自动化点击了,可以通过批量获取万能key,进行key池建设。爬虫采集时直接从key池获取资源即可。
另外万能key的通用性,也可以满足阅读数、点赞数、评论数、在看数等数据获取,同时像公号主体备案信息,临时连接转永久,评论数据采集等功能都离不开它。
缺陷:反扒比较严重,最近测试情况,用万能key采集历史消息页的次数比之前更少了,而且解禁时间不确定,经常超过24小时才解封。可能官方对这个bug级的入口开始做限制了。
方案三:针对新版微信接口
新版微信采用的是自己的协议进行数据传输,所以通过常规的抓包方式无法抓到包。解决方法需要逆向微信客户端,通过RPC的方式调用新版的微信协议。通过这个方式采集到的数据就和新版微信页面看到的数据一致了,除了文章列表外也有公号的基本信息。
此方案的稳定性最好,而且新版本的接口数据获取更加全面反扒也不严重,唯一的缺陷就是和新版公号页面规则一样,不关注公号的情况下只能看首页内容,关注后才可以进行翻页获取。
缺陷:需要关注公号才能翻页采集。
三种方案都各有优劣势,可以根据业务情况自行进行方案选择。另外微信采集还涉及到大量的账号维护成本、注册,养号以及采集过程中的资源调度,频繁采集或养号不当都会造成账号封禁,且行且珍惜吧老铁们。
v:weifengsvip 提供微信各类数据API,历史文章采集、阅读数、评论采集、搜一搜。方案源码可售。