早期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的网页所在的目录。domain和path2个选项共同决定了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、正数。负数:有效期session;0:删除cookie;正数:有效期为创建时刻+ max-age

设置cookie:

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

服务端设置 cookie: 不管你是请求一个资源文件(如 html/js/css/图片),还是发送一个ajax请求,服务端都会返回response。而response header中有一项叫set-cookie,是服务端专门用来设置cookie的。一个set-Cookie字段只能设置一个cookie,当你要想设置多个 cookie,需要添加同样多的set-Cookie字段。

客户端设置 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;'})

python爬取公众号历史文章_python爬微信公众号前10篇历史文章(6)-话说http cookies...相关推荐

  1. python可以爬取的内容有什么_Python爬取视频(其实是一篇福利)过程解析 Python爬虫可以爬取什么...

    如何用python爬取视频网站的数据 如何用python爬取js渲染加载的视频文件不是每个人都有资格说喜欢,也不是每个人都能选择伴你一生! 有哪位大神指导下,有些视频网站上的视频文件是通过 js 加载 ...

  2. beautifulsoup爬取网页中的表格_PYTHON爬取数据储存到excel

    PYTHON爬取数据储存到excel 大家周末好呀,我是滑稽君.前两天上网课时朋友发来消息说需要爬取一些数据,然后储存到excel里.记得我公众号里发过关于爬虫的文章,所以找我帮个忙.于是滑稽君花时间 ...

  3. python下载微信公众号文章_python selenium 微信公众号历史文章随手一点就返回首页?郁闷之下只好将他们都下载下来。...

    需求: 想阅读微信公众号历史文章,但是每次找回看得地方不方便. 思路: 1.使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls. 2.对urls进行遍历访问,并 ...

  4. python公众号文章_python采集微信公众号文章

    本文实例为大家分享了python采集微信公众号文章的具体代码,供大家参考,具体内容如下 在python一个子目录里存2个文件,分别是:采集公众号文章.py和config.py. 代码如下: 1.采集公 ...

  5. python爬取新闻并归数据库_Python爬取数据并写入MySQL数据库操作示例

    Python爬取数据并写入MySQL数据库的实例 首先我们来爬取 http://html-color-codes.info/color-names/ 的一些数据. 按 F12 或 ctrl+u 审查元 ...

  6. python爬取网页书籍名称代码_python爬取亚马逊书籍信息代码分享

    我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种. 我比较之后,决定在亚马逊来实现我的需求. 我分析网站后发现,亚马逊有个高级搜索的功能 ...

  7. python爬取饿了么评论_python爬取饿了么的实例

    python爬取饿了么的实例 发布时间:2020-11-17 10:55:40 来源:亿速云 阅读:85 作者:小新 小编给大家分享一下python爬取饿了么的实例,相信大部分人都还不怎么了解,因此分 ...

  8. python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)

    前言 先看效果图: 思路 1.确认访问的URL 2.模拟登录你的QQ号 3.判断好友空间是否加了权限,切换到说说的frame,爬取当前页面数据,下拉滚动条,翻页继续获取 爬取的内容写入本地TXT文件中 ...

  9. python爬取b站弹幕分析_Python 爬取「后浪」弹幕,看看大家都在说什么

    前天,正好是五四青年节, B 站的一条献给年轻人的视频「后浪」火了,一时间到处都是各种讨论「后浪」的声音. 其他的平台先不管,先看看 B 站平台本身用户对「后浪」的评价. B 站的评论是弹幕的形式,想 ...

  10. python爬取酷狗付费音乐_python爬蟲教程:爬取酷狗音樂

    在常見的幾個音樂網站里,酷狗可以說是最好爬取的啦,什么彎都沒有,也沒加密啥的,所以最適合小白入門爬蟲 本篇針對爬蟲零基礎的小白,所以每一步驟我都截圖並詳細解釋了,其實我自己看着都啰嗦,歸根到底就是兩個 ...

最新文章

  1. Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
  2. 一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)
  3. 四级重点高频词汇表_四级为什么自己估分和真实成绩不一样……?
  4. GDCM:DICOM转储到DshibaDTI的测试程序
  5. 观察者设计模式 php,PHP设计模式 - 观察者模式
  6. 关于Tomcat端口8080占用问题(解决方法)
  7. python里类的概念
  8. 关于Memcache使用的工具类
  9. JAVA——两个List集合求交集、并集和差集(去重)模板
  10. Android添加拍照功能,Android自定义相机,添加水印
  11. elasti 时间范围查询
  12. python画抛物线_python画抛物线
  13. 自动驾驶仿真软件简介----CARLAGazeboLGSVLOthers
  14. 正版七日杀服务器存档,如何在网吧保存steam七日杀存档 | 手游网游页游攻略大全...
  15. el-cascader 级联选器中实现任意级别都可选,且前两级别为必选
  16. (JVM) 沙箱安全机制
  17. 华为数字化转型之道 方法篇 第三章 数字化转型框架
  18. 用Navicat连接Oracle数据库时报ORA-12541:TNS:无监听程序解决办法
  19. 通用积分在积分运营中的含义是什么
  20. IND-gyc-第一周

热门文章

  1. 算法学习之百钱买百鸡
  2. 【Linux】数据库管理
  3. UltraEdit v18及注册
  4. Python网络编程—(TCP、UDP区别)
  5. shiro实战系列(八)之安全管理器
  6. linux-java
  7. 1134. Vertex Cover (25)
  8. Android为TV端助力 转载:Java 泛型
  9. ThinkPHP入门--后盾视频
  10. 剑指offer--面试题14--收获