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中assert用法实例分析
Apr 30 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
使用Pytorch来拟合函数方式
Jan 14 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python实现简单学生信息管理系统
Apr 09 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python jiaba库的使用详解
Nov 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
ES6中异步对象Promise用法详解
2019/07/31 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
python简单获取数组元素个数的方法
2015/07/13 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
thinkphp5 路由分发原理
2021/03/18 PHP
细说CSS3中的选择符
2008/10/17 HTML / CSS
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
工作决心书范文
2014/03/11 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
工作检讨书怎么写
2015/01/23 职场文书
家长对学校的意见和建议
2015/06/03 职场文书