• python爬微信公众号前10篇历史文章(6)话说http cookies


    早期Web开发面临的最大问题之一是如何管理状态。简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器。这是cookies的起源。

    • 什么是cookie?

    A cookie is a small stub of information left by a website on a visitor's computer through the web browser.

    一个cookie就是存储在用户主机浏览器中的一小段文本文件。Cookies是纯文本形式,它们不包含任何可执行代码。存储cookie是浏览器的功能

    基于一系列规则在之后的每个请求中都将该信息返回至服务器。Web服务器之后可以利用这些信息来标识用户

    设置一个cookie,之后只要这个cookie存在并且合法,你就可以自由的浏览这个站点的所有部分。当网页要发http请求时,浏览器会先检查是否有相应的cookie,有则自动添加在request header中的cookie字段中。

    再次,cookie只是包含了数据,就其本身而言并不有害。

     每个域名下的cookie 的大小最大为4KB,每个域名下的cookie数量最多为20个(但很多浏览器厂商在具体实现时支持大于20个)。

    • cookie通信:

    request header中自动添加了Cookie字段(我并没有手动添加这个字段哦~),Cookie字段的值其实就是我设置的 cookie。这个请求最终会发送到http://ppsc.sankuai.com这个服务器上,这个服务器就能从接收到的request header中提取cookie

    cookie的基本通信流程:设置cookie => cookie被自动添加到request header中 => 服务端接收到cookie

    • cookie的构成:

    set cookie: name=value; domain=.mozilla.org; expires=Feb, 13-Mar-2018 11:47:50; path=/; secure

      • 名称(name):一个唯一确定cookie的名称,部分大小写,cookie的名字必须是经过URL编码的,一般可以采用某个前缀在加上当前时间的做法,这样的话名称能够确保是唯一的,也比较方便。

      • 值(value):存储在cookie中的字符串值,必须经过被URL编码

      • 失效时间(expires):表示cookie何时应该被删除的时间戳,这个日期是GMT格式的日期,如果设置是以前的时间,cookie会被立刻删除。上诉cookie的失效时间是Feb,13-Mar-2018 11:47:50。

      • 域(domain):对于哪个域是有效的,如果没有设置的话,默认来自设置cookie的那个域,在上诉例子中就是.Mozilla.org
      • 路径(path):指定域中的那个路径应该像服务器发送cookie,/ 表示没有限制。path默认值为设置该cookie的网页所在的目录。domainpath2个选项共同决定了cookie何时被浏览器自动添加到请求头部中发送出去。
      • 安全标志(secure):指定以后,cookie只有在使用SSL连接的时候才可以发送到服务器。

    expires 是 http/1.0协议中的选项,在新的http/1.1协议中expires已经由 max-age 选项代替,两者的作用都是限制cookie 的有效时间。expires的值是一个时间点(cookie失效时刻= expires),而max-age 的值是一个以为单位时间段(cookie失效时刻= 创建时刻+ max-age)。
    另外,max-age 的默认值是 -1(即有效期为 session );若max-age有三种可能值:负数、0、正数。负数:有效期session0:删除cookie;正数:有效期为创建时刻+ max-age

    • 设置cookie:

    cookie既可以由服务端来设置,也可以由客户端来设置。

    1. 服务端设置 cookie: 不管你是请求一个资源文件(如 html/js/css/图片),还是发送一个ajax请求,服务端都会返回response。而response header中有一项叫set-cookie,是服务端专门用来设置cookie的。一个set-Cookie字段只能设置一个cookie,当你要想设置多个 cookie,需要添加同样多的set-Cookie字段。
    2. 客户端设置 cookie:在网页即客户端中我们也可以通过js代码来设置cookie。

    document.cookie="age=12; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=sankuai.com; path=/";
    • cookie的应用:
      • 购物车(网购)

      • 自动登录(登录账号时的自动登录)

      • 精准广告
        平常浏览网页时有时会推出商品刚好是你最近浏览过,买过的类似东西,这些是通过cookie记录的。

      • 记住登录状态

    python request模块提供的cookie相关内容:

    请求会话:class requests.Session

    Provides cookie persistence, connection-pooling, and configuration.

    创建一个会话之后,可以访问它的CookieJar,它保存了所有这个会话中的cookie信息。

    在发送请求的header中设置cookie信息:

    session.get(url, headers= '{'Cookie': 'SUV=43BBE548642E940A000000005AA1D6FD;SNUID=21D9862A6266048D992B9AFC635824EB;'})
  • 相关阅读:
    迪杰斯特拉 优先队列 模板
    UVa 12186 树形dp
    树形dp总结
    codeforces 746C 模拟
    2017西安网络赛 F
    北京师范大学校赛C
    UVA 1584 字符串
    状压dp入门第一题 poj3254
    2017ICPC/广西邀请赛1005(水)HDU6186
    2017ICPC/广西邀请赛1001(水)HDU6181
  • 原文地址:https://www.cnblogs.com/duwenlu/p/8532064.html
Copyright © 2020-2023  润新知