zoukankan      html  css  js  c++  java
  • 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;'})
  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/duwenlu/p/8532064.html
Copyright © 2011-2022 走看看