解密:基于Python采集爬取微信公众号历史数据
优采云 发布时间: 2020-12-27 10:12解密:基于Python采集爬取微信公众号历史数据
基于Python抓取微信公众号的历史数据采集
更新时间:2020年11月27日09:22:47作者:Tempo父亲
本文文章主要介绍了基于Python 采集的微信公众号历史数据的抓取。本文介绍的示例代码非常详细。它对每个人的学习或工作都有一定的参考学习价值。需要它的朋友可以参考
Kun Zhipeng的技术人员将在本文中介绍一种通过操作微信应用程序采集模拟官方帐户的所有历史数据的方法。
通过数据包捕获分析,我们发现微信公众号的历史数据是通过HTTP协议加载的。相应的API接口如下图所示,它具有四个关键参数(__biz,appmsg_token,pass_ticket和Cookie)。
为了能够获得这四个参数,我们需要模拟App的操作,让其生成这些参数,然后捕获数据包。对于模拟的App操作,我们介绍了通过Python模拟Android App的方法(请参阅详细信息)。对于HTTP集成捕获,我们之前已经引入了Mitmproxy(请参阅详细信息)。
我们需要模拟微信的操作以完成以下步骤:
1.启动微信应用程序
2.点击“联系人”
3.点击“官方帐户”
4.单击官方帐户以采集
5.单击右上角的用户图片图标
6.单击“所有消息”
这时,我们可以从响应数据以及请求标头中的Cookie值中捕获__biz,appmsg_token和pass_ticket的三个关键参数。如下所示。
使用上述四个参数,我们可以构造一个API请求以获取历史记录文章列表,并通过调用API接口直接获取数据(无需模拟App操作)。核心参数如下。通过更改offset参数,您可以获得所有历史数据。
# 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)
以“数字工厂”的微信公众号为例,采集过程操作的截图如下:
输出结果的屏幕截图如下:
以上是本文的全部内容,希望对大家的学习有所帮助,并希望您能更多地支持Scripthome。