接口测试中如何利用session对象自动携带cookie,发起请求

本文介绍了如何通过手动设置headers中的cookie以及使用requests的Session对象来自动化处理网站cookie。讨论了手动方法的缺点和Session对象在处理cookie方面的优势,包括避免重复编写和处理cookie的有效期问题。
摘要由CSDN通过智能技术生成

前提条件:网站采用的是cookie和session机制

一、通过cookie手动处理:通过抓包工具中的cookie赋值到headers中

存在的问题:1、编写麻烦

                      2、cookie通常都会存在有效时长

                      3、cookie中可能存在实时变化的局部数据

具体代码实现如下:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Cookie':'s=ae1m28yh3j; cookiesu=381702451324630; __utma=1.359431106.1702451326.1702451326.1702451326.1; __utmz=1.1702451326.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); device_id=c24a03a44f4b6fb131bd43818d4674c3; xq_a_token=a97fa15a5bb947c53ed434a6c0364dd03f36962c; xqat=a97fa15a5bb947c53ed434a6c0364dd03f36962c; xq_r_token=457987e3f3df9d22b53ad50b975087ff84ee9a79; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTcwNDU4NzkwNCwiY3RtIjoxNzAyNzM3NDk3NzY1LCJjaWQiOiJkOWQwbjRBWnVwIn0.Vma0e2sz4EG49phYCBVf-ujeUnM8cdqT7MNDudSnQ7AIfxvEJlMSh0-_eSSOLTy-BLYWFoFZ2i8scV601XOekcUTNq7USkiULcfRCe--bVI1lxLu53pyBPCc_F-MJ_hpselNJOk89t68Hbp6Q4blTvELgsGw7sGGbw8h5gYEyzEkvj-Ah5Ipv8gj4Am5j1mrLpYHq31qJcc6ng2_25iAvYY75plRPGsNuirIBhK0Ou9axzB0zflTM7MPgK65T2BLirQyOvi-YnakFNwNeCiiRyB1av78fbxzDfc3w0CIuN_o7IszhRQWh_YPVJL3X5eeM-7P7EFnKX264CTp776Jgg; u=381702451324630; Hm_lvt_1db88642e346389874251b5a1eded6e3=1702451326,1702737553; acw_tc=2760779517027393599365156eb3ab4ff9bc66794e3cfb806b4e8a6ead6733; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1702740714',
}


url='https://xueqiu.com/statuses/hot/listV2.json'
# 传递给服务器端的数据
param = {
    "since_id": "-1",
    "max_id": "572823",
    "size": "15",
}
res=requests.get(url=url,params=param,headers=headers)
print(res.json())

二、通过session对象实现自动处理cookie。

        具体步骤:

        1.创建一个空白的session对象

        2.需要使用session对象发起请求,请求的目的是为了捕获cookie

                注意:如果session对象在发请求的过程中,服务器端产生了cookie,则cookie会自动存                             储在session对象中

        3.使用携带cookie的session对象,对目的网址发起请求,就可以实现携带cookie的请求发                  送,从而获得想要的数据。

注意:session对象至少需要发起两次请求

        1.第一次请求的目的是为了捕获存储cookie到session对象

        2.后次的请求,就是携带cookie发起请求了

import requests
#1.创建一个空白的session对象
session = requests.Session()

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
main_url = 'https://xueqiu.com/'
#2.使用session发起的请求,目的是为了捕获到cookie,且将其存储到session对象中
session.get(url=main_url,headers=headers)

url = 'https://xueqiu.com/statuses/hot/listV2.json'
param = {
    "since_id": "-1",
    "max_id": "572823",
    "size": "15",
}
#3.就是使用携带了cookie的session对象发起的请求(就是携带者cookie发起的请求)
response = session.get(url=url,headers=headers,params=param)
data = response.json()
print(data)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值