基于Python采集爬取微信公众号历史数据


Posted in Python onNovember 27, 2020

鲲之鹏的技术人员将在本文介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法。

通过我们抓包分析发现,微信公众号的历史数据是通过HTTP协议加载的,对应的API接口如下图所示,其中有四个关键参数(__biz、appmsg_token、pass_ticket以及Cookie)。

基于Python采集爬取微信公众号历史数据

为了能够拿到这四个参数,我们需要模拟操作App,让其产生这些参数,然后我们再抓包获取。对于模拟App操作,前面我们曾介绍过通过Python模拟安卓App的方法(详见http://www.site-digger.com/html/articles/20180912/664.html)。对于HTTP集成抓包,前面我们曾介绍过Mitmproxy(详见http://www.site-digger.com/html/articles/20181109/682.html)。

我们需要模拟操作微信完成如下步骤:

1. 启动微信App

2. 点击"通讯录"

3. 点击"公众号"

4. 点击要采集的公众号

5. 点击右上角的用户图像图标

6. 点击"全部消息"

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

此时,我们可以从https://mp.weixin.qq.com/mp/profile_ext?action=home的应答数据中捕获__biz、appmsg_token以及pass_ticket三个关键参数,以及请求头中的Cookie值。如下图所示。

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

有了上述四个参数,我们就可以构造出获取历史文章列表的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)

以"数字工厂"这个微信公众号为例,采集过程运行截图如下所示:

基于Python采集爬取微信公众号历史数据

输出结果截图如下所示:

基于Python采集爬取微信公众号历史数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入解析Python中的集合类型操作符
Aug 19 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python切片工具pillow用法示例
Mar 30 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
Python中的__init__作用是什么
Jun 09 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python实现我的世界小游戏源代码
Mar 02 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 #Python
Python基于execjs运行js过程解析
Nov 27 #Python
celery在python爬虫中定时操作实例讲解
Nov 27 #Python
python输出国际象棋棋盘的实例分享
Nov 26 #Python
Django多个app urls配置代码实例
Nov 26 #Python
python Xpath语法的使用
Nov 26 #Python
python模拟点击玩游戏的实例讲解
Nov 26 #Python
You might like
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
js实现日历的简单算法
2017/01/24 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python常见数制转换实例分析
2015/05/09 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
c语言常见笔试题总结
2016/09/05 面试题
家长给孩子的表扬信
2014/01/17 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
警示教育活动总结
2014/05/05 职场文书
干部作风建设工作总结
2014/10/29 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书