如何在 fiddler 中使用 zlib 解码响应

How to decode response with zlib in fiddler

我知道有 Response body is encoded. Click to decode 但它不起作用。

我得到的响应是由 zlib 而非 gzip 编码的,并且响应 header 中没有 Content-Encoding: gzip

现在我可以将响应 body 保存到文件中,然后通过 Python 对其进行解码,但我真的很想看到 fiddler.[=16 中的漂亮内容=]

我该怎么办?

您可以在 Fiddler 中添加或编辑 headers。转到 Headers 检查器,然后 select 编辑菜单中的解锁以进行编辑选项。然后 headers 上的 right-click 并在上下文菜单中选择添加或编辑 Header。

因此你可以add/modifyContent-Encoding.

您也可以在 FiddlerScript 中执行此操作。

将此添加到 fiddler 脚本

public static ContextAction("force decode with deflate")
function AddEncoding(oSessions: Fiddler.Session[]){
    for (var x:int = 0; x < oSessions.Length; x++){
        oSessions[x].utilDecodeRequest();
        oSessions[x].oResponse.headers["Content-Encoding"]="deflate"
        oSessions[x].utilDecodeResponse();
    }
    UI.actUpdateInspector(true,true);
}

并且force decode with deflate选择会出现在右键菜单中

我没有足够的代表。发表评论,但我改进了 PaleNeutron 的片段。

  • 修复请求解码
  • 添加了检查 zlib header 的逻辑,这样我们就不会双重解码并创建一个空 request/response

在 FiddlerScript 选项卡中:

public static ContextAction("Force Decode (zlib)")
function AddEncoding(oSessions: Fiddler.Session[]){
    for (var x:int = 0; x < oSessions.Length; x++){
        if (oSessions[x].oRequest.headers["Content-Encoding"]=="zlib"){
            oSessions[x].oRequest.headers["Content-Encoding"]="deflate";
            oSessions[x].utilDecodeRequest();
        }
        if (oSessions[x].oResponse.headers["Content-Encoding"]=="zlib"){
            oSessions[x].oResponse.headers["Content-Encoding"]="deflate";
            oSessions[x].utilDecodeResponse();
        }
    }
    UI.actUpdateInspector(true,true);
}