python获取Set-Cookies中的JSESSIONID值

在Python接口自动化测试中,遇到使用requests库获取登录请求后的cookie时,直接通过`res.cookies`无法获取。解决方法是创建session会话,然后通过`session.cookies`获取。但直接获取得到的是RequestsCookieJar对象,需要使用`requests.utils.dict_from_cookiejar`转换为字典形式便于提取。本文详细介绍了这个问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近重新梳理python接口自动化测试,遇到了一个问题。
发送登录请求后,用requests.cookie获取不到cookie,如图:
在这里插入图片描述

#通过requests发送请求
res = requests.get(url=url,headers=headers)
print("获取状态码:",res.status_code)
print("获取headers:",res.headers)
# print("获取body:",res.text)
print(res.cookies)

结果:
在这里插入图片描述
直接拿res.cookie是获取不到的

需要通过创建session会话来进行获取

# 通过创建session会话请求后获取
session = requests.session()
session.get(url=url,headers=headers)

直接使用session.cookies获取的是这种:这种不利于提取cookie

print("直接获取cookie:",session.cookies,type(session.cookies))
# 结果:
<RequestsCookieJar[<Cookie userInfoCookie= for 192.168.2.102/>, <Cookie JSESSIONID=C5A2BC3120C529FF25F22EF046AD8DE6 for 192.168.2.102/recruit.students>]> <class 'requests.cookies.RequestsCookieJar'>

需要使用requests.utils.dict_from_cookiejar进行获取

cookie = requests.utils.dict_from_cookiejar(session.cookies)
print("通过utils.dict_from_cookiejar获取cookie:",cookie['JSESSIONID'])
# 结果
通过utils.dict_from_cookiejar获取cookie: C5A2BC3120C529FF25F22EF046AD8DE6
### 回答1: 在Python中使用requests库可以轻松获取JSESSIONID。 首先需要导入requests库: ```python import requests ``` 然后发送一个请求获取JSESSIONID,例如: ```python session = requests.Session() response = session.get('http://example.com') jsessionid = response.cookies['JSESSIONID'] print(jsessionid) ``` 或者使用下面的方式来获取JSESSIONID ```python session = requests.Session() response = session.get('http://example.com') print(response.cookies.get_dict()['JSESSIONID']) ``` 需要注意的是,如果JSESSIONID在响应头中而不是在响应体中,那么需要从响应头中获取,例如 ```python session = requests.Session() response = session.get('http://example.com', headers={'Cookie': 'JSESSIONID=...'}) print(response.headers.get('Set-Cookie')) ``` 请求的服务器是否将JSESSIONID返回在响应中,取决于服务器的配置。 ### 回答2: Python可以通过使用requests库来获取JSESSIONID。具体步骤如下: 1. 首先,使用`pip install requests`来安装requests库。 2. 导入requests库:`import requests`。 3. 使用requests库发送一个GET或POST请求到目标网址,例如:`response = requests.get(url)`或`response = requests.post(url, data=payload)`。如果登录需要提供用户名和密码等信息,可以使用`data`参数传递。 4. 查看服务器返回的响应头部,以获取JSESSIONID。可以通过`response.headers`属性来获得响应头部信息。 5. 检查响应头部中是否包含`Set-Cookie`字段,该字段的就是JSESSIONID。如果有多个JSESSIONID,则可以使用正则表达式或字符串操作来提取所需的JSESSIONID。 下面是一个简单的例子,展示了如何获取JSESSIONID: ```python import requests url = 'https://example.com/login' # 替换为目标网址 # 构造请求数据 payload = { 'username': 'your_username', 'password': 'your_password' } # 发送POST请求,并获取响应 response = requests.post(url, data=payload) # 获取JSESSIONID if 'Set-Cookie' in response.headers: cookies = response.headers['Set-Cookie'] jsessionid = cookies.split(';')[0].split('=')[1] print('JSESSIONID:', jsessionid) ``` 请注意,这只是一个简单的示例,具体的代码可能因网站的登录方式和响应头部的设置而有所不同。需要根据具体情况进行调整。 ### 回答3: 在Python获取JSESSIONID的方法如下: 通过HTTP请求库(如requests模块)发送HTTP请求时,服务器会在响应头中返回JSESSIONID。可以通过获取响应头中的Set-Cookie字段来获取JSESSIONID。 具体步骤如下: 1. 导入requests模块:`import requests` 2. 发送HTTP请求,并保存响应:`response = requests.get(url)` 3. 获取响应头中的Set-Cookie字段:`cookie = response.headers.get('Set-Cookie')` 4. 解析出JSESSIONID:可以使用正则表达式或者其他字符串处理方法进行解析。 示例代码如下: ``` import requests import re url = "http://example.com" response = requests.get(url) cookie = response.headers.get('Set-Cookie') # 使用正则表达式提取JSESSIONID pattern = re.compile("JSESSIONID=(.*?);") match = pattern.search(cookie) if match: jsessionid = match.group(1) print("JSESSIONID:", jsessionid) else: print("未获取JSESSIONID") ``` 上述代码会发送一个GET请求到指定的url,并从响应头的Set-Cookie字段中获取JSESSIONID。使用正则表达式匹配JSESSIONID,并打印出来。 需要注意的是,获取JSESSIONID的具体方式可能会根据服务器的设置而有所不同。以上代码仅作为示例,实际使用中可能需要根据实际情况进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值