写一个fiddler插件 过滤请求返回的内容
时间: 2024-01-01 17:05:24 浏览: 73
好的,以下是一个简单的 Fiddler 插件,它可以过滤所有请求和响应中包含指定字符串的内容:
```csharp
using System;
using Fiddler;
public class FilterPlugin : IFiddlerExtension
{
private const string FilterString = "example";
public void OnLoad()
{
FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
}
public void OnUnload()
{
FiddlerApplication.AfterSessionComplete -= FiddlerApplication_AfterSessionComplete;
}
private void FiddlerApplication_AfterSessionComplete(Session session)
{
if (session.responseBodyBytes != null)
{
var responseBody = System.Text.Encoding.UTF8.GetString(session.responseBodyBytes);
if (responseBody.Contains(FilterString))
{
session.responseBodyBytes = null;
session["ui-comments"] = "Filtered out response containing \"" + FilterString + "\"";
}
}
}
}
```
这个插件会在 Fiddler 加载时注册一个事件处理程序,该事件处理程序会在每个请求完成后检查响应正文中是否包含指定的字符串。如果包含,则将响应正文设置为 null,以过滤掉响应。同时,它还会在 Fiddler 的 UI 中添加一个注释,说明该响应被过滤了。
你可以将上面的代码保存为一个名为 `FilterPlugin.cs` 的文件,在 Visual Studio 中编译为类库,并将生成的 DLL 文件复制到 Fiddler 的 `Scripts` 目录下。然后在 Fiddler 的菜单栏中选择 `Rules` -> `Customize Rules`,在打开的脚本文件中添加以下代码:
```csharp
#pragma comment (lib, "FilterPlugin.dll")
public static RulesOption("Filter responses containing:")
var m_FilterResponses: String = "";
[...]
public static function OnBeforeResponse(oSession: Session) {
if (m_FilterResponses.Length > 0) {
if (oSession.responseBodyBytes != null) {
var responseBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
if (responseBody.Contains(m_FilterResponses)) {
oSession.responseBodyBytes = null;
oSession["ui-comments"] = "Filtered out response containing \"" + m_FilterResponses + "\"";
}
}
}
}
```
这段代码会在 Fiddler 的 `OnBeforeResponse` 方法中调用插件的代码,以过滤响应内容。它还添加一个 UI 元素,可以让用户在 Fiddler 的界面中输入要过滤的字符串。
阅读全文