从 Fiddler Autoresponder 执行脚本

Executing a script from Fiddler Autoresponder

我正在尝试使用 Fiddler Autoresponder 规则在本地测试脚本,并且我有一个端点在响应中包含请求 body 的散列。我想我可以从自动回复器触发一个脚本并计算哈希值并构建响应,但要弄清楚如何做到这一点非常困难。

据我所知,AutoResponder 支持脚本,但几乎没有关于它的文档。我能找到的唯一参考是 Fiddler 论坛 (https://www.telerik.com/forums/script-in-autoresponder) 中的 post,但我不知道文档中的详细信息来自何处。

我可以获取 运行 的脚本,但似乎 运行 在发送请求之前,我不知道如何让它正常执行请求(或加载来自文件的响应,或从脚本填充响应 body),然后执行我的代码以将哈希添加为 header.

我把 Session object 弄乱了一点,但找不到任何明显的东西。是否有更好的 Fiddler 文档实际上是最新的?

这里是一个函数示例,它构建了一个包含来自请求的动态信息的响应。

public static function UrbanDictionaryBlocker(oS: Session)
{   
    if (oS.HTTPMethodIs("GET")) // avoid HTTPS errors
    {
        oS.utilCreateResponseAndBypassServer();
        oS.ResponseBody = System.Text.Encoding.UTF8.GetBytes("stop browsing urban dictionary at work: " + oS.fullUrl);
    }
}

我编写了一个关联规则,将包含 "urbandictionary" 的 URL 映射到此函数。

我是怎么想出来的:

我通过设置 Fiddler extension develoment in Visual Studio 解决了这个问题,这为 Fiddler API 提供了更好的智能感知。使用 go to definition,我可以方便地查看 Session class 上所有方法的列表。

示例:

...
        [CodeDescription("Returns true if request URI contains the specified string. Case-insensitive.")]
        public bool uriContains(string sLookfor);
        [CodeDescription("Copy an existing Session's response to this Session, bypassing the server if not already contacted")]
        public void utilAssignResponse(Session oFromSession);
        [CodeDescription("Copy an existing response to this Session, bypassing the server if not already contacted")]
        public void utilAssignResponse(HTTPResponseHeaders oRH, byte[] arrBody);
        [CodeDescription("Use BZIP2 to compress the response body. Throws exceptions to caller.")]
        public bool utilBZIP2Response();
        [CodeDescription("Apply Transfer-Encoding: chunked to the response, if possible.")]
        public bool utilChunkResponse(int iSuggestedChunkCount);
        [CodeDescription("Call inside OnBeforeRequest to create a Response object and bypass the server.")]
        public void utilCreateResponseAndBypassServer();
        [CodeDescription("Removes chunking and HTTP Compression from the Request. Adds or updates Content-Length header.")]
        public bool utilDecodeRequest();
        public bool utilDecodeRequest(bool bSilent);
        [CodeDescription("Removes chunking and HTTP Compression from the response. Adds or updates Content-Length header.")]
        public bool utilDecodeResponse();
...

然后我猜 utilCreateResponseAndBypassServer 是完成这项工作的工具。