[GH-ISSUE #1722] [Feature Request] Automatically decompress Brotli compressed response body #1715

Open
opened 2026-03-03 19:53:45 +03:00 by kerem · 4 comments
Owner

Originally created by @GalvinGao on GitHub (Jul 23, 2023).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/1722

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.

Originally created by @GalvinGao on GitHub (Jul 23, 2023). Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/1722 ## 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.
Author
Owner

@NghiaTranUIT commented on GitHub (Jul 25, 2023):

@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.

<!-- gh-comment-id:1648960234 --> @NghiaTranUIT commented on GitHub (Jul 25, 2023): @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.
Author
Owner

@GalvinGao commented on GitHub (Jul 25, 2023):

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

<!-- gh-comment-id:1648972954 --> @GalvinGao commented on GitHub (Jul 25, 2023): 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`: <img width="1175" alt="image" src="https://github.com/ProxymanApp/Proxyman/assets/12567059/6cc1cab9-847a-40f3-af18-418c24cb20aa"> The `Content-Encoding: br` body in `har`: <img width="1193" alt="image" src="https://github.com/ProxymanApp/Proxyman/assets/12567059/941c1db5-bf9c-4e37-9b74-9a8703d6ffc6">
Author
Owner

@NghiaTranUIT commented on GitHub (Jul 25, 2023):

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.

<!-- gh-comment-id:1648979417 --> @NghiaTranUIT commented on GitHub (Jul 25, 2023): It seems Proxyman could not decode your `br` body. I realize that Proxyman is using `google/brotli`, but with a [commit 5 years ago](https://github.com/google/brotli/tree/c6333e1e79fb62ea088443f192293f964409b04e). It's out of date. I'm going to upgrade it and send you a Beta build, let see if it can fix it.
Author
Owner

@NghiaTranUIT commented on GitHub (Jul 25, 2023):

@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

<!-- gh-comment-id:1649139031 --> @NghiaTranUIT commented on GitHub (Jul 25, 2023): @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](https://github.com/google/brotli/releases/tag/v1.0.9)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Proxyman#1715
No description provided.