如何在 Fiddler 中显示 HTTP 请求的大小?

12
我想在Fiddler的会话列表中显示每个请求的大小。我尝试过的是在CustomRules.js文件中添加自定义列:
public static BindUIColumn("RequestSize")
function CalcMethodCol(oS: Session)
{
  if (null != oS.requestBodyBytes)
    return oS.requestBodyBytes.Length; //this is the relevant line
  else
    return "?";
}

当我这样做时,Fiddler尝试加载脚本会导致错误。

如果我将带有注释的那一行改为以下内容:

    return typeof(oS.requestBodyBytes.Length);

然后 Fiddler 在 RequestSize 列中显示“number”。因此,我猜离我的目标不远了。只是我不知道如何显示 requestBodyBytes 字段的大小。

有什么提示可以指出我错在哪里或缺少什么吗?

2个回答

10

更新:在现代版本的 Fiddler 中,您可以右键单击列标题,选择“自定义列”,然后添加 Miscellaneous > Request Size 列。


根据您的需求,这可能并不是您想要做的,因为它只显示请求正文的长度,而不包括标头的大小。

以下是改进版本:

public  static  BindUIColumn("Req-Size")
function  CalcReqSize(oS:  Session){        
  if (null == oS.oRequest) return String.Empty;
  var cBytesOut: int = 0;

  if (null != oS.requestBodyBytes) cBytesOut += oS.requestBodyBytes.LongLength; 
  if ((null != oS.oRequest) && (null != oS.oRequest.headers)) cBytesOut += 
  oS.oRequest.headers.ByteCount() ; 
  return cBytesOut.ToString();
}

在Fiddler 2.3.9.1beta中测试后,requestBodyBytes.LongLength将变为requestBodyBytes.Length。 - Andrea Balducci
1
LongLength和Length返回相同的值。 - EricLaw
我不得不使用var cBytesOut:int = 0,否则 Fiddler 会抱怨该函数返回的是 System.Object 而不是字符串。 - Kevin Doyon

5

好的,我知道我离正确答案不远了。这是我的问题的答案。

将此脚本放入CustomRules.js中,将打印出fiddler中HTTP请求的长度/大小:

public  static  BindUIColumn("Req-Length")
function  CalcMethodCol(oS:  Session){
    if (null != oS.oRequest)
            return oS.requestBodyBytes.LongLength.ToString();
        else
            return String.Empty;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接