Fiddler抓包 - 客户端抓包流程

在开发中我们经常会遇到一些抓包的需求,前端有时候可以通过控制台简单抓包,但是客户端用Log排查的话,效率太低,所以我们就需要用到 Fiddler 抓包

当年在写这篇 Fiddler 时使用的Android手机,整体篇幅也以 Android为主,客户端抓包相对通用一些,以下是一些小经验

  • 如根据以下设置完毕后,未生效?请在设置完后重启Fiddler,因为它并不是及时生效!
  • 非抓包场景,请记得关闭代理,否则手机无法连接网络

基础配置

下载工具

  1. 前往 下载Fiddler工具,如无法下载可根据提示填写作用范围和邮箱

这里写图片描述

获取本地IP

通过cmd命令行,ipconfig 获取我们当前的ip(作用:设置手机代理ip地址

这里写图片描述

设置端口号

获取Fiddler端口号 (作用:设置手机代理端口)

  1. 前往 Tools - Options... 配置页
  2. 获取端口号,选择对应选项
    这里写图片描述

手机绑定本地IP、Fiddler端口

  1. 找到自己的Wife (务必共处同一网络节点下),进入详情

这里写图片描述

  1. 进入代理设置

这里写图片描述

  1. 选择手动输入

这里写图片描述

  1. 设置ip(及电脑本地IP和Fiddler端口号

这里写图片描述


基础抓包

设置 Fiddler 过滤网站

这里写图片描述

抓包结果

通过结果来看,我们抓包成功了

  • 后台返回的失败请求信息,包含请求参数与错误提示

这里写图片描述

  • 成功返回

这里写图片描述

  • 获取抓包详情,如请求数据、返回数据

这里写图片描述


抓取https请求

首先需要配置同上方一样的环境,例如手机与pc处于同一局域网内~

安装证书

关于抓取https请求,主要借鉴于郭霖大神

  • 开启 https抓包功能
  • 下载并安装由Fiddler提供的手机证书
  • 兼容7.0

首先需要在Fiddler中开启https抓包功能,从Fiddler顶部工具栏依次点击View -> Preferences -> HTTPS

请添加图片描述
点击SAVE保存,这样你就可以抓到电脑上https请求的包了。

但是手机上https请求的包我们还是抓不到的,你可以试试再次在手机上访问必应,将会看到如下界面:

在这里插入图片描述

出现这种错误基本都是证书的原因导致的,在你的手机浏览器中访问如下地址:http://ipv4.fiddler:8866/,将会看到一个由Fiddler内置的网页:

在这里插入图片描述

点击FiddlerRoot certificate这个链接,下载并安装由Fiddler提供的手机证书

安装完成之后再次访问必应,你就会发现不会再报错了,而是可以正常显示出网页的内容:

在这里插入图片描述

然后观察Fiddler,可以看到,请求必应首页的网络包也被成功抓到了,而且这次不再是密文,而是解密后的数据:

请添加图片描述

兼容7.0安全升级

Android在7.0系统中进行了一项安全升级。从Android 7.0系统开始,只是在手机上安装了抓包工具的证书,仍然是无法对https请求进行抓包的,还必须要在应用程序的代码中加入一段网络安全配置才行。

这项升级使得每个应用程序都变得更加安全,因为对https抓包确实是一个比较危险的行为,所有加密传输的数据都以明文的形式展示出来了。当然,如果是为了调试程序而抓包,这算是一个正当理由,但是你也理应只能对自己的程序进行抓包调试而已。如果只要在手机上安装了证书就可以对所有App的https请求进行抓包,那么无疑大大降低了这些App的安全性。

因此,Android 7.0系统中才做了这项安全升级。默认情况下,我们无法对各个App的https请求进行抓包,如果你是想要对自己App的https请求抓包的话,那么可以这样做。

res/xml目录下创建一个network_security_config.xml文件,然后加入如下配置:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="user"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

接下来还需要在AndroidManifest.xml中配置android:networkSecurityConfig属性来让上述配置生效:

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

这样我们就可以对当前的应用程序发出的https网络请求进行抓包了。

重新运行一下程序,让我们再来试试吧,结果如下图所示:

请添加图片描述


定制场景

我们以前在业务上会遇到一些特殊场景,仅记录我在从业中抓包时所遇到的问题

动态模拟弱网环境

  • 设置规则 Rules - Costomize Rule (自定义规则)
    这里写图片描述
  • 搜索关键字 m_SimulateModem
    这里写图片描述
  • 修改响应时间,达到弱网的目的!记得保存~
    这里写图片描述
  • 使用自定义的规则,开始测试弱网环境下的问题
    这里写图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方那座山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值