ProxymanApp / Proxyman

Modern. Native. Delightful Web Debugging Proxy for macOS, iOS, and Android ⚡️
https://proxyman.io
5.56k stars 185 forks source link

[Feature Request] Automatically decompress Brotli compressed response body #1722

Open GalvinGao opened 1 year ago

GalvinGao commented 1 year ago

Description

Currently, Proxyman iOS App doesn't seems to be supporting Brotli decompression out of the box. I have to export the response body and decompress it using unbrotli, which loses all of the awesome feature (such as TreeView) from Proxyman and instead I have to open the response (typically a JSON) in external programs like VSCode and inspect the response from there.

It would be awesome if the Proxyman iOS App can decompress the Brotli response body based on the Content-Encoding header returned by the server!

Why this feature/change is important?

For one or two responses this might be OK, but for just a bit more responses and the process would feel much more devastating. Considering that Cloudflare supported Brotli compression a while ago, this feature would be a very useful one to have when requesting any modern sites that uses the Brotli compression algorithm.

NghiaTranUIT commented 1 year ago

@GalvinGao Proxyman already supports brotli decompression as long as the Content-Encoding is br.

I guess your Response Header doesn't have the Content-Encoding, right? So Proxyman doesn't know what decoder should be used -> Use raw binary.

GalvinGao commented 1 year ago

I see. Thanks for the information! I just double checked and it seems that there's a small discrepancy of how Proxyman handles the proxymanlogv2 file (that I captured on my iPhone using the Proxyman iOS App and the builtin VPN-based capture) and the har (that I captured on macOS using the Proxyman macOS App and the HTTP Proxy-based capture) file. Due to the sensitive nature of those files, unfortunately, I am not able to share the files that I've encountered the issue with, but here are some screenshots for a better explanation. Despite having Content-Encoding: br, the Body in proxymanlogv2 still only gives a hex viewer.

The Content-Encoding: br body in proxymanlogv2:

image

The Content-Encoding: br body in har:

image
NghiaTranUIT commented 1 year ago

It seems Proxyman could not decode your br body.

I realize that Proxyman is using google/brotli, but with a commit 5 years ago. It's out of date.

I'm going to upgrade it and send you a Beta build, let see if it can fix it.

NghiaTranUIT commented 1 year ago

@GalvinGao if you don't mind, let's try this beta build: https://download.proxyman.io/beta/Proxyman_4.9.0_Update_1.0.9_brotli.dmg

The Brotli library is updated to the latest tag, 1.0.9