Fiddler 配置与使用:从入门到移动端实战

开发iOS/Android App时接口返回500但摸不清参数错误?做竞品分析想理清完整API调用链路?测试限时优惠或支付逻辑想把原价改成1分钱模拟?Fiddler绝对是你的首选工具——Windows端最成熟、对移动端支持最好的HTTP/HTTPS抓包+调试神器。


1. 核心工作原理

Fiddler本质上是一个本地/远程Web透明代理服务器。启动后会默认将系统全局代理设为127.0.0.1:8888,所有HTTP/HTTPS流量都会经过它的四层中转:

  1. 客户端:放弃直连服务器,将请求先丢给Fiddler
  2. Fiddler(记录/修改请求):接收请求后存储,支持编辑后转发
  3. 服务器:处理Fiddler转发的请求,返回响应
  4. Fiddler(记录/修改响应):接收响应后再次存储,支持编辑后返回给客户端

2. Fiddler 基础配置

2.1 HTTPS 解密配置(必做!)

HTTPS的核心作用就是防止第三方窃听/篡改,所以不配置证书的话,只能看到灰色的加密握手隧道,完全看不到明文。

操作步骤:

  1. 打开顶部菜单:Tools > Options > HTTPS
  2. 依次勾选3个关键选项:
    • Capture HTTPS CONNECTs:先抓取建立加密连接的隧道请求
    • Decrypt HTTPS traffic:对隧道内的加密内容进行透明解密
    • Ignore server certificate errors (unsafe):开发调试时忽略自签名/过期的服务器证书警告
  3. 首次勾选Decrypt HTTPS traffic会连续弹出2-3个信任提示框,全部点击Yes/确定,否则无法完成后续电脑或手机的流量解密

2.2 远程抓包连接配置

要抓手机流量,必须允许外部设备(手机)通过WiFi连接到电脑上的Fiddler:

操作步骤:

  1. 切换到 Tools > Options > Connections
  2. 确认Fiddler listens on port8888(可自定义,后续手机和代码配置要保持一致)
  3. 务必勾选Allow remote computers to connect
  4. 点击右下角OK必须重启Fiddler才能让规则生效

3. 移动端抓包实战指南

这是Fiddler最常用、价值最高的场景,分3步零踩坑完成。

3.1 前置检查

先确认两个基础条件:

  1. 电脑和手机必须连接到同一个WiFi(不能一个有线一个无线,也不能跨路由器频段)
  2. 电脑上的Fiddler已重启并完成前两节的配置

3.2 手机端手动代理设置

  1. 查电脑IP:Windows按Win+R输入cmd,再敲ipconfig,找到「无线局域网适配器 WLAN」下的IPv4 地址(比如192.168.31.123
  2. 修改手机WiFi
    • 长按当前连接的WiFi名称 → 点击「修改网络」(部分Android手机需先展开「高级选项」)
    • 将「代理」从「自动」改为「手动」
    • 填入代理服务器主机名=刚才查的电脑IPv4,代理端口=8888
    • 点击「保存」/「确定」

3.3 手机端证书安装(最容易漏关键步骤!)

不装证书或不开启信任的话,所有HTTPS流量还是灰色的Tunnel to xxx.xxx.xxx

Android端安装

  1. 打开手机自带浏览器(不要用Chrome最新版,会拦截自签名证书的下载入口),访问http://[电脑IP]:8888
  2. 点击页面底部的蓝色链接FiddlerRoot certificate下载证书
  3. 打开手机「设置」→ 搜索「安装证书」→ 选择「CA 证书」(部分旧系统叫「受信任的凭据」→「从存储设备安装」)
  4. 选择刚才下载的FiddlerRoot.cer证书,输入锁屏密码验证,安装完成后部分机型需重启生效

iOS端安装(必做最后一步!)

iOS的证书安装比Android多一步“手动开启根证书信任”,否则无效:

  1. 打开Safari浏览器,访问http://[电脑IP]:8888
  2. 点击FiddlerRoot certificate,会提示下载「配置描述文件」,点击「允许」
  3. 打开「设置」→ 顶部会显示红色/蓝色的「已下载描述文件」→ 点击进入安装,输入锁屏密码,连续点击「安装」→「完成」
  4. 关键第二步!! 打开「设置」→「通用」→「关于本机」→ 拉到最底部「证书信任设置」→ 找到「DO_NOT_TRUST_FiddlerRoot」,打开右侧的绿色开关

4. FiddlerScript 自定义规则

这是Fiddler的进阶核心玩法!可以通过写简单的JavaScript兼容代码,在请求发送前响应返回前动态修改数据,实现Mock接口、自动改价格、添加测试Header、重定向请求等功能。

操作入口

打开顶部菜单:Tools > Fiddler Script,默认会打开内置的CustomRules.js编辑器,找到两个核心函数即可插入代码:

  • OnBeforeRequest(oS: Session):修改发送给服务器前的请求
  • OnBeforeResponse(oS: Session):修改返回给客户端前的响应

常用示例代码

static function OnBeforeRequest(oS: Session) {
    // 示例1:重定向测试环境接口到本地开发环境(本地开发常用)
    if (oS.HostnameIs("api.test.com") && oS.uriContains("/v1/order")) {
        oS.hostname = "localhost";
        oS.port = 3000;
    }
    // 示例2:自动给登录接口添加测试Header
    if (oS.uriContains("/user/login")) {
        oS.oRequest["X-Test-Env"] = "sandbox";
        oS.oRequest["User-Agent"] = "Test-Crawler-Bot-2026";
    }
}

static function OnBeforeResponse(oS: Session) {
    // 示例3:修改支付接口的原价(测试支付逻辑常用)
    if (oS.fullUrl.Contains("pay/submit") && oS.oResponse.MIMEType.Contains("json")) {
        oS.utilDecodeResponse(); // 必须先解码,防止Gzip压缩导致乱码
        var oldBody = oS.GetResponseBodyAsString();
        var newBody = oldBody.replace('"totalPrice":99.90', '"totalPrice":0.01');
        oS.utilSetResponseBody(newBody);
    }
}

5. Python 集成与自动化抓包

做爬虫或自动化接口测试时,经常需要通过Fiddler代理调试Python请求的Header、参数、Cookie是否正确。

基础示例

import requests
import urllib3

# 忽略requests的自签名证书警告(仅用于开发调试,生产环境绝对不能加!)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 设置代理指向本地Fiddler(注意HTTPS也用http开头的代理)
fiddler_proxies = {
    "http": "http://127.0.0.1:8888",
    "https": "http://127.0.0.1:8888",
}

try:
    # 发起带Fiddler代理的请求
    response = requests.get(
        url="https://httpbin.org/get",
        proxies=fiddler_proxies,
        verify=False,
        headers={"X-From-Python": "True"}
    )
    print("响应状态码:", response.status_code)
    print("响应JSON:", response.json())
except Exception as e:
    print(f"请求调试失败: {e}")

6. 常见问题排查

现象常见原因及解决方法
手机连上代理后完全无法上网1. 电脑Windows防火墙没关/没放行8888端口
2. Allow remote computers to connect没勾选
3. 电脑和手机不在同一WiFi
HTTPS流量全是灰色Tunnel to1. 手机证书没安装/没开启iOS的根信任
2. Fiddler根证书过期,可在Tools > Options > HTTPS > Actions中点击Reset All Certificates重置后重新安装
特定App提示「网络异常」「连接失败」1. App开启了SSL Pinning(证书固定),只信任官方根证书
2. 需要配合Xposed+JustTrustMe(Android)或Frida脚本(iOS/Android)绕过
电脑浏览器提示「连接不是私密连接」电脑端Fiddler根证书没正确安装到「受信任的根证书颁发机构」,可在Actions中点击Export Root Certificate to Desktop手动拖入安装

7. 总结

Fiddler不只是一个“看包工具”,还是一个强大的数据中转站和调试助手。对于移动端开发、逆向和爬虫工作者,建议按这个渐进流程掌握:

  1. 第一步:配好证书,打通HTTPS抓包
  2. 第二步:用Composer模块快速重发/修改请求调试
  3. 第三步:用Filters标签页过滤无关流量(比如系统更新、广告统计)
  4. 第四步:用FiddlerScript实现自动化Mock或数据篡改
开启Filters后,还可以通过`Hosts`、`Process`等维度进一步缩小抓包范围——比如只抓微信或指定App的流量,配合左侧会话列表的彩色标记(如红色标错误、蓝色标修改),定位问题的速度会快很多。