Python requests模块cookie实例解析


Posted in Python onApril 14, 2020

cookie并不陌生,与session一样,能够让http请求前后保持状态。与session不同之处,在于cookie数据仅保存于客户端。requests也提供了相应到方法去处理cookie。

在python requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们去使用cookie。当我们想设置方法级别中的请求时,可以如下面示例一样操作。

import requests
s = requests.session()
# 第一步:发送一个请求,用于设置请求中的cookies
cookies = dict(cookies_are='cookie1')
# tips: http://httpbin.org能够用于测试http请求和响应
r1 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r1.text)
# 第二步:发送一个请求,用于再次设置请求中的cookies
cookies = dict(cookies_are='cookie2')
r2 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r2.text)

运行结果

# r1.text
{
 "cookies": {
  "cookies_are": "cookie1"
 }
}
# t2.text
{
 "cookies": {
  "cookies_are": "cookie2"
 }
}

从结果中可以看出,该方法让cookie只作用了单个请求,因为方法级别的参数不会被跨请求保持,这是requests中session对象的机制,这里不再赘述。那么,如果我们想跨请求保持cookie呢?这里依旧可以应用session对象的跨请求机制,方法如下:

import requests
s = requests.session()
s.cookies.update({'cookies_are': 'cookie'})
r = s.get(url='http://httpbin.org/cookies')
print(r.text)

值得一提的是,除了直接用字典去赋值cookie之外,requests还提供了RequestsCookieJar对象供我们使用,它的行为类似字典,但接口更为完整,适合跨域名跨路径使用。来看一个官方文档中的示例。

import requests
jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
print(r.text)

运行结果

{
 "cookies": {
  "tasty_cookie": "yum"
 }
}

从结果中,可以看出我们利用RequestsCookieJar对象,达到了根据不同请求路径,发送不同cookie的效果,进一步增加了操作cookie的灵活性。

参考文档

https://github.com/psf/requests/blob/master/requests/cookies.py

https://requests.readthedocs.io/en/master/user/quickstart/#cookies

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python使用django搭建web开发环境
Jun 09 Python
python3实现基于用户的协同过滤
May 31 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
python实现图片转字符画
Feb 19 Python
Python requests模块session代码实例
Apr 14 #Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 #Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 #Python
Jupyter Notebook输出矢量图实例
Apr 14 #Python
pygame实现弹球游戏
Apr 14 #Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 #Python
Python request操作步骤及代码实例
Apr 13 #Python
You might like
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
js实现图片360度旋转
2017/01/22 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
javascript实现时钟动画
2020/12/03 Javascript
python实现文件快照加密保护的方法
2015/06/30 Python
pycharm配置git(图文教程)
2019/08/16 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
pytorch梯度剪裁方式
2020/02/04 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
教师节横幅标语
2014/10/08 职场文书
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers