ProxyPin zstd 解压缩 Brotli 等现代编码
HTTP 响应体的常见编码
| 算法 | 来源 | 压缩率 | 速度 | 应用 |
|---|---|---|---|---|
| gzip | GZIP | 中等 | 快 | 最普及,几乎全站支持 |
| deflate | ZLIB | 中等 | 快 | gzip 的前身 |
| brotli | 高 | 慢 | 现代网站,HTTPS 常见 | |
| zstd | Facebook/Meta | 很高 | 快 | 移动端 App、内部服务 |
压缩率和速度的平衡:gzip 最快但压缩率一般;zstd 在压缩率和速度上都优于 gzip;brotli 压缩率最高但编码慢。
ProxyPin 的自动解压
ProxyPin 会读取 Content-Encoding 响应头,自动解压后显示明文:
Content-Encoding: gzip→ 自动 gunzipContent-Encoding: deflate→ 自动 inflateContent-Encoding: br(Brotli)→ 自动解压Content-Encoding: zstd→ v1.1.9+ 自动解压
解压失败的情况:
- 有些 App 用非标准的自定义压缩(不通过 Content-Encoding 声明)
- 加密压缩叠加(AES + zstd),需要先解密再解压
v1.1.9 的 zstd 支持
v1.1.9 更新日志中明确提到:新增 zstd 解码支持。这在移动端 App 中越来越常见——移动端带宽敏感,zstd 高压缩率可以节省流量。
如果看到乱码
如果 ProxyPin 没自动识别到压缩(比如服务端返回了压缩体但没带 Content-Encoding),或者解压后还是乱码,可能是:
- 自定义压缩(非标准 HTTP 编码)
- 压缩 + 加密叠加(先解密再解压)
- App 自己实现了压缩逻辑(需要逆向)
Brotli 的特殊点
Brotli 编码在 HTTPS + HTTP/2 环境下非常常见。如果用 HTTP/1.1 连接(没有 ALPN),服务器可能不返回 Brotli——这是 App 网络库的协商逻辑决定的。开启 ProxyPin 的 HTTP/2 支持后,Brotli 会正常工作。
二进制体的处理
图片、音视频等二进制文件不做文本解压,而是直接显示十六进制视图或预览。ProxyPin 会自动判断 Content-Type,对 image/* 做预览、对 application/json 做格式化。