通过网络代理工具下载或查看作为多部分请求(PNG、PDF)发送的文件?

Download or view the files sent as multi-part Request (PNG, PDF) through network proxy tool?

如何通过软件工具下载或查看作为多部分请求(例如 PUT)发送的文件?

是否有任何方法可以使用特定工具(如 macOSX 上的 CharlesProxy)来完成此操作,以下载和查看作为请求的一部分(PUT 多部分请求)发送的文件?我通常通过代码更改将文件保存到沙箱来解决此类问题。理想情况下,需要一些可以被我们的 QA 使用并且不需要任何代码修改的东西。

macOS 上的 Charles Proxy 足以满足大多数 dev/QA 需求,例如:

但是,在 Charles Proxy 的 HTTP 请求中没有显示或下载文件的选项 4.x:

Charles Proxy 4.x(及更早版本)允许保存响应文件,此屏幕截图中的示例 pdf:

这可以通过手动编辑二进制文件来完成。这有点棘手,但可以在多部分HTTP请求中保存文件,而不需要对项目代码进行任何修改。

步骤如下(已在 Charles v4.2.8 和 macOS v10.12.6 上验证):

  1. 保存请求。右击记录的 HTTP 请求(发送文件的请求),然后单击 "Save Request..."。这将以二进制格式保存整个 HTTP 请求。

  2. 检查请求的十六进制表示。左键单击记录的 HTTP 请求,然后单击 "Request" 面板的 "Hex" 选项卡。这将显示请求的二进制表示,以及一些已解析的文本。

  3. 编辑保存的请求。使用支持二进制的编辑器打开保存的请求(步骤 1),例如 Sublime Text。然后,根据步骤 2 的结果删除所有 non-image 二进制代码。特别是,删除(并包括)第一个空行之前的每个字节(macOS 中的 0d0a0d0a 和 Windows,0a0a in Linux), 并删除尾字节。例如,以下截图表示步骤 2 的请求字节,所选字节将被删除(请注意 0d0a 字节,因为本实验是在 Mac 上进行的): ...

  4. 保存图像文件。第 3 步完成后保存文件。然后,根据步骤2中的Content-Type值追加文件扩展名。在本实验中,Content-Typeimage/png,因此在文件名后追加.png。[=21] =]

就是这样。您现在可以打开 xxx.png 文件。这是一个纯图像文件。

注意:本实验只包含1个文件,但该策略在请求中有多个文件上传时有效。