使用Fiddler修改接口返回数据进行测试

方法介绍与比对

在测试的过程中,有的需求是这样的,它需要你修改接口返回的数据,从而检查在客户端手机app内是否显示正确,这也算是一种接口容错测试,接口容错测试属于app性能(专项)测试的其中一种。

通过Fiddler我们可以有好几种方法修改返回结果

第一种:在Fiddler底部的黑色命令行显示区域通过bpu url的形式按回车之后进行拦截,通过手机app访问指定接口,拦截到后可以选择response文件后通过拦截;

第二种:在AutoRespnder里Add Rule,然后在Rule Editor里设置response的内容;

第三种:在Rules设置中选择Automatic Breakpoints中的After Responses进行拦截。

第一种不能自定义创建response,只能通过选择文件的形式来指定response。第三种对所有请求进行拦截,太粗太泛。所以实际测试拦截请求中,最灵活、功能最强的是第二种。

详细步骤
以下是第二种拦截方法抓改发包的全过程:

1. 抓包,找到要拦截的请求,然后在AutoResponder中Add Rule:

2. 在Rule Editor中的第二栏选择“Create New Response...”:

3. 点击Save,会弹出一个窗口,在弹窗中选择Raw栏,将抓包抓到的请求对应的Raw栏内容复制粘贴进去,然后将其中想要修改的部分进行修改,然后点击“Save”进行保存:

之后就可以对请求进行自动拦截并修改返回体了。

4. 如果想要频繁修改替换返回体中某些内容,可以在AutoResponder里相应待拦截请求上点击右键,“Edit Response”编辑返回体:

如果还想再方便一点,可以在AutoResponder里相应待拦截请求上点击右键,“Generate File”将response body保存到本地txt文件,然后打开txt文件修改保存即可生效。

但是注意,如果通过文件的方式保存response内容,可能会出现编码问题导致的客户端处理出错。最建议的方式,不会出错的方式,还是通过“Create New Response...”的方法:
————————————————

一句话概况

以上四步就是通过Fiddler抓改拦截请求的全攻略。

最后作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

<think>好的,用户的问题是关于如何在Fiddler中配置,使得捕获接口返回数据后自动调用本地Python脚本来解密。我需要先理解用户的需求。用户可能在做爬虫或者数据分析时遇到了加密的响应数据,想要自动化解密。根据用户提到的引用内容,特别是引用[1]中的步骤,用户已经知道抓包和分析,现在需要具体的Fiddler配置方法。 首先,Fiddler本身支持自定义脚本扩展,使用的是JScript.NET语言,但用户想用Python脚本,这可能需要通过Fiddler的AutoResponder或者自定义规则来触发外部程序。或者,用户可能需要编写FiddlerScript(在Fiddler的CustomRules.js中)来调用外部Python脚本处理数据。 我需要回忆Fiddler的功能。Fiddler可以通过OnBeforeResponse事件在收到响应时触发操作,这时候可以修改响应内容。用户希望在这里调用Python脚本处理数据,比如解密。但FiddlerScript是JScript.NET,不能直接执行Python,但可以调用命令行程序。因此,解决方法是让Fiddler在捕获响应时,将响应数据传递给Python脚本处理,然后将解密后的数据替换回去。 接下来,我需要分步骤说明如何配置。首先,确保Python环境正确,脚本能接收数据并解密。然后,在Fiddler中编辑CustomRules.js,使用OnBeforeResponse事件,调用外部命令执行Python脚本,并将响应内容传递进去。可能需要处理数据流的输入输出,比如将响应内容写入临时文件,或者通过命令行参数传递,但要注意数据量可能较大,所以用临时文件更合适。 另外,需要注意路径问题,确保Fiddler有权限执行Python脚本,并且路径正确。引用[3]提到mitmdump的例子,但这里是Fiddler,不过路径的处理类似,脚本应放在合适的位置,或者使用绝对路径。 还需要考虑性能问题,频繁调用外部脚本可能会影响效率,但用户可能已经考虑到这点,暂时以功能实现为主。最后,给出示例代码和验证步骤,帮助用户测试配置是否成功。 总结步骤:编写Python解密脚本,配置FiddlerScript调用该脚本,处理数据替换响应,然后验证调试。确保引用相关的参考资料,比如引用[1]中的步骤,引用[2]关于Fiddler使用,以及引用[3]关于脚本路径的问题。</think>### 分步操作指南 #### 1. 编写Python解密脚本 创建本地Python脚本(如`decrypt_response.py`),需满足以下要求: - 从标准输入或文件读取加密数据 - 实现解密逻辑(如AES、RSA等算法) - 将解密结果输出到标准输出或文件 示例代码: ```python import sys from Crypto.Cipher import AES def decrypt_data(encrypted_data): key = b'youraeskey123456' # 替换为实际密钥 cipher = AES.new(key, AES.MODE_CBC, iv=b'initialvector123') return cipher.decrypt(encrypted_data).decode().strip() if __name__ == "__main__": data = sys.stdin.buffer.read() # 接收二进制输入 decrypted = decrypt_data(data) print(decrypted) ``` #### 2. 配置Fiddler脚本扩展 通过FiddlerScript实现自动化处理流程: 1. 打开Fiddler > **Rules > Customize Rules** 2. 在`OnBeforeResponse`事件中添加处理逻辑 ```jscript import System.Diagnostics; static function OnBeforeResponse(oSession: Session) { if (oSession.fullUrl.Contains("目标接口特征")) { // 指定需处理的接口 var tempFile = "C:\\temp\\encrypted.tmp"; var pythonExe = "C:\\Python39\\python.exe"; // Python解释器路径 var scriptPath = "C:\\scripts\\decrypt_response.py"; // 解密脚本路径 // 保存加密响应到临时文件 oSession.SaveResponseBody(tempFile); // 构建执行命令 var process = new Process(); process.StartInfo.FileName = pythonExe; process.StartInfo.Arguments = scriptPath + " < " + tempFile; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; // 执行解密脚本 process.Start(); var decrypted = process.StandardOutput.ReadToEnd(); process.WaitForExit(5000); // 替换响应内容 oSession.utilSetResponseBody(decrypted); } } ``` #### 3. 配置环境验证 - 安装所需Python库:`pip install pycryptodome` - 测试脚本独立运行是否正常 - 确保Fiddler具有文件系统读写权限 - 临时文件路径需与实际配置一致[^1][^3] #### 4. 调试与优化 - 在Fiddler的**Log**标签页查看执行日志 - 使用`FiddlerScript > QuickExec`输入`bpv`设置断点调试 - 处理二进制数据时添加编码声明: ```jscript oSession.oResponse.headers["Content-Encoding"] = "identity"; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值