Python模拟微信App操作抓取公众号历史文章数据

江屿
江屿
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍利用Python模拟安卓微信App操作,通过抓包获取__biz、appmsg_token等关键参数,进而构造HTTP请求直接调用API接口,实现指定公众号历史文章数据的批量采集。

微信公众号历史数据采集方案概述

本文由鲲之鹏技术人员撰写,旨在分享一种通过模拟微信App操作来采集指定公众号全部历史数据的技术方案。

API接口分析与关键参数识别

经抓包分析确认,微信公众号的历史数据加载依赖于HTTP协议,其对应的API接口如所示。该接口包含四个关键参数:__biz、appmsg_token、pass_ticket以及Cookie。

模拟App操作与抓包技术基础

获取上述四个参数需通过模拟App操作生成,随后进行抓包捕获。此前我们曾介绍过利用Python模拟安卓App的方法(详见http://www.site-digger.com/html/articles/20180912/664.html),以及使用Mitmproxy进行HTTP集成抓包的技术(详见http://www.site-digger.com/html/articles/20181109/682.html)。

模拟微信操作步骤详解

模拟操作微信需执行以下步骤:

1. 启动微信App

2. 点击"通讯录"

3. 点击"公众号"

4. 点击目标采集公众号

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

6. 点击"全部消息"

关键参数获取与API请求构造

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

获得上述四个参数后,即可构造获取历史文章列表的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 相关产品和应用

全部下载

专题列表