定制化Fiddler

Fiddler 这款工具相信大部分开发和测试人员都不陌生,它是一个用于HTTP调试的代理服务器应用程序。功能很强大,可惜的是不是开源的。

在用这款工具的过程中也会有些问题,比如我们项目接口的数据传输是加密的,用Fiddler 抓包看到的是密文,没法直观的了解接口传输的数据。之前有动过利用 Mitmproxy 自己做一款可以支持直接解密数据后显示的抓包工具,但是...也只停留在想象中了。

最近又动了想在 Fiddler 上直接看加密数据的想法,然后就在网上找了下,发现虽然没法直接在源码上增加功能,但是可以通过开发插件然后集成进 Fiddler 的方式来增加功能。

这篇文章就主要介绍如何通过增加插件的形式在 Fiddler 上增加自己想要的功能,希望能给你一定的启发。本文将从以下几个方法讲解:

  1. 我定制了什么功能;
  2. 如何定制自己的功能;
  3. 我的一些想法;

定制了什么

因为我们项目中的接口传输数据是加密的,用 Fiddler 抓完包后想分析数据,还需要另外解密。另外我们的项目测试过程中涉及到埋点上报的测试,埋点上报的数据也是加密后的。这样用 Fiddler 抓包后再用另外的工具解密查看的方式比较繁琐。

通过定制插件,在 Fiddler 中增加了数据解密并展示的功能,可以抓完包后直接看到解密后的数据。

接口请求数据解密

解密前的展示:

接口响应的原数据
接口响应的原数据

解密后的展示(注意:图片中的 DecryptionJSON tab 就是我新增的功能,你们从官网下载的是没有的):

接口返回数据解密后的展示
接口返回数据解密后的展示

再来个对比图片:

解密前后数据对比
解密前后数据对比

埋点上报数据解密

解密前的展示:

埋点上报原数据
埋点上报原数据

解密后的展示:

埋点上报解密后数据
埋点上报解密后数据

再来个对比图片:

埋点解密前后对比
埋点解密前后对比

如何定制

Fiddler 是用 C# 语言编写的,所以定制化插件开发也需要用 C# 来开发,IDE 一般使用 Visual Studio

网上已经有比较详细的怎么做的文档,这里就不再赘述,这里主要讲一下大致流程。

插件开发详细文档: https://juejin.im/post/5db3e52b518825077c4328d6

插件接口官网地址:https://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet

主要的步骤:

  1. 利用反编译工具反编译 Fiddler.exeStandard.ddl (为什么要反编译这个文件,看下图) 文件,查看源码的一些实现。

    窗口插件文件
    窗口插件文件
  2. 创建插件的 C# 类库项目,并编写对应的代码(前面给的那个文档里面有描述如果集成 Fiddler 的接口);

  3. 生成 ddl 文件,并将它复制到 Fiddler 安装目录下的 Inspectors 文件夹中;

  4. 打开 Fiddler 查看效果

一些想法

既然可以利用 Fiddler 提供的接口开发插件,那后续用 Fiddler 的过程中遇到有什么使用不方便或者缺失的功能是不是可以考虑自己去增加插件来实现呢。

目前有想到几个可以去定制化插件的场景:

  1. 可以实时的解密数据进行展示,方便测试过程中可以直接了解接口传输数据(已实现);
  2. Fiddler 中增加管理项目 Mock 数据的能力,可以直接用 Fiddler 管理 Mock 数据;
  3. 增加自动筛选接口数据并自动保存到指定存储介质的功能,实现录制指定项目,后续用来回放或者组织自动化用例;
posted @ 2020-05-29 09:46  _Tenma  阅读(347)  评论(0编辑  收藏  举报