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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python中的面向对象编程详解(下)
Apr 13 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python程序退出方式小结
Dec 09 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python 处理文件的几种方式
Aug 23 Python
python getopt模块使用实例解析
Dec 18 Python
python中的itertools的使用详解
Jan 13 Python
Python切片列表字符串如何实现切换
Aug 06 Python
Python暴力破解Mysql数据的示例
Nov 09 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
一个完整的php文件上传类实例讲解
2015/10/27 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
JavaScript基本对象
2007/01/11 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
vue实现购物车列表
2020/06/30 Javascript
python opencv之SURF算法示例
2018/02/24 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
YII2 全局异常处理深入讲解
2021/03/24 PHP
土木工程专业大学毕业生求职信
2013/10/13 职场文书
商务日语毕业生自荐信
2013/11/23 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
学校开学标语
2014/10/06 职场文书
典型事迹材料范文
2014/12/29 职场文书
少年犯观后感
2015/06/11 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
PHP遍历数组的6种方式总结
2021/11/17 PHP