Fiddler抓包全攻略:HTTP/HTTPS及移动端流量捕获实践

一、协议捕获基础配置

1.1 HTTP流量捕获

作为默认支持的协议类型,HTTP流量捕获无需特殊配置。启动Fiddler后,所有通过本地回环地址(127.0.0.1)或系统代理的HTTP请求将自动显示在会话列表中。建议通过Options > Connections设置监听端口(默认8888),并勾选Allow remote computers to connect以支持远程设备接入。

1.2 HTTPS解密配置

对于加密流量,需完成三步关键配置:

  1. 证书信任链建立
    进入Tools > Options > HTTPS,勾选以下选项:

    • Decrypt HTTPS traffic
    • Ignore server certificate errors (unsafe)
    • ...from all processes(全流量解密)
  2. 证书生成与部署
    点击Actions > Trust Root Certificate,将根证书安装至系统证书库。对于移动端抓包,需额外导出证书:

    1. # 命令行生成PEM格式证书(示例)
    2. openssl x509 -in FiddlerRoot.cer -inform DER -outform PEM -out FiddlerRoot.pem
  3. 浏览器证书管理
    在Chrome/Firefox中导入生成的.cer文件,路径为设置 > 隐私与安全 > 证书管理 > 授权中心。企业环境需注意证书策略冲突问题。

二、移动端抓包实战

2.1 代理服务器配置

  1. 网络环境准备
    确保移动设备与开发机处于同一局域网,关闭主机防火墙(或开放8888端口)。在Fiddler中启用远程连接:

    1. // FiddlerScript示例:修改OnBeforeRequest响应头
    2. static function OnBeforeRequest(oSession: Session) {
    3. if (oSession.HTTPMethodIs("CONNECT")) {
    4. oSession["x-replywithtunnel"] = "FakeTunnel";
    5. }
    6. }
  2. 设备代理设置

    • iOS:设置 > Wi-Fi > HTTP代理 > 手动,输入主机IP和端口
    • Android:长按WiFi网络选择修改网络 > 高级选项 > 代理,部分定制ROM需通过ADB命令:
      1. adb shell settings put global http_proxy <IP>:<PORT>

2.2 证书安装与验证

  1. iOS设备
    通过Safari访问http://<主机IP>:8888下载证书,在设置 > 已下载描述文件中安装,最后至关于本机 > 证书信任设置启用完全信任。

  2. Android设备
    将证书文件(.cer.pem)放入/sdcard/Download/目录,通过设置 > 安全 > 加密与凭据 > 从存储设备安装选择证书文件。部分系统需Root权限才能安装用户证书。

三、高级过滤与自动化

3.1 多维度过滤系统

  1. 基础域名过滤
    Filters选项卡设置:

    • Hosts:支持通配符(如*.baidu.com
    • Processes:通过进程名过滤(如chrome.exe
    • 注意:同时启用域名和进程过滤可能导致会话丢失,建议优先使用单一过滤维度。
  2. 响应状态过滤
    通过Status Code字段筛选特定HTTP状态码(如仅显示4xx/5xx错误),结合Response Size可定位大文件传输问题。

3.2 自动化规则引擎

利用FiddlerScript实现复杂逻辑:

  1. // 示例:自动重定向特定请求
  2. static function OnBeforeResponse(oSession: Session) {
  3. if (oSession.uriContains("api.example.com/v1")) {
  4. oSession.fullUrl = oSession.fullUrl.Replace("v1", "v2");
  5. oSession["ui-color"] = "pink"; // 高亮显示修改的会话
  6. }
  7. }

四、常见问题处理

4.1 证书错误排查

  • 现象:浏览器显示NET::ERR_CERT_AUTHORITY_INVALID
  • 解决方案
    1. 确认系统时间正确
    2. 检查证书是否安装至受信任的根证书颁发机构存储区
    3. 尝试清除浏览器SSL状态(Chrome:设置 > 隐私和安全 > 清除浏览数据 > 缓存的图像和文件

4.2 移动端抓包失败

  • iOS:检查是否启用Airplane Mode或VPN干扰
  • Android:确认系统版本是否限制非市场应用安装证书(需ADB命令或Root)
  • 通用方案:使用tcpdump + Wireshark组合工具进行底层抓包

五、性能优化建议

  1. 会话缓存管理
    通过Rules > Performance > Decrypt HTTPS动态控制解密范围,减少高流量场景下的CPU占用。

  2. 自定义列显示
    右键点击会话列表标题栏,添加X-Powered-ByServer等响应头字段,快速识别服务端技术栈。

  3. 导出格式选择
    支持HTTPArchive(.har)CSVXML等多种格式,其中HAR格式可直接导入Postman或Chrome DevTools进行二次分析。

通过系统化的配置和实战技巧,开发者可充分发挥Fiddler在协议分析、性能调优和安全审计方面的价值。建议结合Charles、Wireshark等工具形成完整抓包工具链,应对不同层级的网络调试需求。