【发布时间】:2014-05-12 13:18:34
【问题描述】:
为了复制一些用户在使用我的应用程序时遇到的问题,我需要模拟一个公司代理服务器,它解压缩 GZIP 的 http 流量,并且在将其传递到目标服务器之前不重新压缩它。用户收到错误“GZIP 标头中的幻数不正确”,我怀疑代理服务器没有重新压缩解压缩的 GZIP 流量。
有没有办法可以使用 Fiddler 进行模拟?具体来说,我认为我需要模拟解压缩正文的代理,并且可能不更改标题以匹配。
【问题讨论】:
为了复制一些用户在使用我的应用程序时遇到的问题,我需要模拟一个公司代理服务器,它解压缩 GZIP 的 http 流量,并且在将其传递到目标服务器之前不重新压缩它。用户收到错误“GZIP 标头中的幻数不正确”,我怀疑代理服务器没有重新压缩解压缩的 GZIP 流量。
有没有办法可以使用 Fiddler 进行模拟?具体来说,我认为我需要模拟解压缩正文的代理,并且可能不更改标题以匹配。
【问题讨论】:
是的,Fiddler 可以以任何你喜欢的方式操纵 HTTP 请求和响应。
首先,请确认您的应用程序 GZIP 是 request 正文。虽然压缩响应很常见,但由于多种原因,压缩请求却很少见。
之后,您可以执行以下操作:
Rules > Customize Rules。OnBeforeRequest。在方法内部,添加以下代码:
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
}
保存脚本。
【讨论】:
试一试:
最近,我发现 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
【讨论】: