爬虫cookies详解

摘要:
饼干简介什么是饼干?Cookie实际上是浏览器缓存。顶级域名只能设置为顶级域名,不能设置为二级域名或三级域名,否则无法生成cookie。Expires/Max Age:此cookie的超时。如果未设置,则默认值为Session,这意味着cookie将与会话一起变为无效。关闭浏览器后,此cookie将无效。
cookies简介

cookie是什么?

Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265[1]。Cookie其实就是浏览器缓存。

cookie的生命周期

  1. 会话cookie:没有设置expires(是个时间戳)的,浏览器(session)关闭后,就自动失效
  2. 持久cookie:设置了expires的,根据设置的失效时间决定(expires时间是可以进行修改的, 但是很多网站会做防止修改的设置)

cookie具有的属性

  • name:为一个cookie的名称。
  • value:为一个cookie的值。
  • domain:为可以访问此cookie的域名,譬如www.baidu.com:baidu.com就是顶级域名

域名的划分:http://aaa.bbb.secode.first.com,每一个点划分为一个域名,域名从后向前一次为顶级、一级、二级等。

  1. 非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。
  2. 顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。
  3. 二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
  4. 顶级域名只能获取到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应用

  1. 以任何方式,如浏览器、selenium、封包方式等,获得对应的cookies
  2. 将cookies保存,可以是在内存、文件、数据库等
  3. 在你想要应用已有的cookie的 项目 中,已各种方式:文件、数据库、网络等,获取到对应的cookie,然后进行设置,接着就可以访问对应的资源了

实际应用:

  1. 有几台专门的服务器,进行登录操作,所有账号保存在数据库,由这些专门登录的服务器进行登录操作,登录成功后,保存cookies到数据库
  2. 有专门的应用服务器,从数据库读取cookies,进行相应的业务操作,这种服务器不处理登录操作

PS:

  1. cookie的应用,必须是服务器支持不同的session可以使用同一个cookie
  2. expires是一个客户端和服务器的君子约定,浏览器检测到失效了,就不会读取这个cookie,大部分网站都不会检测这个cookie失效,部分要求严格的网站是会检测的,和服务器时间进行比对,判断是否失效。
  3. cookie都是由服务器设置的,你客户端设置没意义,服务器不会进行验证,通过response的headers中set-cookie设置

留在最后的话:并不是所有网站都适合保存cookies进行登录,怎么检查哪些网站可以使用保存cookies进行登录呢?我们可以在浏览器中进行登录操作,登录成功后,关闭浏览器,然后重新打开浏览器以后访问此网站,看看是否处于登录状态,如果是登录状态,那么这个网站很大程度上是可以使用cookies进行访问操作的。


如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
也可以扫描下面二维码,添加我的微信公众号

公众号

赞赏码

免责声明:文章转载自《爬虫cookies详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇图形化显示 Python 函数之间的调用关系在 ASP.NET CORE 中使用 SESSION下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一文带你了解 HTTP 黑科技

这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章。 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技。 HTTP 内容协商 什么是内容协商 在 HTTP 中,内容协商是一种用于在同一 URL 上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资...

selenium cookie登录

前言 爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了cookie登录的优点了,前段时间网上搜了搜,发现没有什么完整的教程,本文就使用selenium来cookie登录为例做一个简单的教程。 环境准备 python...

http原理

一、HTTP服务介绍 1 简述用户访网站流程 a 进行域名信息的DNS解析   dig +trace 获得www.oldboyedu.com  ip地址信息 b 进行与网站服务器建立连接,tcp三次握手过程 (syn ack SEQ ACK/状态转换 closed listen syn_sent  syn_rcvd established ) c 和网站...

ASP.NET Core 认证与授权[1]:初识认证 (笔记)

原文链接:  https://www.cnblogs.com/RainingNight/p/introduce-basic-authentication-in-asp-net-core.html 在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用。但是它很难进行扩展,更无法与第三方认证...

分布式下Session一致性问题

一、Session一致性问题 1.1 什么是Session 用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的? 具体方式为:在会话开始时,分配一个唯一的会话标识(sessionId),通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识来告诉web服务器请求是属于哪...

谷歌浏览器插件设置域名cookie的方法

谷歌浏览器插件设置域名cookie的方法 下个editthiscookie 然后安装就可以了 然后 点击右上角 输入网址 然后设置就可以了 把host onloy去掉 还能写其他域名 小知识 理论上php不可以跨域设置cookie;php设置cookie流程:返回的信息zhidao携带信息,然后靠浏览器内来执行写入到cookie,一般浏览器安全机制已经限制...