You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter的JSR223 PreProcessor在GitHub生成OTP失败,请求技术指导

解决GitHub Actions中JMeter脚本无法生成OTP(org.jboss.aerogear)及406错误问题

你的问题核心是GitHub Actions环境下的JMeter默认缺少org.jboss.aerogear的OTP生成依赖,而本地JMeter已经手动添加过该依赖,所以本地运行正常。406错误本质是OTP生成失败导致请求参数无效,服务器拒绝接受请求。以下是具体解决步骤:

1. 确认所需依赖包

你需要两个关键jar包(版本需匹配你本地使用的版本):

  • aerogear-otp-java-[版本号].jar:OTP生成核心库
  • commons-codec-[版本号].jar:aerogear-otp的依赖库

2. 在GitHub Actions工作流中添加依赖

有两种可行方式:

方式一:工作流中直接下载依赖到JMeter lib目录

在你的GitHub Actions YAML配置中,添加下载依赖的步骤,示例如下:

- name: Set up JMeter
  uses: justb4/jmeter-action@v1
  with:
    jmeter-version: '5.6.3' # 务必匹配你本地使用的JMeter版本

- name: Download Aerogear OTP dependencies
  run: |
    # 替换为你需要的版本号
    AEROGEAR_VERSION="1.0.0"
    COMMONS_CODEC_VERSION="1.15"
    
    curl -L -o $JMETER_HOME/lib/aerogear-otp-java-${AEROGEAR_VERSION}.jar https://repo1.maven.org/maven2/org/jboss/aerogear/aerogear-otp-java/${AEROGEAR_VERSION}/aerogear-otp-java-${AEROGEAR_VERSION}.jar
    curl -L -o $JMETER_HOME/lib/commons-codec-${COMMONS_CODEC_VERSION}.jar https://repo1.maven.org/maven2/commons-codec/commons-codec/${COMMONS_CODEC_VERSION}/commons-codec-${COMMONS_CODEC_VERSION}.jar

方式二:将依赖包存入项目仓库,工作流中复制到JMeter lib

  1. 在项目根目录创建jmeter-lib文件夹,把下载好的两个jar包放入其中
  2. 在工作流中添加复制步骤:
- name: Set up JMeter
  uses: justb4/jmeter-action@v1
  with:
    jmeter-version: '5.6.3'

- name: Copy custom dependencies to JMeter lib
  run: cp jmeter-lib/*.jar $JMETER_HOME/lib/

3. 验证依赖是否添加成功

可以在工作流中加一步验证,确保jar包已正确放入JMeter lib目录:

- name: Verify dependencies exist
  run: ls $JMETER_HOME/lib | grep -E 'aerogear|commons-codec'

4. 额外排查406错误的注意事项

  • 检查JMeter请求的Accept请求头:服务器可能对Accept头有严格要求,本地环境的默认配置可能符合要求,但GitHub环境中JMeter的默认头可能需要手动调整
  • 确认时间同步:OTP基于时间生成,GitHub Actions服务器的系统时间如果和本地偏差较大,会导致生成的验证码无效,进而触发406错误

内容的提问来源于stack exchange,提问作者Aditya Belgaonkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:40:38