【Python网络蜘蛛】:基础 - Session和Cookie

文章目录

  • Session和Cookie
    • 静态网页和动态网页
    • Session
    • Cookie

Session和Cookie


在浏览网站的过程中,我们经常会遇到需要登陆的情况,有些页面只有在登录之后才可以访问。在登录之后有时过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登陆了,而且在很长时间内都不会失效,这是什么情况呢?

其实里面设计到Session和Cookie。

静态网页和动态网页

  • 静态网页
    内容由HTML代码编写,文字,图片等内容均通过写好的HTML代码来指定。
    优点:加载速度快、编写简单。
    缺点:可维护性差、不能根据URL灵活多变地显示内容等。如果我们想给静态网页的URL传入一个python参数,让其在网页中显示出来,是无法做到的。
  • 动态网页
    可以动态解析URL中参数的变化,关联数据库并动态呈现不同的页面内容,非常灵活多变。动态网站还可以实现用户登录和注册功能。

根据前面提出的问题,很多页面上是需要登录后才能呈现出来,按照逻辑,登录后肯定是拿到一种类似凭证的东西,而这凭证就是Session和Cookie共同产生的结果。

Session

Session,中文称之为会话,在Web中,Session对象用来存储特定用户Session所需的属性和配置信息。这样,用户在程序页面间进行跳转时,存储在Session对象中的变量不会消失。当Session过期或被放弃后,服务器终止改Session。

Cookie

Cookie,指某些网站为了鉴别用户身份、进行Session跟踪而存储在用户本地终端上的数据。

  • Session维持
    利用Cookie保存状态的过程:客户端发送第一次请求,服务器返回一个响应头中带有Set-Cookie字段的响应给客户端,用来标记用户。客户端浏览器把Cookie保存起来,下次请求时的请求头中带上保存的Cookie,服务器检验Cookie并找到对应的Session,用来辨认用户。如果Session当前是有效的,就证明用户处于登录状态,此时服务器返回登录后的页面。
  • 属性结构
    以CSDN的官网为例,鼠标点击右键->点击“检查”->点击Application(应用)
    【Python网络蜘蛛】:基础 - Session和Cookie_第1张图片
    Cookie具有以下属性:
    • Name: Cookie的名称。Cookie一旦创建,名称便不可更改。
    • Value:Cookie 的值。如果值为 Unicode字符,则需要为字符编码。如果值为二进制数据,则需要使用BASE64编码。
    • Domain:指定可以访问该 Cookie的域名。例如设置 Domain为.csdn.net,表示所有以.csdn.net结尾的域名都可以访问该Cookie。
    • Path: Cookie的使用路径。如果设置为/path/,则只有路径为/path/的页面才可以访问该Cookie。如果设置为/,则本域名下的所有页面都可以访问该 Cookie。
    • Max-Age:Cookie失效的时间,单位为秒,常和 Expires一起使用,通过此属性可以计算出Cookie的有效时间。Max-Age如果为正数,则表示 Cookie在Max-Age秒之后失效;如果为负数,则Cookie 在关闭浏览器时失效,而且浏览器不会以任何形式保存该Cookie。
    • Size字段: Cookie的大小。
    • HTTP字段:Cookie 的httponly属性。若此属性为true,则只有在HTTP Headers
      中才会带有此 Cookie的信息,而不能通过 document.cookie来访问此Cookie。
    • Secure:是否仅允许使用安全协议传输Cookie,安全协议有HTTPS和SSL等,使用这些协议在网络上传输数据之前会先将数据加密。其默认值为false。
  • 会话Cookie和持久Cookie
    会话Cookie:关闭浏览器后,Cookie即失效。
    持久Cookie:把Cookie保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户的登录状态。
    其实没有会话Cookie和持久Cookie之分,只是Max-Age或Expires字段决定了Cookie失效的时间。

你可能感兴趣的:(Python网络爬虫开发实战,Python爬虫,Session和Cookie)