微信公众号内容如何获取,python教你抓包分析并保存数据

前言

今天来教大家如何使用Fiddler抓包工具,获取公众号(PC客户端)的数据。

Fiddler是位于客户端和服务器端的HTTP代理,是目前最常用的http抓包工具之一。

环境准备

  • python 3.8 运行代码
  • pycharm 2021.2 辅助敲代码
  • requests 第三方模块
  • Fiddler 汉化版 抓包的工具
  • 微信PC端

如何抓包

配置Fiddler环境

先打开Fiddler,选择工具,再选选项

请添加图片描述

在选项窗口里点击HTTPS,把勾选框都勾选上

请添加图片描述

在选项窗口里点击链接,把勾选框都勾选上,然后点击确定即可

请添加图片描述

我们还需要在客户端把网络代理开启
地址:127.0.0.1
端口:8888

请添加图片描述

抓包

先登录,然后清空Fiddler里的数据,在选到你想要的公众号内容

请添加图片描述

出现数据包后,点开,再选择Raw,里面的就是请求的具体信息

请添加图片描述

实现代码【源码 点击文末名片领取】

先访问到列表页,获取所有的详情页链接

请求头

headers = {
    'Host': 'mp.weixin.qq.com',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090016)',
    'X-Requested-With': 'XMLHttpRequest',
    'Accept': '*/*',
    'Cookie': '',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://m',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
}

发送请求

690643772 ### 源码领取
url = f'https://com/mp/profile_ext?action=getmsg&__biz=Mzg3Nzc2OTQzOA==&f=json&offset=10&count=10&is_ok=1&scene=&uin=MjQwODIxNTMyMw%3D%3D&key=3e8646dd303f109219f39517773e368d92e1975e6972ccf5d1479758d37ecec3e55bc3cb1bb5606d79ec76073ab58e4019ee720c31c2b36fafa9fe891e7afb1e22809e5db3cd8890ab35a570ffb680d16617ac3049d6627e61ffdf3305e4575666e30ad80a57b14555aa6c5a3a0fb0001a6d5d2cd76fd8af116a086ce9ef2c8e&pass_ticket=f85UL5Wi11%2BmqpsvuW%2BgLUECYkDoL2apJ045mJw9lzjmzvDbqI6V6Y%2FkXeYCZ7WsuMSqko7EWesSKLrDKnJ96A%3D%3D&wxtoken=&appmsg_token=1200_VUCOfHI2jYSEziPbaYFlHoaB7977BJYsAb5cvQ~~&x5=0&f=json'
response = requests.get(url=url, headers=headers, verify=False)

解析

general_msg = response.json()['general_msg_list']
general_msg_list = json.loads(general_msg)
for general in general_msg_list['list']:
    content_url = general['app_msg_ext_info']['content_url']
    print(content_url)

再访问所有详情页链接,获取需要的图片内容

发送请求

html_data = requests.get(url=content_url, headers=headers, verify=False).text

解析数据

img_list = re.findall('<img class=".*?data-src="(.*?)"', html_data)
print(img_list)

保存数据

for img in img_list:690643772 ### 源码领取
    img_data = requests.get(url=img, verify=False).content
    open(f'img/{index}.jpg', mode='wb').write(img_data)
    index += 1

最后

文章分享到这就结束了,大家可以自行练练手,有什么问题可以评论区留言,或者点击文末名片进行学习交流

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值