专栏名称: 奇舞周刊
《奇舞周刊》是由奇舞团维护的前端技术周刊。除周五外,每天向大家推荐一篇前端相关技术文章,每周五向大家推送周刊汇总内容。
目录
相关文章推荐
庆阳市场监管  ·  第三届消费者权益保护微视频作品展播(二) ·  23 小时前  
庆阳市场监管  ·  第三届消费者权益保护微视频作品展播(二) ·  23 小时前  
前端大全  ·  湖南大学的 DeepSeek ... ·  2 天前  
前端早读课  ·  【第3469期】为什么 React ... ·  2 天前  
吉林省高级人民法院  ·  “只要是前往正义的路我都想走” ·  3 天前  
吉林省高级人民法院  ·  “只要是前往正义的路我都想走” ·  3 天前  
51好读  ›  专栏  ›  奇舞周刊

教你玩转Fiddler插件开发

奇舞周刊  · 公众号  · 前端  · 2017-09-07 18:40

正文

编者按:本文转载自Qtest之道


前言


Fiddler是一款HTTP协议调试代理工具,因为功能强大,交互友好,使用方便,fiddler已经成为功能测试同学不可或缺的抓包工具。与此同时,fiddler具备良好的可扩展性,测试同学可以基于fiddler提供的接口开发符合自身业务需求的插件。通过fiddler插件开发可以实现对http request和response的自动修改,并且可以定制自己的检查规则对网络请求进行校验。

最近sdk业务出于安全性考虑,对部分网络请求进行了加密,以密文形式进行传输。而sdk打点数据完整性和正确性校验是业务测试同学的测试重点,密文形式的数据传输极大影响了测试同学的测试进度。因此,笔者临危受命为功能测试同学解决请求加密问题。考虑到功能测试同学平常使用fiddler进行抓包校验,因此笔者决定开发一款fiddler插件对sdk请求进行解密,然后以明文显示在UI上,方便测试同学校验。下面,笔者就来唠一唠如何进行fiddler插件开发。

环境准备

工欲善其事必先利其器,着手开发之前,我们需要将开发环境部署好。

  • .net framework

本文安装使用的是 .net framework v4.5.2

  • visual studio

fiddler官方推荐visual studio 2010以上版本。 本文使用 visual studio 2015 .

  • fiddler安装

本文安装了 fiddler4

开发宝典

网上关于fiddler插件开发资料较少。大家可以通过以下方式获取fiddler插件开发知识:

1. 开发者文档

fiddler的官方文档:

http://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet

官网提供了较全面的fiddler插件开发步骤和相应的api知识。

2. 开源项目

大家可以在github上通过fiddler等关键字搜索优秀的开源项目,学习前人的插件开发经验.

3.官方插件

反编译fiddler自带的插件(.dll)文件 。 笔者使用的是.net reflector反编译软件:

http://www.red-gate.com/products/dotnet-development/reflector/

例如,在fiddler中查看Inspectors对应的插件:

选中Inspectors中任意一个tab,然后右键点击 “inspector properties",查看inspector对应的插件。

使用reflector反编译standard.dll文件,可以了解fiddler提供的接口更详细的信息。

开启fiddler debug功能

1. 在fiddler命令行工具中开启debug功能

2. 显示错误和异常信息

prefs set fiddler.debug.extensions.showerrors  True

3. 显示log信息

prefs set fiddler.debug.extensions.verbose True

开启log显示后,开发者输出的log信息显示在fiddler右侧的log tab的界面中。

开发者可以使用如下接口显示日志信息:FiddlerApplication.Log.LogString()。

新建C#工程

1. 在visual studio中创建一个C#类库工程

  • 选择C#类型项目

fiddler自身基于C#进行开发

  • 选择类库
    插件以.dll形式进行加载

2. 添加fiddler引用

  • 为项目添加引用

  • 选择fiddler.exe


添加fiddler引用,为插件开发提供库函数支持和接口api。

3. 设置Fiddler.RequiredVersion属性

  • 在AssemblyInfo.cs文件中添加fiddler要求的版本号 : [assembly:Fiddler.RequiredVersion("4.6.20171.9220")]

  • 具体的版本号,视本地安装fiddler版本而定

构建插件

1.  fiddler接口知识

在进一步开发之前,需要明确fiddler插件开发的一些规则和特点,避免踩坑。

  • 接口分类

fiddler提供的接口有多种类别,例如IFiddlerExtension,IAutoTamper,Inspector2,IHandleExecAction等。开发者应该根据具体的业务需求,在插件中实现不同的接口逻辑。

IFiddlerExtension :该接口在fiddler启动时便会调用。

IAutoTamper : 对于每个http request和response都会自动调用该接口。

Inspector2 : 当用户选中某一个网络请求,触发该接口逻辑处理。

IHandleExecAction :用户在QuickExec输入命令时,会触发该接口执行。

  • 插件存放位置

fiddler不同类型的插件存放在不同的位置。

IFiddlerExtension、IAutoTamper接口扩展插件主要存放在fiddler安装目录的Scripts文件夹下。

Inspector2接口扩展插件主要存放在fiddler安装目录Inspectors文件夹下。

2. 扩展接口

下面回到正题,业务的需求是需要对sdk的加密请求进行解密,并且以明文显示在界面中。所以,笔者需要实现Inspector2,IRequest2接口。并且在抽象方法中实现自己的业务逻辑。

主要接口扩展代码如下:

body数据和header数据在body、headers函数中接口会自动注入。

Inspectors2接口需要用户实现UI逻辑,开发者可以定制自己的UI显示:

  • 选中项目-->右键-->添加-->用户控件


  • 选中用户控件,在控件中实现UI逻辑

  • 开发者实现了自身业务逻辑,基本上完成了fiddler插件开发

  • 项目工程见github地址: https://github.com/willysys/SDKDecryption.git

3. 运行&调试

  • 自动部署插件

为了避免每次生成.dll都要拷贝到Inspectors文件夹下,可以在VS中配置build之后的执行动作,自动拷贝.dll到指定目录。

copy "$(TargetPath)" "XXXXXXXX\fiddler\Fiddler4\Inspectors\$(TargetFilename)"







请到「今天看啥」查看全文