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

K6脚本实现HTTP登录认证失败问题求助

K6脚本登录失败排查与修复

问题核心

你遇到的问题主要是认证方式误用 + 请求参数顺序错误:手动登录的页面几乎都是通过表单提交传递账号密码,而非HTTP Basic认证;同时你的http.post调用参数顺序不对,导致接口无法正确接收登录信息。

修复方案

1. 先确认登录接口的真实请求方式

打开浏览器开发者工具(F12),手动登录时抓包查看:

  • 看请求的Content-Type(通常是application/x-www-form-urlencoded)
  • 记下表单字段名(比如username/password,不同网站可能叫user/pass)

2. 表单提交适配脚本(绝大多数场景适用)

import http from 'k6/http';
import { check } from 'k6';

export default function () {
  // 替换为抓包得到的实际表单字段名和你的账号密码
  const loginForm = {
    username: 'admin',
    password: 'pass@1'
  };

  const requestOptions = {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  };

  // 注意post参数顺序:url → 请求体 → 配置项
  const res = http.post('https://mysiteexample.com/LogIn', loginForm, requestOptions);

  // 用check断言精准判断登录结果
  check(res, {
    '登录成功(状态码正常)': r => r.status === 200 || r.status === 302,
    '响应包含登录成功标识': r => r.body.includes('欢迎') || (r.json()?.success === true) // 根据实际响应调整
  });

  // 打印关键信息辅助排查
  console.log('响应状态码:', res.status);
  console.log('响应内容片段:', res.body.slice(0, 200));
}

3. 若确实需要Basic认证的修正脚本

如果确认接口支持Basic认证,调整参数顺序后的脚本:

import http from 'k6/http';
import encoding from 'k6/encoding';
import { check } from 'k6';

export default function () {
  const encodedAuth = encoding.b64encode("admin:pass@1");
  const requestOptions = {
    headers: {
      Authorization: `Basic ${encodedAuth}`,
    }
  };

  // 接口不需要请求体时,第二个参数传空字符串,第三个传配置项
  const res = http.post('https://mysiteexample.com/LogIn', '', requestOptions); 

  check(res, {
    '认证通过': r => r.status === 200 || r.status === 302
  });

  console.log('响应状态码:', res.status);
  console.log('响应JSON:', res.json() || '无JSON格式响应');
}

关键排查技巧

  • 必做:对比手动请求和脚本请求的所有细节(URL、请求头、请求体),差异就是问题所在
  • 别依赖console.log(res.json),先看res.status和res.body,很多接口返回的不是JSON
  • 用check断言替代单纯打印,能直接在测试报告里看到验证结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:05