Fiddler
这款工具相信大部分开发和测试人员都不陌生,它是一个用于HTTP调试的代理服务器应用程序。功能很强大,可惜的是不是开源的。
在用这款工具的过程中也会有些问题,比如我们项目接口的数据传输是加密的,用Fiddler
抓包看到的是密文,没法直观的了解接口传输的数据。之前有动过利用 Mitmproxy
自己做一款可以支持直接解密数据后显示的抓包工具,但是...也只停留在想象中了。
最近又动了想在 Fiddler
上直接看加密数据的想法,然后就在网上找了下,发现虽然没法直接在源码上增加功能,但是可以通过开发插件然后集成进 Fiddler
的方式来增加功能。
这篇文章就主要介绍如何通过增加插件的形式在 Fiddler
上增加自己想要的功能,希望能给你一定的启发。本文将从以下几个方法讲解:
我定制了什么功能; 如何定制自己的功能; 我的一些想法;
定制了什么
因为我们项目中的接口传输数据是加密的,用 Fiddler
抓完包后想分析数据,还需要另外解密。另外我们的项目测试过程中涉及到埋点上报的测试,埋点上报的数据也是加密后的。这样用 Fiddler
抓包后再用另外的工具解密查看的方式比较繁琐。
「通过定制插件,在 Fiddler
中增加了数据解密并展示的功能,可以抓完包后直接看到解密后的数据。」
接口请求数据解密
解密前的展示:
解密后的展示(注意:图片中的 DecryptionJSON
tab 就是我新增的功能,你们从官网下载的是没有的):
再来个对比图片:
埋点上报数据解密
解密前的展示:
解密后的展示:
再来个对比图片:
如何定制
Fiddler
是用 C#
语言编写的,所以定制化插件开发也需要用 C#
来开发,IDE 一般使用 Visual Studio
。
网上已经有比较详细的怎么做的文档,这里就不再赘述,这里主要讲一下大致流程。
插件开发详细文档: https://juejin.im/post/5db3e52b518825077c4328d6
插件接口官网地址:https://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet
主要的步骤:
利用反编译工具反编译
Fiddler.exe
和Standard.ddl
(为什么要反编译这个文件,看下图) 文件,查看源码的一些实现。创建插件的
C#
类库项目,并编写对应的代码(前面给的那个文档里面有描述如果集成Fiddler
的接口);生成 ddl 文件,并将它复制到
Fiddler
安装目录下的Inspectors
文件夹中;打开
Fiddler
查看效果
一些想法
既然可以利用 Fiddler
提供的接口开发插件,那后续用 Fiddler
的过程中遇到有什么使用不方便或者缺失的功能是不是可以考虑自己去增加插件来实现呢。
目前有想到几个可以去定制化插件的场景:
可以实时的解密数据进行展示,方便测试过程中可以直接了解接口传输数据(已实现); 在 Fiddler
中增加管理项目Mock
数据的能力,可以直接用Fiddler
管理 Mock 数据;增加自动筛选接口数据并自动保存到指定存储介质的功能,实现录制指定项目,后续用来回放或者组织自动化用例;