为了账号安全,请及时绑定邮箱和手机立即绑定

HTTPS 爬虫抓包调试 从 Charles 到 SniffMaster 的请求拦截方案

标签:
iOS

之前接过一个爬虫需求:抓取某个 Web 页面的数据,对方接口是 HTTPS,用 Python 的 requests 直接请求被拒。排查后发现是服务端做了 SSL 证书验证,默认的 requests 行为走不通。后来又陆续试了几种方案,发现 HTTPS 爬虫开发中最耗时间的往往不是写解析逻辑,而是搞清楚接口的请求参数和加密方式。

浏览器开发者工具

最简单的方式是用浏览器 DevTools 的 Network 面板看接口请求。打开开发者工具 → Network → XHR/Fetch,刷新页面,就能看到所有请求的 URL、请求头、参数和响应。大多数情况下,从这里拿到的信息就足够写爬虫了。

但有些场景下浏览器不够用:接口返回的数据经过前端二次加密、请求头里带了动态 token 或者签名参数、或者目标页面需要登录态的 Cookie。这些信息光靠浏览器看不够直观,需要结合抓包工具来分析。

Charles 做代理抓包

Charles 是爬虫开发者常用的工具。把电脑设置成代理服务器,浏览器的流量经过 Charles,可以看到完整的请求和响应数据。对于 HTTPS 接口,安装并信任 Charles 的 SSL 证书后,加密流量也能解密查看。Charles 的 Repeat 和 Advanced Repeat 功能可以重放请求,方便调试参数。

不过 Charles 在几个场景下会碰到限制:一是目标做了 SSL Pinning 时代理证书被拒绝,二是非 HTTP 协议(如 TCP Socket)的流量 Charles 看不到,三是在 Windows 上配置证书步骤稍微多一些。

Fiddler 的脚本扩展

Fiddler 是 Windows 上主流的抓包工具,和 Charles 类似但有几个差异点。Fiddler 内置了 FiddlerScript,可以用 C# 写脚本修改请求和响应、设置断点、自动重定向。对爬虫开发来说,写一段脚本自动替换响应内容、注入 Cookie 或者修改请求参数,比手动操作效率高。Fiddler 的弱点同样是不支持 SSL Pinning 场景。

SniffMaster 在爬虫场景下的作用

SniffMaster 在爬虫开发中主要用在几类场景。一是目标 App 或 PC 端做了 HTTPS 双向证书验证时,Charles 和 Fiddler 的代理模式会失效,SniffMaster 的暴力抓包模式通过 USB 直连设备走底层通道,不依赖代理证书,能正常抓取和解密 HTTPS 数据,适合分析带有证书验证的客户端请求。

二是抓取非 HTTP 协议的数据。有些爬虫需要分析 TCP 或 UDP 层面的数据交互(比如游戏通信协议、自定义二进制协议),SniffMaster 的数据流抓包模式可以捕获这些流量,并导出为 pcap 文件用 Wireshark 做进一步分析。

三是跨平台场景。Charles 和 Fiddler 主要跑在 Mac 和 Windows,SniffMaster 的代理抓包模式在这两个平台上都能用,而且证书安装有操作引导,首次配置少踩一些坑。

爬虫开发过程中的抓包调试,Charles 和 Fiddler 覆盖日常场景,遇到证书验证、非 HTTP 协议或跨平台需求时备一个 SniffMaster 就够了。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
0
获赞与收藏
4

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消