解决 requests cookies 为空的坑

简介: requests cookies 为空的一个坑,两种方案轻松解决。

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/5d14f0d7.html


你好,我是测试蔡坨坨。

我们在做接口自动化测试的时候,一般会通过调用登录接口来获取cookies。

有时候,requests 返回的 cookies 会为空,原因是因为链接发生了 301/302 重定向跳转,而 cookies 是跟着第一个响应返回的,第二个响应没有返回 Set-Cookie header。所以直接读取 r.cookies 就是空的,但是在 session.cookies 中是有数据的。

这里提供两种解决方案。

方法1 关闭重定向

在请求参数中加入"allow_redirects": False关闭重定向。

    def login(self):
        req = {
            "url": self.url + "/passport/login",
            "method": "post",
            "data": {
                "username": self.username,
                "password": self.password
            },
            "allow_redirects": False  # 关闭重定向
        }
        res = requests.request(**req)
        cookie_jar = res.cookies
        print(cookie_jar)
        cookie = requests.utils.dict_from_cookiejar(cookie_jar)
        print(cookie)

方法2 直接读 s.cookies

    def login(self):
        url = self.url + "/passport/login"
        data = {
            "username": self.username,
            "password": self.password
        }
        s = requests.Session()
        s.post(url=url, data=data)
        cookie_jar = s.cookies
        print(cookie_jar)
        cookies = requests.utils.dict_from_cookiejar(cookie_jar)
        s.cookies.clear()
        print(cookies)

相关文章
|
文件存储 开发工具 对象存储
oss文件存储上传提示UnknownHost
未知的名称或服务 [ErrorCode]: UnknownHost [RequestId]: Unknown
|
Dart 数据安全/隐私保护
在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法【Flutter 专题 21】
本文向您展示了在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法。事不宜迟,让我们深入研究代码。 加入随机字母和数字 下面的示例演示了如何生成具有给定长度的随机字符串。结果将仅包含字母和数字(az、AZ、0-9)。
1167 0
|
Java Apache Spring
Java发送Http请求(HttpClient)
Java发送Http请求(HttpClient)
12752 2
|
10月前
|
机器学习/深度学习 人工智能 数据可视化
《解锁AI黑科技:数据分类聚类与可视化》
在数字化时代,数据海量增长,如何提取有价值信息成为关键挑战。AI技术崛起,特别是数据分类与聚类及可视化技术,正成为各行业核心力量。数据分类如邮件过滤,聚类如水果分拣。常用算法包括决策树、神经网络、SVM和K-Means等。数据可视化通过图表、热力图等形式直观展示数据,助力商业决策、科研分析等。AI技术的不断进步,将使数据分析更加智能高效。
207 4
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
29568 0
|
Python
【Python】正则表达式判断是否存在连续相同的两个字符,连续两个字符一模一样
Python函数isContinuousChar,使用正则表达式来检测字符串中是否存在连续的相同字母或数字,并返回存在此类字符的列表长度,如果列表长度为0则表示不存在连续相同的字符。
497 2
|
数据可视化 Python
【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 问题分析、数学模型及python代码实现
本文介绍了2023年高教社杯数学建模竞赛C题,涉及蔬菜类商品的自动定价与补货决策,包括问题分析、数学模型的构建以及Python代码实现,旨在优化商超的补货和定价策略以提高收益。
575 1
|
Linux
3分钟带你了解Linux 中的 umount 命令
【7月更文挑战第7天】
831 0
3分钟带你了解Linux 中的 umount 命令
|
消息中间件 存储 大数据
深度分析:Apache Kafka及其在大数据处理中的应用
Apache Kafka是高吞吐、低延迟的分布式流处理平台,常用于实时数据流、日志收集和事件驱动架构。与RabbitMQ(吞吐量有限)、Pulsar(多租户支持但生态系统小)和Amazon Kinesis(托管服务,成本高)对比,Kafka在高吞吐和持久化上有优势。适用场景包括实时处理、数据集成、日志收集和消息传递。选型需考虑吞吐延迟、持久化、协议支持等因素,使用时注意资源配置、数据管理、监控及安全性。
|
数据采集
手把手教你如何将SOCKS5代理转换成HTTP代理?
具体要如何操作?今天就来具体展示一下要如何利用privoxy,将SOCKS5代理转化成HTTP代理。