使用JMeter测试Duo 2FA绕过账号时遇304禁止错误求助
排查JMeter中Duo 2FA绕过场景304/403 Forbidden问题的方向
先确认返回码:304是缓存命中标识,并非权限拒绝;如果实际是403 Forbidden,按以下方向排查:
全链路请求对比
- 用JMeter的HTTP(S) Test Script Recorder录制浏览器完整的登录+应用访问流程,把录制好的脚本和你当前的脚本逐请求对比,重点检查是否遗漏Duo相关的回调请求(比如带
tx参数的请求)——即使账号绕过2FA,系统可能仍需该请求完成登录状态的确认。 - 逐行对比请求头:确保
User-Agent和浏览器完全一致,检查是否遗漏Referer、X-Requested-With等可能被后端校验的头字段。 - 核对请求方法、参数:登录请求的POST参数、后续请求的Query参数是否和浏览器完全匹配,比如
tx参数可能是登录会话的关键标识,必须在对应请求中传递。
- 用JMeter的HTTP(S) Test Script Recorder录制浏览器完整的登录+应用访问流程,把录制好的脚本和你当前的脚本逐请求对比,重点检查是否遗漏Duo相关的回调请求(比如带
Cookie有效性验证
- 放弃手动提取Cookie,依赖JMeter的HTTP Cookie Manager自动管理,确保开启了对HttpOnly、Secure Cookie的支持(JMeter默认支持,但需确认未在配置中禁用)。
- 对比浏览器DevTools的Cookie列表和JMeter Cookie Manager中的Cookie:检查domain、path属性是否完全匹配,避免因Cookie作用域错误导致未携带。
- 确认会话标识(如JSESSIONID)在登录后是否更新,后续请求是否携带了最新的会话Cookie——手动传递的旧Cookie可能已失效。
Duo绕过状态校验
- 检查登录请求是否携带了标识“绕过2FA”的参数,比如部分系统需要在登录时传递
skip_2fa或用户属性相关字段,即使账号后台配置了绕过,前端请求仍需明确告知后端。 - 查看Duo后台登录日志的细节:对比JMeter请求的IP、User-Agent是否和日志记录一致,是否有未被捕获的异常标记。
- 检查登录请求是否携带了标识“绕过2FA”的参数,比如部分系统需要在登录时传递
缓存与会话配置检查
- 调整HTTP Cache Manager:若测试时不需要缓存,可勾选“Use Cache Control/Expires header when processing GET requests”并禁用缓存;若返回304,确认是否是缓存策略导致的,可尝试移除Cache Manager后再测试。
- 检查JMeter的线程组配置:确保每次测试使用全新的会话,避免旧会话残留导致权限验证失败。
启用JMeter调试日志
- 修改
jmeter.properties文件,设置log_level.jmeter.protocol.http=DEBUG,重启JMeter后运行测试。 - 查看
jmeter.log文件,重点分析请求发送的Cookie、头信息、参数,找出与浏览器请求的差异点。
- 修改
内容的提问来源于stack exchange,提问作者kev
相关产品推荐
相关产品推荐

