接口测试课程3(JMeter)

📅 2026/7/16 9:48:07
接口测试课程3(JMeter)
问题记录请求头设置问题问题使用JMeter发送HTTP请求时服务器或WAF返回错误或拦截响应。原因JMeter的默认请求头如User-Agent: Apache-HttpClient/4.5.x特征明显服务器/防火墙能轻易识别为非浏览器流量从而触发安全策略或拒绝服务。解决方案在JMeter线程组下添加“HTTP信息头管理器”。添加自定义请求头名称User-Agent值设置为真实浏览器标识例如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36必要时可添加其他常见浏览器请求头Accept、Accept-Language、Referer等进一步模拟真实浏览器行为。图解WAFWeb应用防火墙拦截问题问题JMeter发起的请求被阿里云或其他WAF拦截响应中出现acw_ctc类Cookie、308重定向或HTML挑战页面。原因非浏览器特征WAF通过User-Agent、请求频率、Cookie缺失等特征识别出非人工流量。强制HTTPSWAF或后端服务器配置了强制SSL策略将HTTP请求重定向至HTTPS。JS挑战WAF要求客户端执行JavaScript验证而JMeter无法执行JS因此无法完成验证。解决方案按推荐顺序添加“HTTP Cookie管理器”保持默认空配置让JMeter自动存储和发送服务器返回的Cookie。伪装User-Agent详见第一部分让请求头部看起来像真实浏览器。直接使用HTTPS协议在HTTP请求中将“协议”改为https端口留空或填443避免触发重定向。若无法使用HTTPS则勾选“自动重定向”非“跟随重定向”确保重定向时POST方法和请求体不被篡改。若拥有服务器权限可将测试机IP或特定Header加入WAF白名单或临时调整WAF策略为“观察”模式。对于极严格的JS挑战可手动用浏览器获取有效Cookie后填入Cookie管理器但此方法时效性差不推荐长期使用。图解未设置请求头未选择重定向选择跟随重定向选择自动重定向JMeter自动重定向和跟随重定向首先必须明确在JMeter中这两个模式对Cookie的处理机制有本质不同核心分界线在于“是否依赖HTTP Cookie管理器”。1. 自动重定向勾选“自动重定向”底层逻辑JMeter使用底层的 HttpClient 或 URLConnection 的内置重定向处理器。当服务端返回3xx如302/308时JMeter在本次请求的内部自动完成跳转不会将中间响应如302页面返回给JMeter的结果树。Cookie处理机制关键临时内存缓存在这一次请求的执行过程中JMeter的底层引擎会自动提取重定向响应头中的 Set-Cookie并将其临时存储在本次请求的内存上下文中用于后续的重定向目标请求。不依赖Cookie管理器即使你没有添加“HTTP Cookie管理器”这种临时缓存机制依然生效。这就是你最初开启“自动重定向”时登录成功的根本原因——WAF下发的 acw_ctc Cookie被临时保存并带到了重定向后的HTTPS请求中。致命缺点“失忆”症这个Cookie不会被持久化到JMeter的公共Cookie存储区。这意味着本次请求结束即这个采样器执行完毕后这个Cookie就丢失了。当你发起下一个独立的请求比如“查询列表”时JMeter不会携带这个CookieWAF会再次拦截你。2. 跟随重定向不勾选“自动重定向”即默认模式底层逻辑JMeter将重定向过程拆解为多个独立的采样器。你会先在“查看结果树”中看到第一个请求返回了 308 Permanent Redirect然后JMeter再自动发起第二个请求去访问 Location 指定的地址。Cookie处理机制关键独立请求默认不共享因为这是两个独立的采样器执行JMeter在默认情况下没有Cookie管理器时不会将第一个请求响应中的 Set-Cookie 传递给第二个请求。这就是你关闭“自动重定向”后登录失败的原因——拿到WAF的Cookie后没有传下去。依赖Cookie管理器如果你添加了“HTTP Cookie管理器”情况就变了。管理器会拦截并存储第一个请求返回的 Set-Cookie然后在第二个请求以及后续所有请求发起前自动从存储区匹配域名并添加到请求头中。此时跳转才能成功。JMeter接口测试操作构建过程首先在测试计划中添加线程组、HTTP请求默认值配置元件把重复度高的协议、IP地址端口号填入HTTP请求默认值配置元件然后在线程组中添加信息头管理器、查看结果树、请求结构如下。请求设置一个完整的请求包含请求行、请求头和请求体而在JMeer中有必须有这些才能成功发送请求。请求行在HTTP请求默认值配置元件和HTTP请求设置、请求头需要添加HTTP信息头管理器设置、请求体需要在请求中的消息体数据中设置。断言响应断言选项作用示例响应文本检查响应Body最常用检查{code:200}是否包含200请求头检查请求头的内容检查请求是否携带了正确的Content-Type请求数据检查发送的请求Body检查提交的数据是否符合预期格式响应代码检查HTTP状态码如200、404、500断言200URL样本检查请求的完整URL断言是否访问了正确的URL文档(文本)检查HTML/XML等文档内容的文本网页测试时检查页面显示文字json断言解决合同号不可重复的思路手动解决就是用手改。随机数使用JMeter内置函数可以实现数据库操作第一步创建数据库连接配置器第二步填写数据库连接信息第三步创建连接池请求第四步填写数据库操作语句