Fiddler抓包 - 客户端抓包流程

本文详细介绍如何使用Fiddler工具进行抓包操作,包括基础配置、抓取HTTPS请求及安装证书等内容,并提供了定制场景的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中我们经常会遇到一些抓包的需求,前端有时候可以通过控制台简单抓包,但是客户端用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
    这里写图片描述
  • 修改响应时间,达到弱网的目的!记得保存~
    这里写图片描述
  • 使用自定义的规则,开始测试弱网环境下的问题
    这里写图片描述
<think>好的,我现在需要帮助用户解决如何在Android 7.0及以上版本中使用Fiddler取HTTPS流量的问题。首先,我需要回顾用户提供的引用内容,确保信息准确。 用户提到了三篇引用,其中引用[1]和[2]讨论了Android 7.0以上抓包的挑战,引用[3]介绍了Fiddler的基本功能。根据这些信息,我应该整理出一个步骤指南。 首先,需要明确Android 7.0及以上版本的安全机制变化,导致系统不再信任用户安装的证书,除非将其放入系统证书目录。因此,配置Fiddler的关键步骤括安装Fiddler证书、将证书转换为系统证书、以及正确配置设备和Fiddler的设置。 接下来,我需要按照逻辑顺序组织步骤:安装Fiddler证书、导出并转换证书格式、将证书推送到系统目录、配置设备代理和安装证书、最后验证抓包是否成功。同时,需要注意每个步骤中的潜在问题,比如证书转换的正确命令、ADB的权限问题等。 还需要考虑用户可能的疑问,例如如何处理不同的Android版本,或者遇到无法安装系统证书的情况。此外,确保用户理解需要root权限,这在某些设备上可能不可行,可能需要替代方法,但根据引用内容,用户提供的资料中没有提到,可能需要说明这一点。 最后,生成相关问题时要涵盖常见疑问,比如如何信任证书、没有root怎么办、抓包失败排查等。确保问题与主题相关,帮助用户进一步探索。</think>### FiddlerAndroid 7.0+ HTTPS流量配置教程 #### 一、前置条件 1. 安装Fiddler Classic(需启用HTTPS解密功能) 2. Android设备与电脑处于同一局域网 3. 电脑已配置ADB调试工具 #### 二、核心配置步骤 1. **Fiddler证书安装与导出** - 打开Fiddler → `Tools` → `Options` → `HTTPS` - 勾选`Decrypt HTTPS traffic` → 点击`Actions` → `Export Root Certificate to Desktop`[^3] 2. **证书格式转换(PEM→DER)** ```bash openssl x509 -inform PEM -in FiddlerRoot.cer -outform DER -out FiddlerRoot.der ``` 转换后的证书文件名必须含哈希值: ```bash openssl x509 -inform DER -subject_hash_old -in FiddlerRoot.der ``` 将输出哈希值作为文件名前缀,例如:`abcdef01.0` 3. **推送证书到系统目录** ```bash adb push FiddlerRoot.der /system/etc/security/cacerts/abcdef01.0 ``` **注意**:需要root权限修改/system分区挂载为可写: ```bash adb shell mount -o remount,rw /system ``` 4. **Android设备配置** - 设置代理:`设置` → `WLAN` → 长按当前网络 → 手动代理(IP为电脑内网IP,端口8888) - 证书验证:安装Fiddler根证书至系统信任库[^1] 5. **Fiddler验证设置** ```python # 验证规则示例(Tools → Fiddler Options → HTTPS) if "TLS 1.2" in handshake.version: allow_decrypt = True else: drop_connection() ``` #### 三、高级配置参数 $$ \begin{cases} \text{Android 9+需额外配置:} \\ \quad \texttt{network_security_config.xml} \text{添加} \\ \quad <trust-anchors> \\ \qquad <certificates src="@raw/fiddler"/> \\ \quad </trust-anchors> \end{cases} $$ #### 四、常见问题解决 | 现象 | 解决方案 | |------|----------| | 证书不受信任 | 检查证书哈希命名是否合规[^2] | | HTTPS解密失败 | 更新Fiddler至v5.0+版本 | | 无法连接代理 | 关闭防火墙/确认端口8888开放 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

远方那座山

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

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

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

打赏作者

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

抵扣说明:

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

余额充值