cookies简介
cookie是什么?
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(一般通过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265[1]。Cookie其实就是浏览器缓存。数据库
cookie的生命周期
- 会话cookie:没有设置expires(是个时间戳)的,浏览器(session)关闭后,就自动失效
- 持久cookie:设置了expires的,根据设置的失效时间决定(expires时间是能够进行修改的, 可是不少网站会作防止修改的设置)
cookie具备的属性
- name:为一个cookie的名称。
- value:为一个cookie的值。
- domain:为能够访问此cookie的域名,譬如www.baidu.com:baidu.com就是顶级域名
域名的划分:http://aaa.bbb.secode.first.com,每个点划分为一个域名,域名从后向前一次为顶级、一级、二级等。浏览器
- 非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名自己,不能设置其余二级域名的cookie,不然cookie没法生成。
- 顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,不然cookie没法生成。
- 二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其余二级域名domain的cookie。因此要想cookie在多个二级域名中共享,须要设置domain为顶级域名,这样就能够在全部二级域名里面或者到这个cookie的值了。
- 顶级域名只能获取到domain设置为顶级域名的cookie,其余domain设置为二级域名的没法获取。
总结一下:域名具备继承性,只能使用其自身或其父辈的域名,不能使用其子域名或者兄弟域名。例如:
a.b.c.d.com
a.b.x.d.com
c可使用domain为d.com或者c.d.com的域名cookie,不能使用x.d.com的域名或者b.c.d.com,这里你们作好了解就好了,碰到这种状况知道有这么个状况就行,通常咱们须要关注的不多。缓存
- path:为能够访问此cookie的页面路径。 好比www.jianshu.com/u/680e0e38ddc9,path就是/u/680e0e38ddc9,那么只有/u/680e0e38ddc9路径下的页面能够读取此cookie。
- expires/Max-Age :为此cookie超时时间。若设置其值为一个时间(一个时间戳),那么当到达此时间后,此cookie失效。
不设置的话默认值是Session,意思是cookie会和session一块儿失效。
当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。
- Size: 此cookie大小。
- http: cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,
而不能经过document.cookie来访问此cookie。
- secure : boolean型,默认为false,设置是否只能经过https来传递此cookie
咱们作爬虫重点关注name和value。服务器
cookie应用
- 以任何方式,如浏览器、selenium、封包方式等,得到对应的cookies
- 将cookies保存,能够是在内存、文件、数据库等
- 在你想要应用已有的cookie的 项目 中,已各类方式:文件、数据库、网络等,获取到对应的cookie,而后进行设置,接着就能够访问对应的资源了
实际应用:微信
- 有几台专门的服务器,进行登陆操做,全部帐号保存在数据库,由这些专门登陆的服务器进行登陆操做,登陆成功后,保存cookies到数据库
- 有专门的应用服务器,从数据库读取cookies,进行相应的业务操做,这种服务器不处理登陆操做
PS:cookie
- cookie的应用,必须是服务器支持不一样的session可使用同一个cookie
- expires是一个客户端和服务器的君子约定,浏览器检测到失效了,就不会读取这个cookie,大部分网站都不会检测这个cookie失效,部分要求严格的网站是会检测的,和服务器时间进行比对,判断是否失效。
- cookie都是由服务器设置的,你客户端设置没意义,服务器不会进行验证,经过response的headers中set-cookie设置
留在最后的话:并非全部网站都适合保存cookies进行登陆,怎么检查哪些网站可使用保存cookies进行登陆呢?咱们能够在浏览器中进行登陆操做,登陆成功后,关闭浏览器,而后从新打开浏览器之后访问此网站,看看是否处于登陆状态,若是是登陆状态,那么这个网站很大程度上是可使用cookies进行访问操做的。网络
若是你以为个人文章还能够,能够关注个人微信公众号,查看更多实战文章:Python爬虫实战之路
也能够扫描下面二维码,添加个人微信公众号session

