【发布时间】:2019-09-18 04:30:04
【问题描述】:
我使用 fiddler 捕获了一些 HTTP 流量,但请求和响应都包含纯文本和乱码。
原始格式的示例请求:
开发人员建议先对请求进行 base64 编码,然后使用 deflate 进行压缩。同样,响应需要经过 base64 解码,然后解压缩。
如何在 JMeter 中处理这个问题?
【问题讨论】:
我使用 fiddler 捕获了一些 HTTP 流量,但请求和响应都包含纯文本和乱码。
原始格式的示例请求:
开发人员建议先对请求进行 base64 编码,然后使用 deflate 进行压缩。同样,响应需要经过 base64 解码,然后解压缩。
如何在 JMeter 中处理这个问题?
【问题讨论】:
安装Jmeter Plugin Custom JMeter Functions plugin,它提供了base64Encode和base64Decode函数,可用于您的用例。
${__base64Encode(test string)}
${__base64Decode(dGVzdCBzdHJpbmc=)}
【讨论】:
检查您的标题是否包含以下值或包括:-
Header Value: gzip,deflate
一般情况下,如果使用jmeter代理录制,应该会被捕获。
参考:-https://octoperf.com/blog/2017/10/24/enable-gzip-compression-jmeter/
用于JSR223采样器中的解码;-
import org.apache.commons.codec.binary.Base64;
vars.put("decoded_response", new String(Base64.decodeBase64(data)));
您需要传递数据字段或使用自定义插件尝试解决方案。
参考:-How to decode base 64 format in jmeter?
希望这会有所帮助。
【讨论】:
您可以使用 JSR223 PostProcessor 和 Groovy 语言对响应进行解码/解压缩,例如:
prev.setResponseData(new java.util.zip.GZIPInputStream(new ByteArrayInputStream(prev.getResponseDataAsString().decodeBase64())).getBytes())
prev 代表HTTPSampleResult 类实例,提供对其在当前上下文中的所有函数和属性的访问。
同样,您可以使用sampler 简写,即JSR223 PreProcessor 中的HTTPSamplerProxy 来压缩/编码请求。
查看Top 8 JMeter Java Classes You Should Be Using with Groovy 文章,了解有关在 Groovy 脚本中使用 JMeter API 组件的更多信息
【讨论】: