【问题标题】:Process SAZ files using FiddlerScript or extension使用 FiddlerScript 或扩展处理 SAZ 文件
【发布时间】:2019-07-10 02:58:27
【问题描述】:

我有一系列 Fiddler 会话存档文件 (SAZ),大约 150 个,每个文件包含大量会话,大约 15k 个条目。根据文档,我可以使用 AutoResponder 功能来模拟会话以进行重播。但是,我发现将会话从 SAZ 文件导入 AutoResponder 很尴尬,因为列表变得非常大,并且 AutoResponder 规则中的手动条目变得难以找到。

我想知道有没有一种方法可以直接使用 FiddlerScript 或扩展名从 SAZ 文件中读取和定位会话,而无需进入 AutoResponder 选项卡。我不熟悉 JS.NET 或 C#,但我正在尝试编写一些粗略的逻辑。

我看到的最接近的是I have problems to readSessionArchive() in FiddlerScript。使用共享的 sn-p,我可以让它工作,只是列出来自 SAZ 的会话。有没有办法将 SAZ 文件的响应映射到上下文中的请求,就像它在 AutoResponder 中导入时一样?

以上链接的修改版:

for (var i1:int = 0; i1<sSessions.Length; ++i1)
{
    FiddlerObject.log("sSessions: " + i1 + ": " + sSessions[i1].url);

    if(sSessions[i1].url === 'example.com/default.css') {
        //FiddlerObject.log("sSessions: " + i1 + ": " + sSessions[i1].GetResponseBodyAsString());
        //TODO logic to map oSession.response = response stored in SAZ file
    }
}

有没有更好的方法来实现这一点?此外,我觉得每次解析 SAZ 中的所有会话条目时,都会有很多 I/O 活动。有没有不选择 DB 选项的替代方案?

【问题讨论】:

  • @ericlaw 你能建议吗?

标签: fiddler


【解决方案1】:

您是否尝试使用可扩展性模型来实现您自己的 AutoResponder?如果是这样,您是否不想因为导入的条目太多而丢失 UI 中的手动条目?看来您可以将手动输入保留在顶部?

如果您愿意,您可以使用 oAutoResponder.ImportSessions 选择性地将会话(在您加载和/或修改它们之后)添加到 AutoResponder UI。

SAZ 文件有多大?

Fiddler 只会在你调用Utilities.ReadSessionArchive 时敲击磁盘;之后,Sessions 都在 Fiddler 的记忆中。如果您在此处看到磁盘 IO,则表明您的计算机内存不足,并且您的操作系统正在对磁盘进行内存分页。

有没有办法将 SAZ 文件的响应映射到上下文中的请求

我不确定我是否理解您的要求——您是在问 Fiddler 如何确定 Session 的 URL 是什么?因为看起来你已经在你的代码 sn-p 中发现了这一点。

【讨论】:

  • 感谢您的调查。第一行有点符合需要,因为我试图通过查看特定的 SAZ 文件来实现 AutoResponder 并直接提供内容而不通过 AutoResponder UI。平均每个 SAZ 文件有约 15k 奇数条目和约 820 mb 大小。 SAZ 文件条目也经常更改,因此我目前正在加载保存的 .farx 文件,然后添加 SAZ 条目,因为在 UI 中定位 15k x 10(比如说)= 150000 个条目中的一些条目非常困难。我经常遇到内存问题和 Fiddler 崩溃,然后必须重新启动整个事情。
  • 上述代码 sn-p 的确切问题是我在 SAZ 中找到了请求,但我无法读取响应/元数据并更新 oSession 的响应,就像它会做的那样当它通过 AutoResponder 或 x-replywithfile (评论的 TODO 部分)时。您是否知道任何已经在做的扩展,或者您能否通过实时读取响应和元数据来请求一些代码 sn-p 来实现这一点?我知道这将是太多的磁盘 I/O,但是重复的手动任务太痛苦了。
  • 这可能更适合讨论论坛,因为这里有很多问题。通常,执行此操作的方法是加载 SAZ 一次,然后从中重放流量。您不想在此使用x-replywithfile - 相反,只需从会话的内存缓存中复制标头和响应正文。您肯定希望为此使用 64 位 Fiddler。
  • 感谢您的更新。我在这里发布了类似的问题:telerik.com/forums/…。是的,我使用的是 64 位版本。
  • 我可以通过以下 sn-p 解决问题陈述:(对格式错误表示歉意)for (var i1 = 0; i1 &lt; sSessions.Length; ++i1) { if (oSession.fullUrl == sSessions[i1].fullUrl) { if (oSession.state &lt; SessionStates.SendingRequest) { oSession.utilCreateResponseAndBypassServer(); } oSession.oResponse.headers = sSessions[i1].oResponse.headers; oSession.responseBodyBytes = sSessions[i1].responseBodyBytes; return; } }
猜你喜欢
  • 1970-01-01
  • 2014-08-13
  • 2015-07-06
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多