Fiddler 修改请求/响应数据方法(断点)

本文介绍如何使用Fiddler修改请求及响应数据、模拟服务器响应等技巧,包括设置断点、修改请求与响应数据的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行此类操作。可以使用断点功能完成。

1 修改请求

1.1 设置断点

    设置请求断点:Rules--Automatic breakpoints--before request(或者按F11键)这种方式的断点会对所有请求;或者在命令行中,输入bpu 域名,这种方式只会对配置的域名添加断点,访问其他的可以正常访问,不会有断点。

1.2 修改请求的Raw数据

   设置了断点后,页面上的操作都会被拦截下来(比如一个查询请求,输入关键字后点击查询按钮,因为设置了断点,页面上看到的效果是在转圈圈,不会返回数据)。点击查询后,在Fiddler左边看到这个请求加了个断点的标志:

页面返回如下,正常查询会返回两条数据,由于拦截了请求并修改了入参,所有返回空数据

2 修改响应数据

  在发起请求,需要修改响应数据时,可以设置请求前断点/响应后断点两种,区别就是在设置为请求前的断点时,需要多点击一步。在此用响应后断点。

2.1 设置响应后断点

        Rules--Automatic breakpoints--after response(或者按alt+F11键),这种方式的断点会对所有请求生效;或者在命令行中,输入bpafter 域名,这种方式只会对配置的域名添加断点,访问其他的可以正常访问,不会有断点。

2.2 选中请求,进入Inpectors--Raw中修改响应信息

  在这一步时一定要注意如果有“response body is encoded.click to ecode显示时,一定要先点击后,再去修改响应数据。未操作直接修改响应数据后,会导致响应存在问题。

       在响应区点击SyntaxView,修改数据。

2.3 修改数据后,点击Run to Complete 返回响应数据并完成操作。

3 模拟响应结果

        在一些情况下,不使用实际返回的请求数据,或服务暂时不能返回,可以使用fiddler进行模拟返回数据。

  如果需要模拟返回自己配置的响应数据,需要先提前配置好文件,再进行读取。

3.1 设置响应后断点

3.2 选中请求,进入Inpectors--Raw中修改响应信息

   如果是模拟返回请求失败相关的,可以直接在下拉列表中,进行选择;如果是自己定制的,点击“find a file”进行文件的选择。

  选择列表项/文件后,点击Run to Completion返回响应数据,操作完成。

4 取消断点

  Rules--Automatic breakpoints--disabled(或者按shift+F11键)

  命令行:如果是before request---使用bpu取消;

  如果是after response---使用bpafter

### Fiddler请求断点响应断点的功能及用法 #### 功能概述 Fiddler 是一种强大的网络调试工具,能够帮助开发者分析 HTTP(S) 流量并对其进行修改。其中,断点功能允许用户在特定时刻暂停流量处理以便手动干预。具体来说,断点分为 **请求断点 (Before Requests)** 和 **响应断点 (After Responses)**。 - 请求断点用于在网络请求发送到服务器之前捕获和修改请求数据[^3]。 - 响应断点则是在服务器返回响应之后但在客户端接收到响应之前捕获和修改响应数据[^4]。 --- #### 设置方法 ##### 1. 全局断点设置 全局断点适用于所有请求响应,配置方式如下: - **请求断点** 菜单栏依次选择 `Rules` -> `Automatic Breakpoints` -> `Before Requests` 或按快捷键 `Alt+F10`。 - **响应断点** 菜单栏依次选择 `Rules` -> `Automatic Breakpoints` -> `After Responses` 或按快捷键 `Alt+F11`。 --- ##### 2. 单个断点设置 如果仅针对某个具体的 URL 设置断点,则可以通过 QuickExec 面板执行命令实现: - **请求断点** 在左下角的 QuickExec 输入框中输入以下命令并回车: ```plaintext bpafter url(目标URL) ``` - **响应断点** 同样在 QuickExec 输入框中输入以下命令并回车: ```plaintext bpbefore url(目标URL) ``` 注意:上述命令中的 `url()` 参数需替换为目标请求的实际地址[^2]。 --- #### 使用流程 无论是请求前还是响应后的断点,其基本使用流程均相似,主要包括以下几个环节: 1. **触发断点** 当满足条件的请求被发出或者响应被接收时,Fiddler 将自动停止进一步的操作,并提示用户当前处于断点状态。 2. **编辑内容** 用户可以在 Inspectors 窗口中找到对应的请求头、请求体以及响应头、响应体等内容进行必要的调整。例如更改 User-Agent 字符串、伪造 Cookie 数据或是直接篡改 HTML 页面结构等。 3. **继续执行** 完成所需改动后,点击界面右上角的按钮 `Run to Completion` 来恢复正常的通信过程。需要注意的是,当遇到编码压缩过的响应体(如 gzip),应当先行解码再做任何变动,以免破坏原始格式引发错误解析情况发生。 4. **移除断点** 如果不再需要某类断点了,可通过菜单项 `Rules` -> `Automatic Breakpoints` -> `Disable All Breakpoints` (快捷键 Shift+F11)来关闭全部激活着的断点规则;对于单独指定的那个网址关联上的临时性中断指令,则重新回到快速执行区域里清除掉先前定义好的语句即可。 --- #### 主要区别 | 特性 | 请求断点 (Before Requests) | 响应断点 (After Responses) | |-------------------|-----------------------------------------------|--------------------------------------------| | **作用时机** | 发送至服务器之前的瞬间 | 接收自服务器之后尚未传递给本地程序之时 | | **适用场景** | 修改即将提交的数据包参数 | 更改已经获取回来的服务端反馈信息 | | **典型用途** | 添加额外头部字段、模拟不同设备访问行为 | 替换图片资源链接路径、注入 JavaScript 脚本片段 | --- ### 示例代码展示 以下是利用 Python 自动化配合 Fiddler 的简单脚本案例演示如何批量创建多个相同类型的断点规则: ```python import subprocess def add_fiddler_breakpoint(bp_type, target_url): command = f"{bp_type} {target_url}" try: result = subprocess.run(["fiddler", "-command"], input=command.encode(), capture_output=True) print(f"Added breakpoint for '{target_url}' with type '{bp_type}'. Output: ", result.stdout.decode()) except Exception as ex: print("Error occurred while adding breakpoint:", str(ex)) if __name__ == "__main__": urls_to_monitor = ["https://example.com/api/data", "https://testsite.org/login"] for u in urls_to_monitor: add_fiddler_breakpoint("bpafter", u) # Add response breakpoints ``` 此段代码假设存在名为 `-command` 的接口支持外部调用形式向内部引擎下达控制台级别的管理动作,实际应用可能还需要依据官方文档确认确切语法细节。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值