reqable-app icon indicating copy to clipboard operation
reqable-app copied to clipboard

[bug] 支持配置zlib非默认压缩参数

Open Haocen2004 opened this issue 1 year ago • 11 comments

Describe the bug 读取zlib压缩过的请求体时出现错误 FormatException: Filter error, bad data 同时也无法使用导出功能导出请求体 只能使用导出->请求体(原始)获取hex数据 很抱歉因为数据安全问题无法提供测试用例 只能提供请求头(未提供的请求头则为不存在 如Accept-Encoding)

Content-Type: application/json
User-Agent: xxx
charset: UTF-8
Content-Encoding: deflate
Content-Length: 43
Expect: 100-continue

To Reproduce Steps to reproduce the behavior: 调试界面开始获取网络流量 被调试app发送zlib压缩过的请求 出现错误

Expected behavior 正确显示请求体

Screenshots image Information

  • Platform: windows
  • OS: 11
  • Arch: x86-64
  • App Version: 2.4.0 (65)

Haocen2004 avatar Jan 16 '24 16:01 Haocen2004

@Haocen2004 感谢反馈,能复现,将在下个版本修复。

MegatronKing avatar Jan 17 '24 03:01 MegatronKing

@Haocen2004 v2.4.1版本已修复。

MegatronKing avatar Jan 18 '24 06:01 MegatronKing

@MegatronKing raw的zlib deflate body同样出现FormatException: Filter error, bad data错误 希望能提供选项设置deflate的window size

Doc of zlib for more detail about window size: https://www.zlib.net/manual.html#Advanced

freezewind avatar May 08 '24 17:05 freezewind

@freezewind 请问有具体的例子吗?我测试复现下看看。

MegatronKing avatar May 09 '24 08:05 MegatronKing

Platform: Android 13
App Version: 2.15.0

这是我复现的例子 12_res_raw.txt 用reqable发request到别的机械的伺服器 在REST API request setting的proxy设置为Traffic 在REST API里能正常看到response body 但Traffic的response body出现FormatException: Filter error, bad data @MegatronKing

freezewind avatar May 09 '24 14:05 freezewind

@freezewind 你好,我需要更多的信息来处理这个问题。正常情况下,客户端和服务器一般都是采用默认的压缩参数,默认参数我测试也是没有问题的。你遇到的这个问题,是否是客户端和服务端协商好了非默认的压缩参数?那么是如何协商的,客户端和服务端私下分别写死吗?

MegatronKing avatar May 11 '24 01:05 MegatronKing

@MegatronKing 你好,客户端和服务端都是私下分别直接写死用非默认的压缩参数的。 如果不方便自动处理的话,希望能有压缩参数设置。

freezewind avatar May 11 '24 03:05 freezewind

@MegatronKing 你好,请问这问题能不能处理吗?现在每次都要导出raw body处理,十分麻烦。 还有出现error的body只能从android端导出,不能从协同使用中的Windows端导出。 如果这问题还需要时间处理,能不能先允许从协同使用中的Windows端导出?

freezewind avatar May 31 '24 12:05 freezewind

如果希望用户自己配置,必然要做一个UI设置界面。而zlib有不少参数,例如level,windowBits,strategy等,测试也需要不少时间。考虑到私下协商参数这个需求很小众,roi非常低,所以这个功能优先级不会很高。

MegatronKing avatar Jun 04 '24 04:06 MegatronKing

对于临时的解决方案,你可以挂个python脚本,用自定义zlib参数解压后设置给响应体,然后正常在reqable中查看。

def onResponse(context, response):
  response.headers.remove('content-encoding')
  # 自定义参数解压
  decompressed = zlib.decompress(response.body.payload)
  # 将解压的数据替换给响应体
  response.body.text(decompressed)
  # Done
  return response

Reqable的脚本功能请参考:https://reqable.com/zh-CN/docs/capture/script

MegatronKing avatar Jun 04 '24 04:06 MegatronKing

明白的,开发ui需时。 没发现到脚本功能,感谢提供临时解决方案。

freezewind avatar Jun 07 '24 06:06 freezewind