Python Requests使用Cookie的几种方式

这篇具有很好参考价值的文章主要介绍了Python Requests使用Cookie的几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章将总结 Python Requests库中接口请求时使用Cookie的几种方式,文章使用 Postman 官网提供的接口进行演示 https://postman-echo.com

一、通过headers参数使用

通过headers参数使用cookie,key为Cookie,值为使用;拼接的 cookie_name=cookie_value 字符串

import requests

get_url = "https://postman-echo.com/get"
# key为Cookie,值为使用;拼接的 cookie_name=cookie_value 字符串
headers = {"Cookie":"cka=111a;ckb=111b"}

res = requests.get(url=get_url,headers=headers)

print(res.json().get("headers").get("cookie"))
print(res.request.headers.get("Cookie"))

输出如下:

cka=111a;ckb=111b
cka=111a;ckb=111b

二、通过cookies参数使用

通过cookies参数使用cookie,cookies 值以字典形式提供,key为cookie_name,value为cookie_value

import requests

get_url = "https://postman-echo.com/get"
# cookies 以字典形式提供,cookies 值以字典形式提供,key为cookie_name,value为cookie_value
cookies = {"cka":"222a","ckb":"222b"}

res = requests.get(url=get_url,cookies=cookies)

print(res.json().get("headers").get("cookie"))
print(res.request.headers.get("Cookie"))

输出:

cka=222a; ckb=222b
cka=222a; ckb=222b

注意:同时通过headers,cookies 参数传递Cookie时,只有headers传递的Cookie有效。

三、通过Session会话使用

通过Session会话管理Cookie,同一会话的多个请求可共享Cookie;
在Session中添加Cookie又有多种方式

方式0:自动设置

在会话过程中,如果有接口响应头中有 set-cookie,则将自动添加到会话的Cookie中

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("响应头中set-cookie:",res.headers.get("set-cookie"))
print("会话现有cookie:",dict(session.cookies))

输出:

会话初始cookie: {}
响应头中set-cookie: sails.sid=s%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4; Path=/; HttpOnly
会话现有cookie: {'sails.sid': 's%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4'}

方式1:通过key设置

直接通过key设置cookie,但不支持设置cookie的 path、domain 等值

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

# 直接通过key设置cookie,但不支持设置cookie的 path、domain 等值
session.cookies["cka"]="111a"
session.cookies["ckb"]="111b"

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("本次请求使用的cookie:",res.request.headers.get("Cookie"))
print("会话现有cookie:",dict(session.cookies))

输出:

会话初始cookie: {}
本次请求使用的cookie: cka=111a; ckb=111b
会话现有cookie: {'cka': '111a', 'ckb': '111b', 'sails.sid': 's%3AxtcEChogQfCYrRm9HDwAOFa4VlQQDsCZ.OR1TBpmuhX%2F2qI7mpTE0NdChrphD5AUcvcRqUF2y6NU'}

方式2:通过set 方法设置

通过set方法设置cookie,且支持设置path、domain等值

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

# 通过set方法设置cookie,且支持设置path、domain等值
session.cookies.set("ck2","222",path="/",domain="postman-echo.com")

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("本次请求使用的cookie:",res.request.headers.get("Cookie"))
print("会话现有cookie:",session.cookies)

输出:

会话初始cookie: {}
本次请求使用的cookie: ck2=222
会话现有cookie: <RequestsCookieJar[<Cookie ck2=222 for postman-echo.com/>, <Cookie sails.sid=s%3AZW2JtlIjc1m9D2vVrn1Io57gVB6lVQiK.SjYcItCh92iqDkVF7oI8C6q5P8KmQ5DwB%2BiD4A6Ag48 for postman-echo.com/>]>

注意:<Cookie ck2=222 for postman-echo.com/> 可以看出 设置的 path、domain 成功了

方式3:通过 add_dict_to_cookiejar 方法设置

通过 requests.utils 工具包里的 add_dict_to_cookiejar 方法设置cookie,但不支持设置 path、domain 等值

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

# 通过 requests.utils 工具包里的 add_dict_to_cookiejar 方法设置cookie,但不支持设置 path、domain 等值
cookie_dict = {"ck3a":"333a","ck3b":"333b"}
requests.utils.add_dict_to_cookiejar(session.cookies,cookie_dict=cookie_dict)

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("本次请求使用的cookie:",res.request.headers.get("Cookie"))
print("会话现有cookie:",dict(session.cookies))

输出:

会话初始cookie: {}
本次请求使用的cookie: ck3a=333a; ck3b=333b
会话现有cookie: {'ck3a': '333a', 'ck3b': '333b', 'sails.sid': 's%3AFY_7nq-hA_v9BxPaft4BHgRNiZOmDZ1S.N64IaIZ2Dd2fnfDMawbXdmJl0HfUVN7hhhGrdaFE4Bs'}

方式4:通过 RequestsCookieJar() 对象设置

创建一个空 RequestsCookieJar()对象,然后使用对象的set方法赋值,然后update更新到当前会话cookie,支持设置 path、domain等值

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

# 创建一个空 RequestsCookieJar()对象,然后使用对象的set方法赋值,然后update更新到当前会话cookie,支持设置 path、domain等值
ckj = requests.sessions.RequestsCookieJar()
ckj.set('ck4a', '444a', path='/', domain='postman-echo.com')
session.cookies.update(ckj)

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("本次请求使用的cookie:",res.request.headers.get("Cookie"))
print("会话现有cookie:",dict(session.cookies))

输出:

会话初始cookie: {}
本次请求使用的cookie: ck4a=444a
会话现有cookie: {'ck4a': '444a', 'sails.sid': 's%3ANU88BiSVQAFpVUtrvSrii14jOhO_q981.MfJkY7Aw93R0Rc4V6JGi7SXPOneNJTr3p%2FNVJ9yp4Qg'}

方式5:通过 cookiejar_from_dict 方法设置

通过 requests.utils 工具包里的 cookiejar_from_dict 方法将字典格式的cookie转换为cookiejar对象,然后update更新到当前会话,不支持设置 path、domain 等值

import requests

session = requests.session()
print("会话初始cookie:",dict(session.cookies))

# 通过 requests.utils 工具包里的 cookiejar_from_dict 方法将字典格式的cookie转换为cookiejar对象,然后update更新到当前会话,不支持设置 path、domain 等值
cookie_dict = {"ck5a":"555a","ck5b":"555b"}
ckj5 = requests.utils.cookiejar_from_dict(cookie_dict=cookie_dict)
session.cookies.update(ckj5)

get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)

print("本次请求使用的cookie:",res.request.headers.get("Cookie"))
print("会话现有cookie:",dict(session.cookies))

输出:文章来源地址https://www.toymoban.com/news/detail-549570.html

会话初始cookie: {}
本次请求使用的cookie: ck5a=555a; ck5b=555b
会话现有cookie: {'ck5a': '555a', 'ck5b': '555b', 'sails.sid': 's%3AWHa__ab1vTZVjGdlIpDgDFfntSYNqS2Y.y%2Fq4YhPv49C5jwNiYdVWrFsQm9B0Y202rI5xRrqlwsk'}

到了这里,关于Python Requests使用Cookie的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 打开网页的几种方式

    方法1:直接调用系统命令 os 方法2:引用webrowser包 方法3:引用selenium工具,解决闪退问题 附:Pycharm 安装selenium 工具说明

    2024年02月16日
    浏览(44)
  • python数组循环的几种方式

     Python中循环数组有几种方式: for-in循环,可以遍历数组中的每一个元素。 while循环,使用索引进行循环。 列表推导式,可以快速创建新的列表。 递归,可以遍历多维数组。 enumerate() 函数,在循环中同时获取索引和元素

    2024年02月16日
    浏览(74)
  • Python保存图像的几种方式

    记录读取和保存图像的几种方式 1.1、使用 cv2 读取图片,注意:opencv打开路径中不能有中文!!! 1.2、使用 rasterio 读取遥感影像 1.3、使用 Image 读取图像 2.1、使用 cv2 保存图片 2.2、使用numpy保存 2.3、使用plt保存 参考: https://blog.csdn.net/xzm961226xzm/article/details/120951317 https://bl

    2024年02月11日
    浏览(49)
  • python使用requests时报错requests.exceptions.SSLError:HTTPSConnectionPool

    requests.exceptions.SSLError: HTTPSConnectionPool(host=\\\' www.baidu.com \\\', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u\\\'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)\\\'),)) 错误提示就是上面这样的。首先我找了很多的资料,有很多人说关闭证书验证(verify=False))可以解决

    2024年02月06日
    浏览(49)
  • python创建虚拟环境的几种方式

    venv是Python的虚拟环境管理工具,它可以创建独立的Python环境,让不同项目使用不同的Python版本和依赖库,避免版本冲突和依赖冲突问题。使用Python venv可以方便地创建、激活、退出、删除虚拟环境,以及在虚拟环境中安装、升级、卸载包等操作。   以下是使用Venv创建和管理

    2024年02月02日
    浏览(53)
  • python中进程的几种创建方式

    在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响。 该方式只能用于Unix/Linux操作系统中,在windows不能用。 multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束: join()方法表示主进程等待子

    2024年02月11日
    浏览(61)
  • python - 线程的启动的几种方式

    本文主要给大家介绍python启动线程的四种方式 创建 Thread 对象,然后调用 start() 方法启动线程。 重写 run() 方法,并调用 start() 方法启动线程。 使用ThreadPoolExecutor 类的 submit() 方法提交任务,自动创建线程池并执行任务。 创建进程,然后在进程中启动线程。 以上就是python中启

    2024年02月12日
    浏览(43)
  • python中导入模块/包的几种方式

    一、模块的导入方式 模块就是.py类型的Python文件 导入时不需要.py后缀,直接导入文件名即可 1.利用import直接导入: 语法:import module_name 使用方式:module_name.class_name或者module.func_name 2.利用import导入模块并设置一个别名 语法:import module_name as XXX 使用方式:XXX.class_name或者X

    2024年01月22日
    浏览(44)
  • 运行 Python 脚本/代码的几种方式

    哈喽大家好,我是咸鱼 我们知道,python 脚本或者说 python 程序其实是一个包含了 python 代码的文件。要让它们实现特定功能,我们需要知道该如何运行(run)它 通过运行 python 代码,我们可以验证脚本/程序是否按照我们的期望执行。这也使我们能够对其进行测试和调试,以便

    2024年02月08日
    浏览(49)
  • Python requests库使用详解

    今天继续给大家介绍Python 爬虫相关知识,本文主要内容是Python requests库使用详解。 requests库是一个非常好用的HTTP请求库,常用于写网络请求和爬虫程序。相比于之前的urllib库。,requests操作非常简介。 requests库是Python的一个第三方库,因此要使用该库需要我们手动安装,执行

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包