Skip to content

使用代理服务器录制请求

使用代理服务器录制请求

简介

JMeter 使用代理服务器录制请求是指通过配置 JMeter 的 HTTP(S)代理服务器,将浏览器的 HTTP 请求通过代理服务器转发给目标服务器,并同时将这些请求记录下来,以生成 JMeter 的请求脚本。

具体来说,当将浏览器的代理设置为 JMeter 中配置的代理服务器的主机名和端口时,浏览器发送的所有 HTTP 或 HTTPS 请求将会经由 JMeter 的代理服务器进行转发。在这个过程中,代理服务器会记录下所有的请求信息,包括请求的 URL、请求方法、请求头、请求体等。

使用代理服务器录制请求的优点

通过使用代理服务器录制请求,可以实现以下目的:

  1. 从真实的用户操作中捕获和记录 HTTP 请求,以便后续进行性能测试。
  2. 方便地生成 JMeter 的请求脚本,无需手动构建每个请求。
  3. 能够捕获和录制由浏览器生成的动态参数,如会话 ID、验证码等,方便后续使用。

总体而言,使用 JMeter 的代理服务器录制请求能够快速、方便地将实际的用户操作转化为 JMeter 的请求脚本,并为进行性能测试提供便利。

使用代理服务器录制请求的步骤

录制压测脚本的场景

  • 压测对象:http://news.baidu.com
  • 压测页面:百度首页,百度新闻
  • 步骤:
    • 访问百度首页
    • 单击进入“百度新闻”

录制压测脚本的步骤

  1. 打开 JMeter 的 GUI 界面,新建压测脚本,添加 HTTP 代理服务器组件:
  • 步骤:测试计划(Test Plan) -> 添加(Add) -> 非测试元件(Non-Test Elements) -> HTTP 代理服务器(HTTP(S) Test Script Recorder)。

Alt text

  1. 添加线程组组件:
  • 步骤:测试计划(Test Plan) -> 添加(Add) -> 线程(Threads) -> 线程组(Thread Group)。

Alt text

  1. 添加录制控制器组件:
  • 步骤:线程组(Thread Group) -> 添加(Add) -> 逻辑控制器(Logic Controller) -> 录制控制器(Recording Controller)。

注意:使用录制脚本控制器,可以方便的对录制脚本进行统一清理操作。

Alt text

  1. 配置 HTTP(S) 测试脚本记录器:
  • 打开 HTTP(S) Test Script Recorder
  • 设定 Port 为 8888
  • 设定 Target Controller 为 Test Plan > Tread Group > Recording Controller(指定录制脚本的位置)。

如下图所示:

Alt text

  • 在 Requests Filtering 添加 “Include” 与 “Exclude” URL 正则匹配表达式

    • Include(包含模式):.*\.(baidu\.com).*
    • Exclude(排除模式):.*\.(js|css|PNG|jpg|ico|png|gif).*
    • 目的:避免录制过多没必要的请求,操作如下图所示:

Alt text

  1. 浏览器代理配置:
  • 打开浏览器,手动修改浏览器的代理服务器,地址设置为本机的 IP 地址,端口号设置为和 JMeter 设置的端口号一致,根据上一步骤,浏览器的代理服务器端口号设为 8888,如下图所示:

Alt text

  1. 执行录制:
  • 点击 start 按钮进行录制,即可获得百度新闻界面的请求,如下图所示:

Alt text

注意:录制抓取请求之前,需要安装 JMeter 的证书,否则无法抓取请求,JMeter 证书位于 bin 目录中,证书名为 ApacheJMeterTemporaryRootCA.crt,需要将其安装在受信任的证书中,才能抓取请求。证书配置步骤与 Charles 一致。

总结

  • 代理服务器录制请求的简介。
  • 使用代理服务器录制请求的优点。
  • 使用代理服务器录制请求的步骤。