【python爬虫】cookie & session
时间:2019-12-19
本文章向大家介绍【python爬虫】cookie & session,主要包括【python爬虫】cookie & session使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、什么是cookie?
cookie是指网站为了鉴别用户身份,进行会话跟踪而存储在客户端本地的数据。
二、什么是session?
本来的含义是指有始有终的一些列动作,而在web中,session对象用来在服务器存储特定用户会话所需要的属性及信息。
三、cookie和session产生的原因:
cookie和session他们不属于http协议范围,由于http协议是无法保持状态,但实际情况,我们有需压保持一些信息,作为下次请求的条件,所有就产生了cookie和session。
四、cookie的原理:
1、由服务器产生,当浏览器第一次登录,发送请求到服务器,服务器返回数据,同时生成一个cookie返回给客户端,客户端将这个cookie保存下来。
2、当浏览器再次访问,浏览器就会自动带上cookie信息,这样服务器就能通过cookie判断是哪个用户在操作。
五、cookie的缺陷:
1、不安全--保存在客户端。
2、cookie本身最大支持4096(4kb)---存储大小受限。
六、session的工作原理。
1、正是因为cookie的缺陷,所有产生了另外一种保持状态的方法---session。
2、服务器存储session,基于http协议的无状态特征,所以服务器就不知道这个访问者是谁。为了解决这个问题,cookie就起到了桥的作用。cookie在使用的过程中,将一个叫做sessionid的字段放到cookie中,将来服务器可以通过这个id字段来查找到地上那个用户的session。
3、session的生命周期:当用户第一次登陆时创建(生命开始),到session有效期结束(30min)。
七、当我们浏览器关闭,session是否就失效了?
不失效,原因,session失效使用生命周期决定的。
八、cookie组成:
1、name:cookie名称,一旦创建,不可更改。
2、value:该cookie的值
3、domain:者cookie可以访问网站域名。
4、maxage:cookie的失效时间。负数是永不失效。
5、path:这个使用路径
6、http字段:cookie的httponly,若次属性为true,则只有http头中会带此cookie。
7、secrue:该cookie是否仅被使用安全传输协议。
8、size:cookie的大小
九、会话cookie和持久cookie。
1、持久化:将内存中的数据存储到硬盘(文件中,数据库)上的过程。
2、序列化:将对象保存到硬盘上。
会话cookie:保存在内存中cookie,浏览器关闭,cookie失效。
持久cookie:保存在硬盘上的cookie。
十、用requests实现登陆:
1、只需要将【登陆后的】cookie字段封装在请求头中。
2、使用requests的session对象登陆
session对象可以记录登陆状态。
使用步骤
1 #session:记录登陆状态 2 se = requests.Session() 3 data = { 4 'email':'', 5 'password':'', 6 } 7 8 #此时se对象就保存了登陆信息 9 se.post(base_url,data = data,headers = headers) 10 ------------------------------------------ 11 index_url = 'http://www.renren.com//profile' 12 #用se对象来进行个人首页的访问,就可以了 13 response = se.get(index_url,headers=headers) 14 if '一棵树0108' in response.text: 15 print('登陆成功!') 16 else: 17 print('登陆失败!')
原文地址:https://www.cnblogs.com/Tree0108/p/12070634.html
- 以太坊智能合约开发入门
- CatBoost:一个自动处理分类(CAT)数据的机器学习库
- Python机器学习的练习八:异常检测和推荐系统
- Blade 模板中有关 section 的那些事
- 分布式计划任务设计与实现
- 怎样在Python的深度学习库Keras中使用度量
- 网络设备配置管理与版本控制
- 使用Python对Instagram进行数据分析
- 解决多标签分类问题(包括案例研究)
- Docker Compose + GPU + TensorFlow = Heart
- Tensorflow生成模型收集: GANs与VAEs
- How to Install Nginx and PHP-FPM on FreeBSD 10
- 使用Apache MXNet分类交通标志图像
- CentOS 6.4 + nginx-1.2.5 + php-5.4.15 + MySQL-5.5.31
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python 舆情分析 nlp主题分析 (3) --gensim库的简单使用
- apache下面二级目录部署react/vue的方法
- Linux下使用ip netns命令进行网口的隔离和配置ip地址
- Linux服务器操作系统加固方法
- linux NFS 服务安全加固方法
- CentOS 7.6安装MySQL 5.7 GA版的教程图解
- CentOS7.2 忘记root密码及重置root密码的简单处理方法
- Linux中文件描述符fd与文件指针FILE*互相转换实例解析
- Linux内核如何输出中文字符的方法示例
- Linux硬盘合并的实现代码
- 虚拟机Linux桥接模式下设置静态IP详解
- Linux平台安装redis及redis扩展的方法
- Linux环境下快速搭建ftp服务器方法介绍
- Linux通过匿名管道进行进程间通信
- shell判断一个变量是否为空方法总结