【问题标题】:JMeter handling of base64 encoding/decoding and deflate compression/uncompressionJMeter处理base64编码/解码和deflate压缩/解压缩
【发布时间】:2019-09-18 04:30:04
【问题描述】:

我使用 fiddler 捕获了一些 HTTP 流量,但请求和响应都包含纯文本和乱码。

原始格式的示例请求:

开发人员建议先对请求进行 base64 编码,然后使用 deflate 进行压缩。同样,响应需要经过 base64 解码,然后解压缩。

如何在 JMeter 中处理这个问题?

【问题讨论】:

    标签: jmeter base64 deflate


    【解决方案1】:

    安装Jmeter Plugin Custom JMeter Functions plugin,它提供了base64Encode和base64Decode函数,可用于您的用例。

    ${__base64Encode(test string)}
    ${__base64Decode(dGVzdCBzdHJpbmc=)}
    

    【讨论】:

      【解决方案2】:

      检查您的标题是否包含以下值或包括:-

      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?

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        您可以使用 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 组件的更多信息

        【讨论】:

        • 感谢您的回复。请注意,通过提琴手捕获的请求已经编码和压缩。我需要先解码然后解压缩,修改内容,编码然后压缩。
        猜你喜欢
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多