网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- Cookie是由服务端生成,存储在响应头中,返回给客户端,客户端会将cookie存储下来
- Session是由服务端生成,存储在服务器端的内存、缓存、数据库等地方
- 在客户端发送请求时,user-agent会自动获取本地存储的cookie,将cookie信息存储在请求头中,发送给服务端
- 请求都是由客户端发起的,当服务端生成了session,客户端怎么会知道呢?客户端怎么能对上这个session暗号?
1)、在客户端给服务端发送请求后,服务端会根据请求信息生成session,同时生成一个session_id,通过cookie返回给客户端;
2)、客户端再次向服务端发送请求时,会通过cookie将这个session_id发送给服务端,这样就对上了session的暗号。
- cookie可以作为管理session的一种方式,当cookie被禁用时,可以通过表单或重写url传送session_id
requests实现cookie操作
- cookie包含在响应中,要获取响应中的cookie信息,可以用
r.cookies.get_dict()
获取到响应的cookies信息,并传递给后续请求。 - 找一个不会被进行验证的网站进行练习,从输出信息中,可以看到,第2个请求使用了第一个请求响应头中的cookies信息,保持了连接
cookies.png
- 在已知cookie信息时,需要构造成对应的cookie对象传递给请求时,可以采用Cookie 的返回对象为RequestsCookieJar或者采用字典构造。
- RequestsCookieJar构造cookies是已知登录响应返回的cookies信息,通过创建对象,设置对应的值进行构造传递。
RequestsCookieJar.png
- 采用字典构造cookies信息,将构造方式更改为:
# 构造cookies
cookies = dict(zentaosid = '5qm86pvshjm3s8u729cmc0mb15')
会话对象session
会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**