fiddler筛选请求并修改参数

本文详细介绍了如何使用Fiddler进行请求筛选、临时修改参数、设置断点以及修改请求头、Cookie等,涵盖了各种HTTP方法和响应类型的操作,适合深入理解Fiddler工具的高级用法。

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

一、筛选请求
  1. 使用过滤,需勾选User Filter才会生效,运行当前的过滤规则,需点击Run Filterset now
    在这里插入图片描述
  2. Hosts:主机过滤之局域网过滤
    在这里插入图片描述
  • No Zone Filter:默认选项,不设置区域过滤器
  • show only Intranet Hosts:只显示内网的Hosts,即过滤掉外网的Hosts。此时,只显示URL请求目标服务器在内网的请求
  • show only internet Hosts:与上相对应,只显示外网的Hosts
  1. Hosts:主机过滤之广域网过滤
    在这里插入图片描述
  • No Host Filter:默认选项,不设置过滤主机IP条件
  • Hide the following Hosts:隐藏输入到下面文本框中的Hosts
  • Show only the following Hosts:仅显示输入到下面文本框中的Hosts
  • Flag the following Hosts:标识下边输入的主机名的会话(加粗)
  1. Client process:客户端进程过滤
    在这里插入图片描述
  • Show only traffic from:指定只显示哪个Windows进程中的请求,右侧会列出当前所有的 Windows 进程。
  • Show only Internet Explorer traffic:只显示IE发出的请求。
  • Hide trafficfrom service host:隐藏来自service
  1. Request header:请求头过滤
    在这里插入图片描述
  • Show only if URL contains:仅显示URL中包含指定字符串的请求,字符串可以是URL中的一部分,多个字符串用空格分开,也可以使用EXACT:前缀来限定大小写,或者使用REGEX:前缀正则表达式或完整的URL。
  • Hide if URL contains:仅隐藏URL中包含指定字符串的请求,字符串可以是URL中的一部分,多个用空格分开,可以是正则或完整的URL。
  • Flag requests with headers:标记带有特定header的请求,如果在websession列表中存在该请求,会加粗显示。
  • Delete request headers:删除请求中指定的Header字段
  • Set request Header:在URL请求中添加头字段,与上一条对应。前面输入字段,后面输入值。
  1. Breakpionts:设置断点
    在这里插入图片描述
  • Break request on Post:对所有Post请求设置断点
  • Break request on GET with query string:对所有带参数的 GET 请求设置断点
  • Break on XMLHttpRequest:对所有Ajax请求设置断点
  • Break response on Content-type:对响应报文中header字段中,Content-Type属性匹配成功的请求设置断点
  1. Response Status Code:响应状态码过滤
    在这里插入图片描述
  • Hide success(2xx):隐藏响应状态码为2xx的URL请求
  • Hide non-2xx:隐藏响应状态码不是2xx的URL请求
  • Hide Authentication demands(401,407):隐藏认证(响应状态码为:401 407)的URL请求
  • Hide redirects(300,301,302,303,307):隐藏重定向(响应状态码为:300,301,302,303,07)的URL请求
  • Hide Not Modifield(304):隐藏不是缓存的状态码(304)的URL请求
  1. Response Type and Size :响应类型和报文大小过滤
    在这里插入图片描述
  • 下拉类别选择显示类型
Show all Content-Type:显示所有类型Content-Type的请求,Content-Type即为响应结果header信息中Content-Type字段
Show only IMAGE/*:仅显示响应类型为图片的请求
Show only HTML:仅显示响应类型为HTML的请求
Show only TEXT/CSS:仅显示响应类型为text/css的请求
Show only SCRIPTS:仅显示响应类型为Scripts的请求
Show only XML:仅显示响应类型为XML的请求
Show only JSON:仅显示响应类型为Json的请求
Hide IMAGE/*:隐藏所有响应类型为图片的请求
  1. Response Header:响应头过滤
    在这里插入图片描述
  • Flag responses that set cookies:会话列表的响应中有cookies信息的加上标识(斜体)。
  • Flag responses with headers:会话列表里标记响应中带有特定header的请求(即加粗)。
  • Delete response headers:会话列表里删除响应信息中,有指定的Header字段的会话。
  • Set response header:在响应中添加header字段,第一个输入框是header 的key,第二个输入框是对应value
二、修改请求参数之临时修改参数
  1. 临时修改参数,可通过urlreplace SeekStr ReplaceWithStr命令,做参数替换
  2. 打开Fiddler,再打开百度,搜索csdn,在Fiddler中查看参数,wd是查询参数
    在这里插入图片描述在这里插入图片描述
  3. Fiddler命令行输入urlreplace wd=csdn wd=js回车,回到浏览器点击百度一下,会发现虽然搜索的是csdn,但是查出来的是js相关的信息,这种方法关闭Fiddler之后就会失效
    在这里插入图片描述在这里插入图片描述
三、断点修改请求参数
  1. 在请球之前拦截请求,以刚才的csdn为例
    在这里插入图片描述
  2. 点击百度一下,会发现已经进入Fiddler断点
    在这里插入图片描述
  3. 点击请求,点击Inspectors>WebForms,修改参数中的wd为js,点击Run to Complation,会发现虽然搜索的是csdn,但是查出来的是js相关的信息
    在这里插入图片描述在这里插入图片描述
  4. 这种方法修改参数,如果遇到请求参数中有时间戳的很容易造成请求失败,而且断点会断住所有请求,如果想断某个请求,最好还是做个请求筛选
    在这里插入图片描述
四、通过Composer修改参数
  1. 先通过浏览器百度csdn,Fiddler中查看Inspectors>WebView会看到搜索出来的是csdn,如果是乱码点击Decode解码一下
    在这里插入图片描述
  2. 鼠标左键把请求拖到Composer,在Url中找到wd,修改为js,点击执行,查看Inspectors>WebView会看到搜索出来的是js
    在这里插入图片描述在这里插入图片描述
  3. 这种方法修改参数,如果遇到请求参数中有时间戳的很容易造成请求失败,而且不会在浏览器上体现出来,相当于postman创建了一个请求,好处就是会有历史记录下次使用可以直接在历史记录里找
    在这里插入图片描述
五、修改请求参数之永久修改参数,FiddlerScript修改参数
  1. 找到FiddlerScript编辑脚本,也可以在工具栏Rules > Customize Rules中修改脚本
    在这里插入图片描述
  2. 找到static function OnBeforeRequest,添加oSession.uriContains(“web=csdn”)代码,点击save script保存脚本
    在这里插入图片描述
  3. 打开浏览器搜索csdn,会发现虽然搜索的是csdn,但是查出来的是js相关的信息,这种方法关闭浏览器不会失效、也不用打断点,缺点是需要熟悉.Net,不过需要什么代码,度娘应该会给你答案
    在这里插入图片描述
六、修改请求脚本代码
  1. 拦截post请求,并修改JSON格式参数
if (oSession.HTTPMethodIs("POST") && oSession.uriContains("example.com")) {
    // 获取请求的 Body 数据
    var requestBody = oSession.GetRequestBodyAsString();

    // 解析 JSON
    var json = Fiddler.WebFormats.JSON.JsonDecode(requestBody);


    // 修改 JSON 参数
    json.JSONObject["Body"]["kwy"] = "value";
    // 删除 JSON 参数
    json.JSONObject.Remove('key');
    json.JSONObject["Body"].Remove("key");
    
    // 将修改后的 JSON 转换回字符串
    var modifiedRequestBody = Fiddler.WebFormats.JSON.JsonEncode(json.JSONObject);
    // 更新请求的 Body 数据
    oSession.utilSetRequestBody(modifiedRequestBody);
}
  1. 拦截post请求,并修改普通参数,非JSON格式
if (oSession.HTTPMethodIs("POST") && oSession.uriContains("example.com")) {
    // 获取请求的 Body 数据
    var requestBody = oSession.GetRequestBodyAsString();

    // 修改参数
    requestBody = requestBody.replace("param1=value1", "param1=newValue");

    // 更新请求的 Body 数据
    oSession.utilSetRequestBody(requestBody);
}
  1. 拦截get请求,并修改url参数,如果post请求url中带有参数,可以把GET换成POST
if (oSession.HTTPMethodIs("GET") && oSession.uriContains("example.com")) {
    // 获取请求的 URL
    var url = oSession.fullUrl;

    // 修改参数
    url = url.replace("param1=value1", "param1=newvalue");

    // 更新请求的 URL
    oSession.fullUrl = url;
}
  1. 拦截get请求,并删除url参数,如果post请求url中带有参数,可以把GET换成POST
import System.Web;

if (oSession.HTTPMethodIs("GET") & & oSession.uriContains("example.com")) {
    // 获取请求的 URL
    var url = oSession.fullUrl;
    
    // 解析 URL 中的参数
    var uri = new System.Uri(url);
    var queryString = System.Web.HttpUtility.ParseQueryString(uri.Query);
    
    // 删除指定的参数
    queryString.Remove("dt");
    
    // 构建新的 URL
    var newUrl = uri.GetLeftPart(System.UriPartial.Path) + "?" + queryString.ToString();
    
    // 更新请求的 URL
    oSession.fullUrl = newUrl;
}
  1. 拦截get请求,并修改请求头,如果需要修改POST请求头,可以把GET换成POST
if (oSession.HTTPMethodIs("GET") && oSession.uriContains("example.com")) {
    // 获取请求的头部对象
    var headers = oSession.oRequest.headers;

    // 修改头部的值
    headers["key"] = "value";

    // 删除指定的头部
    headers.Remove("key");
}
  1. 拦截get请求,并修改cookie,如果需要修改POST请求cookie,可以把GET换成POST
if (oSession.HTTPMethodIs("GET") && oSession.uriContains("example.com")) {
    // 获取请求的 Cookie 值
    var cookieValue = oSession.oRequest["Cookie"];
    
    // 添加cookie
    cookieValue+=";key=value";
    
    // 修改cookie
    cookieValue = cookieValue.Replace("key=value", "key=newValue");
    
    // 删除cookie
    cookieValue = cookieValue.Replace("key=value", "");

    oSession.oRequest["Cookie"] = cookieValue
}
  1. 正则替换字符串,以修改cookie为例
if (oSession.HTTPMethodIs("GET") && oSession.uriContains("example.com")) {
    // 获取请求的 Cookie 值
    var cookieValue = oSession.oRequest["Cookie"];
    
    var pattern = "key=([^&]*)";
    var regex = new System.Text.RegularExpressions.Regex(pattern);
    var cookieValue = regex.Replace(cookieValue, "key=newValue");

    oSession.oRequest["Cookie"] = cookieValue
}
  1. 输出cookie到控制台,可通过log查看
FiddlerApplication.Log.LogString("cookie: " + cookieValue);
### 如何在 Fiddler 中过滤 HTTP 请求 #### 基本概念 Fiddler 是一款强大的网络调试工具,能够捕获分析 HTTP 和 HTTPS 流量。通过其内置的过滤功能,可以有效减少无关流量的影响,专注于目标请求。 --- #### 使用 Filters 功能进行过滤 1. **启用 Filter** 打开 Fiddler 后,在右侧界面找到 `Filters` 选项卡,勾选 `Use Filters` 复选框[^1]。这会激活过滤器功能。 2. **Hosts 主机过滤** 在 `Hosts` 部分,可以选择仅显示来自特定主机的请求。具体操作如下: - 勾选 `Show only the following Hosts`。 - 在下方文本框中输入目标域名或 IP 地址,多个地址间用逗号分隔[^3]。 3. **Client Process 进程过滤** 如果希望只查看由某个应用程序发起的请求,可以在 `Client Process` 部分配置: - 勾选 `Only show traffic from selected processes`。 - 利用下拉菜单选择具体的进程名称[^2]。 4. **Request Headers 请求头过滤** 可以基于请求头部字段进一步筛选数据流: - 设置 `If URL contains` 输入框来匹配特定路径字符串。 - 或者利用高级模式定义更复杂的规则集。 5. **断点过滤 (Breakpoints)** 断点允许拦截某些类型的请求/响应以便手动修改后再继续传输过程。例如: - 将 `Break when any request matches this condition` 的条件设为正则表达式形式。 6. **响应状态码过滤** 用户还可以依据服务器返回的状态代码范围决定哪些条目被隐藏或者高亮展示出来。比如限定只看成功类别的回复(即2xx系列). 7. **响应类型和大小过滤** 对于多媒体文件下载场景特别有用——可按 MIME 类型以及字节数阈值双重维度加以约束: ```plaintext Show responses with content type: image/jpeg Hide all but largest N sessions by size(KB): 100KB+ ``` --- #### 示例代码片段 以下是 Python 脚本模拟向某 API 发送 GET 请求的例子: ```python import requests url = 'https://example.com/api/data' response = requests.get(url) if response.status_code == 200: print('Success:', response.text[:100]) # 输出前一百字符作为预览 else: print(f'Failed to retrieve data ({response.status_code})') ``` 运行上述脚本的同时开启已配置好相应参数组合后的 Fiddler 实例即可观察到对应行为表现情况变化趋势图谱等等信息了! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

局外人LZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值