爬虫cookies详解
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的应用,必须是服务器支持不同的session可以使用同一个cookie
- expires是一个客户端和服务器的君子约定,浏览器检测到失效了,就不会读取这个cookie,大部分网站都不会检测这个cookie失效,部分要求严格的网站是会检测的,和服务器时间进行比对,判断是否失效。
- cookie都是由服务器设置的,你客户端设置没意义,服务器不会进行验证,通过response的headers中set-cookie设置
留在最后的话:并不是所有网站都适合保存cookies进行登录,怎么检查哪些网站可以使用保存cookies进行登录呢?我们可以在浏览器中进行登录操作,登录成功后,关闭浏览器,然后重新打开浏览器以后访问此网站,看看是否处于登录状态,如果是登录状态,那么这个网站很大程度上是可以使用cookies进行访问操作的。
如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
也可以扫描下面二维码,添加我的微信公众号


爬虫cookies详解的更多相关文章
- javascript 操作cookies详解
javascript 操作cookies详解 这段操作cookies的方法我使用很久了,但是一直一来没遇到什么问题,今天在做一个在第一个页面保存了cookies,第二个页面获取或者第三个页面获取的功能 ...
- Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie
Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...
- python爬虫知识点详解
python爬虫知识点总结(一)库的安装 python爬虫知识点总结(二)爬虫的基本原理 python爬虫知识点总结(三)urllib库详解 python爬虫知识点总结(四)Requests库的基本使 ...
- HTTP cookies 详解(国外一位大牛的文章)
原文:http://blog.csdn.net/lijing198997/article/details/9378047 HTTP cookies,通常又称作"cookies",已 ...
- Python爬虫 | Selenium详解
一.简介 网页三元素: html负责内容: css负责样式: JavaScript负责动作; 从数据的角度考虑,网页上呈现出来的数据的来源: html文件 ajax接口 javascript加载 如果 ...
- 增量式爬虫 Scrapy-Rredis 详解及案例
1.创建scrapy项目命令 scrapy startproject myproject 2.在项目中创建一个新的spider文件命令: scrapy genspider mydomain mydom ...
- Sessions 与Cookies详解
一.Cookie 是什么? HTTP协议是无状态的,每一次数据交换完毕就结束,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接.例如:我逛淘宝买东西,我看上了易宝棒棒糖,而我下单的时候 ...
- Python爬虫实战详解:爬取图片之家
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 如何使用python去实现一个爬虫? 模拟浏览器请求并获取网站数据在原始数据 ...
- 爬虫(14) - Scrapy-Redis分布式爬虫(1) | 详解
1.什么是Scrapy-Redis Scrapy-Redis是scrapy框架基于redis的分布式组件,是scrapy的扩展:分布式爬虫将多台主机组合起来,共同完成一个爬取任务,快速高效地提高爬取效 ...
随机推荐
- LibraryBuilder——从元器件datasheet到Library
LibraryBuilder是Cadence推出的元件库管理工具,可以从PDF自动创建器件的原理图符号及PCB封装. 软件可以从“吴川斌的博客”下载到. 这里大致记录一下创建元件库的过程,以Beagl ...
- k8s miniKube 入门
k8s miniKube 入门 miniKube 是单机版kubernetes, 可以配置运行在同一台主机上的服务和pod,并使用docker作为虚拟化工具 下载:直接下载可执行文件,复制到path ...
- Java Web实现用户登录界面
一.学习Java Web需要的技术: Java语言基础:算法基础.常用数据结构.编程规范. 掌握常见的数据结构和实用算法:培养良好的编程习惯. Java面向对象:封装.继承.多态等,面向对象程序设计, ...
- 892B. Wrath#愤怒的连环杀人事件(cin/cout的加速)
题目出处:http://codeforces.com/problemset/problem/892/B 题目大意:一队人同时举刀捅死前面一些人后还活着几个 #include<iostream&g ...
- 学习ECC及Openssl下ECC生成密钥的部分源代码心得
一.ECC的简介 椭圆曲线算法可以看作是定义在特殊集合下数的运算,满足一定的规则.椭圆曲线在如下两个域中定义:Fp域和F2m域. Fp域,素数域,p为素数: F2m域:特征为2的有限域,称之为二元域或 ...
- php 连接oracle插入多张图片的方法
php连接oracle数据库的时候,其查询.更新.删除数据和MySQL类似,但是增加数据.特别是图片的时候就很不一样,这里面涉及到要创建一个blob对象,用blod对象去保存php图片,下面是当插入多 ...
- html中table的px与百分比格式设置
PX是Pixel的缩写,也就是说像素是指基本原色素及其灰度的基本编码,由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的 Html设置table格式时面临着百分比还是px的 ...
- 54)PHP,访问修饰符
类外就是你再实例化成对象的时候 用你类里面的变量 继承的类内, 就是子类里面,但是实例化对象时,不能用 本类内, 只在本类的定义时用,子类不能用.
- P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles
冲刺阶段的首篇题解! 题目链接:P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles: 题目概述: 总共N个游戏平台,金额上限V元,给出每个游戏平台的价钱和其上游戏 ...
- operator和if结构
1.比较运算符:>,<,==,!=,>=,<= 注意:所有比较运算符的结果都是布尔值举例: 123456789 print(100>10) print(100<10 ...