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有证书的加密解密实现方法
Nov 19 Python
简单易懂的python环境安装教程
Jul 13 Python
Python 文件操作的详解及实例
Sep 18 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
python多线程同步实例教程
Aug 11 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
Django认证系统user对象实现过程解析
Mar 02 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
Python实现简单的2048小游戏
Mar 01 Python
Python中的socket网络模块介绍
Jul 23 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设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
python生成器的使用方法
2013/11/21 Python
给Python初学者的一些编程技巧
2015/04/03 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
网页美工求职信
2014/02/15 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
同学聚会祝酒词
2015/08/10 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
会计专业自荐信范文
2019/05/22 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
十个Python自动化常用操作,即拿即用
2021/05/10 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python