从 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
是完成这项工作的工具。
我正在尝试使用 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
是完成这项工作的工具。