Jmeter获取与使用cookie

JMeter登录接口测试技巧
本文详细介绍如何在JMeter中通过正则表达式提取器获取cookie,并设置cookie管理器及HTTP头文件管理器,实现登录接口的自动化测试。

1、登录接口下获取cookie
add > Post Processors > Regular Expression Extractor
添加> 后置处理器 > 正则表达式提取器
在这里插入图片描述
在这里插入图片描述
引用名称:cookie 的变量名称
正则表达式:sid=(.+?);
模版 : 111
模板是使用提取到的第几个值。因为可能有多个值匹配,所以要使用模 板。从 1 开始匹配,依次类推。这里只有一个,所以填写 “111” 即可
匹配数字:0,
表示如何取值。0 代表随机取值,1 代表全部取值。

2、添加cookie管理器
Tread Group > Add > Config Element > HTTP Cookie Manager
在这里插入图片描述

3、添加HTTP头文件管理器
Tread Group > Add > Config Element > HTTP Header Manager
在这里插入图片描述

### JMeter获取CAS登录Cookie的方法 在JMeter中,可以通过多种方式获取CAS登录的Cookie以完成登录流程。以下是几种常见的方法及其具体实现步骤: #### 方法一:使用HTTP Cookie管理器 JMeter内置的HTTP Cookie管理器能够自动处理和存储Cookie,并将其传递到后续请求中。通过配置HTTP Cookie管理器,可以确保每个线程(用户)都有独立的Cookie存储区域[^1]。 - 在测试计划中添加`HTTP Cookie管理器`。 - 配置目标服务器的域名,确保Cookie仅适用于特定域。 - 在登录请求中提交正确的用户名和密码,成功认证后,HTTP Cookie管理器会自动存储生成的Cookie。 #### 方法二:抓包并模拟登录接口 此方法涉及捕获登录过程中的网络请求,分析其参数和重定向逻辑,然后在JMeter中模拟这些请求。 - 使用工具(如Fiddler或浏览器开发者工具)抓取CAS登录过程中的所有请求。 - 分析登录过程中涉及的Service Ticket (ST) 和Ticket Granted Cookie (TGC) 的生成传递逻辑[^3]。 -JMeter中创建一个HTTP请求,模拟登录过程: - 提交用户名和密码到CAS Server。 - 获取生成的Service Ticket。 - 将Service Ticket附加到目标服务的请求中,验证身份。 ```python # 示例代码:使用Python脚本辅助分析抓包数据 import requests session = requests.Session() login_url = "https://cas.example.com/login" payload = { "username": "your_username", "password": "your_password", "service": "https://app.example.com" } response = session.post(login_url, data=payload) print("Cookies:", session.cookies.get_dict()) ``` #### 方法三:通过Selenium登录并提取Cookie Selenium是一种自动化测试工具,可以模拟真实用户的浏览器操作。结合JMeter,可以先通过Selenium登录CAS系统,提取生成的Cookie,再将其应用到JMeter的请求中[^2]。 - 安装Selenium库并配置WebDriver。 - 编写脚本,使用Selenium登录CAS系统。 - 提取登录成功后的Cookie,并将其传递给JMeter。 ```python # 示例代码:使用Selenium提取Cookie from selenium import webdriver driver = webdriver.Chrome() driver.get("https://cas.example.com/login") # 输入用户名和密码 driver.find_element_by_id("username").send_keys("your_username") driver.find_element_by_id("password").send_keys("your_password") driver.find_element_by_id("submit").click() # 提取Cookie cookies = driver.get_cookies() for cookie in cookies: print(cookie) driver.quit() ``` #### 方法四:利用CAS官方Jar包实现 如果对CAS协议有深入了解,可以使用CAS官方提供的Java库来实现登录逻辑。这种方法需要较高的开发能力,但可以完全控制登录流程。 - 下载并导入CAS客户端的Jar包。 - 编写Java代码,调用CAS客户端API完成登录。 - 将生成的Cookie传递到JMeter的HTTP请求中。 ```java // 示例代码:使用CAS官方Jar包进行登录 import org.jasig.cas.client.authentication.AuthenticationFilter; public class CasLoginExample { public static void main(String[] args) { String casServerUrl = "https://cas.example.com"; String serviceUrl = "https://app.example.com"; AuthenticationFilter filter = new AuthenticationFilter(); filter.setCasServerLoginUrl(casServerUrl + "/login"); filter.setService(serviceUrl); // 登录并获取Cookie System.out.println("Login successful. Extract cookies from the session."); } } ``` ### 注意事项 - 确保测试环境允许外部工具访问CAS系统。 - 对于复杂的认证机制,建议优先选择简单且易维护的方案。 - 如果使用Selenium或抓包方法,请注意可能存在的安全性和性能问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值