如何采集微信公众号历史数据
发表时间:2020-11-12
发布人:葵宇科技
浏览次数:79
本文将介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法。
通过抓包分析发现,微信公众号的历史数据是通过HTTP协议加载的,对应的API接口如下图所示,其中有四个关键参数(__biz、appmsg_token、pass_ticket以及Cookie)。
为了能够拿到这四个参数,需要模拟操作App,让其产生这些参数,然后再抓包获取。
需要模拟操作微信完成如下步骤:
-
启动微信App
-
点击"通讯录"
-
点击"公众号"
-
点击要采集的公众号
-
点击右上角的用户图像图标
-
点击"全部消息"
此时,我们可以从https://mp.weixin.qq.com/mp/profile_ext?action=home的应答数据中捕获__biz、appmsg_token以及pass_ticket三个关键参数,以及请求头中的Cookie值。如下图所示。
有了上述四个参数,我们就可以构造出获取历史文章列表的API请求,通过调用API接口直接获取数据(不需要再模拟App操作)。核心参数如下所示,通过改变offset参数,可以拿到所有历史数据。
view plaincopy to clipboardprint?
Cookie headers = {‘Cookie’: 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN;
pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE;
wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO’}
url = ‘https://mp.weixin.qq.com/mp/profile_ext?’ data = {}
data[‘is_ok’] = ‘1’ data[‘count’] = ‘10’ data[‘wxtoken’] = ‘’
data[‘f’] = ‘json’ data[‘scene’] = ‘124’ data[‘uin’] = ‘777’
data[‘key’] = ‘777’ data[‘offset’] = ‘0’ data[‘action’] = ‘getmsg’
data[‘x5’] = ‘0’下面三个参数需要替换
https://mp.weixin.qq.com/mp/profile_ext?action=home应答数据里会暴漏这三个参数 data[’__biz’] = ‘MjM5MzQyOTM1OQ==’ data[‘appmsg_token’] =
‘993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~’ data[‘pass_ticket’] =
‘Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE’ url = url +
urllib.urlencode(data)
以"数字工厂"这个微信公众号为例,采集过程运行截图如下所示:
输出结果截图如下所示:
了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081//html/37be8794-b79e-4511-9d0a-81f082bac606.html
本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。