【问题标题】:Can I make Fiddler unzip outbound traffic?我可以让 Fiddler 解压缩出站流量吗?
【发布时间】:2014-05-12 13:18:34
【问题描述】:

为了复制一些用户在使用我的应用程序时遇到的问题,我需要模拟一个公司代理服务器,它解压缩 GZIP 的 http 流量,并且在将其传递到目标服务器之前不重新压缩它。用户收到错误“GZIP 标头中的幻数不正确”,我怀疑代理服务器没有重新压缩解压缩的 GZIP 流量。

有没有办法可以使用 Fiddler 进行模拟?具体来说,我认为我需要模拟解压缩正文的代理,并且可能不更改标题以匹配。

【问题讨论】:

    标签: proxy gzip fiddler


    【解决方案1】:

    是的,Fiddler 可以以任何你喜欢的方式操纵 HTTP 请求和响应。

    首先,请确认您的应用程序 GZIP 是 request 正文。虽然压缩响应很常见,但由于多种原因,压缩请求却很少见。

    之后,您可以执行以下操作:

    1. 在 Fiddler 中,单击 Rules > Customize Rules
    2. 滚动到OnBeforeRequest
    3. 在方法内部,添加以下代码: if (oSession.oRequest.headers.ExistsAndContains("Content-Encoding", "gzip")) { oSession.utilDecodeRequest(); // Decompress request and remove header oSession.oRequest["Content-Encoding"] = "gzip"; // Put header back oSession["ui-backcolor"] = "yellow"; // Mark the session }

    4. 保存脚本。

    【讨论】:

    • 是的,我有自定义代码来压缩请求(我现在很遗憾在处理压缩请求时代理服务器有问题!)。但是,我的“请求”是几 MB 的 XML,不压缩它会大大降低应用程序的速度。我正在考虑删除我所有的自定义请求 GZipping,而是通过 HTTPS 发送(无论如何它应该压缩所有内容)。
    • 我不知道我的应用程序代码是否错误,但如果不是,那么看起来两个不同的代理服务器实际上解压缩了请求正文,同时将 Content-encoding 标头设置为“gzip” " :(
    • HTTPS 不会“压缩所有内容”,但通常会阻止代理服务器查看流量。
    【解决方案2】:

    试一试:

    最近,我发现 fiddler 中的 GZIP zip/unzip 功能无法正常工作。有一些基于 HTTP 协议的应用程序,也有使用 GZIP 格式压缩 HTTP 请求和响应的应用程序。所以我决定使用 Fiddler 脚本编辑器编写一些脚本来转换和提取 GZIP 格式的请求。这是代码,复制到CustomRules.js文件(Rules---->Customize Rules)

    http://yossi-yakubov.blogspot.fr/2010/05/fiddler-gzip-issue.html

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 2023-04-10
      相关资源
      最近更新 更多