爬虫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的扩展:分布式爬虫将多台主机组合起来,共同完成一个爬取任务,快速高效地提高爬取效 ...
随机推荐
- 吴裕雄--天生自然 JAVA开发学习:多态
Parent p = new Child(); public class Test { public static void main(String[] args) { show(new Cat()) ...
- vi几个常用的命令
1.同时打开多个文件:vi 1.txt 2.txt 3.txt 在多个文件中来回切换,命令行模式输入“:next"表示下一个,输入":previous"代表进入上一个,” ...
- [原]PInvoke导致栈破坏
原, 总结, 调试, 调试案例 项目中遇到一个诡异的问题,程序在升级到.net4.6.1后会崩溃,提示访问只读内存区.大概现象如下: debug版不崩溃,release版稳定崩溃. 只有x64位的程 ...
- NSIS增加打包文件夹
File /r "F:\rainwayDemo\exploer\RailwayLinesExploer\bin64\log" File /r "models" ...
- Graylog
Graylog #Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集.检索.可视化 #Graylog 架构 - Graylog 负责接收来自各种设备和应用的日志,并为用 ...
- StartDT AI Lab | 视觉智能引擎之算法模型加速
通过StartDT AI Lab专栏之前多篇文章叙述,相信大家已经对计算机视觉技术及人工智能算法在奇点云AIOT战略中的支撑作用有了很好的理解.同样,这种业务牵引,技术覆盖的模式也收获了市场的良好反响 ...
- 实战_3:新建产品配置(product)并导出项目
产品配置Product 产品配置用于定义和管理RCP应用的多个方面特征.并支持将RCP项目导出为部署包(类似eclipse压缩包),可以直接部署到其他环境上使用. 产品配置必须新建一个 扩展名为 .p ...
- [LC] 156. Binary Tree Upside Down
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that ...
- 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识
视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...
- axious设置携带cookie同时允许跨域的问题
axious设置携带cookie同时允许跨域的问题