一、介绍啥是cookie

当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie,它是Internet站点创建的,为了辨别用户身份而储存在用户本地终端上的数据,cookie大部分都是加密的,cookie存在与缓存中或者硬盘中,在硬盘中的是一些文本文件,当你访问该网站时,就会读取对应的网站的cookie信息,cookie有效地提升了用户体验,一般来说,一旦将cookie保存在计算机上,则只有创建该cookie的网站才能读取它


二、cookielib模块

python中自带的模块,用来处理cookie相关事情

该模块的几个主要对象

  • CookieJar
  • FileCookieJar
  • MozillaCookieJar
  • LwpCookieJar

它们的关系

CookieJar——>派生——>FileCookieJar——>派生——>MozillaCookieJar和LwpCookieJar


三、urllib2自定义opener

因为urllib2.urlopen()函数不支持验证、cookie、HTTP高级功能等,所以如果要支持这些功能必须使用build_opener()函数

创建自定义opener对象

build_opener([headler1[headler2,...]])

headler是Handler实例,常用的有HTTPBasicAuthHandler,HTTPCookieProcessor,ProxyHandler等

headler是处理器,所有繁重工作有headler处理,每个headler知道如何通过特定协议打开URLs或者如何处理URL打开各个方面


四、获取cookie保存到变量

利用CookieJar对象实现cookie保存到变量中

下面是获取豆瓣的cookie保存到变量中

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/11/1
import urllib2
import cookielibcookie=cookielib.CookieJar()#声明CookieJar对象实例来保存cookie
handler=urllib2.HTTPCookieProcessor(cookie)#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
opener=urllib2.build_opener(handler)#通过handler构建opener
opener.open(r'http://www.douban.com')
for item in cookie:print 'Name ='+item.nameprint 'Value ='+item.valueprint 'Domain ='+item.domainprint 'path ='+item.path

上面方法将cookie保存到变量中,然后打印了cookie中的一些属性,如name,value,domain等等

以下是cookie的属性

name字段为一个cookie的名称。value字段为一个cookie的值。domain字段为可以访问此cookie的域名。非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。path字段为可以访问此cookie的页面路径。 比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此cookie。expires/Max-Age 字段为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。Size字段 此cookie大小。http字段  cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。secure 字段 设置是否只能通过https来传递此条cookie

五、获取cookie保存到文件中

用到FileCookieJar对象的子类MozillaCookieJar来实现

filename='cookie.txt'#保存cookie的文件
cookie=cookielib.MozillaCookieJar(filename)#声明一个MozillaCookieJar对象实例(cookie)来保存cookie,后面写入文件
handler=urllib2.HTTPCookieProcessor(cookie)#还是创建处理器
opener=urllib2.build_opener(handler)#创建支持处理HTTP请求的opener对象
opener.open('http://www.douban.com')
cookie.save(ignore_discard=True,ignore_expires=True)#保存cookie到文件
#ignore_discard表示即使cookie将被丢弃也将保存下来,ignore_expires表示如果该文件中cookie已经存在,则覆盖原文件写入


六、从文件中获取cookie,并访问

cookie保存在自己本地文件,可从文件中获取cookie并对网站进行访问

cookie=cookielib.MozillaCookieJar()#声明CookieJar对象实例来保存cookie
cookie.load('cookie.txt',ignore_discard=True,ignore_expires=True)#从文件中读取内容到cookie变量中
handler=urllib2.HTTPCookieProcessor(cookie)#处理器
opener=urllib2.build_opener(handler)
print opener.open('http://www.douban.com').read()

那么问题来了,可以发现cookie真的可以干很多事,把别人的登录的cookie保存下来,那就可以模拟登入他人的XXXXX

Python的Cookie详解相关推荐

  1. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  2. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  3. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  4. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  5. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  6. python安装教程windows-windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  7. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  8. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几 ...

  9. JavaWeb Cookie详解

    代码地址如下: http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http ...

最新文章

  1. sed当中使用变量替换以及执行外部命令
  2. 基于正态分布的图片高斯模糊算法
  3. PowerDesigner16导出Sql修复
  4. android setGravity()的使用
  5. rstudio 关联r_使用关联规则提出建议(R编程)
  6. 如何让自己时刻冷静的方法_睡前如何自己丰胸 健康有效方法 成就窈窕淑女
  7. 一个能支持Flash的广告控件
  8. bzoj 3360: [Usaco2004 Jan]算二十四(暴力+表达式求值)
  9. pbrt1 Introduction
  10. 【贪玩巴斯】无线传感器网络(三)「Mac协议讲解」——2021-10-08
  11. 图像检索哈希算法综述
  12. 暴力破解rar和zip加密压缩包
  13. 1.27(Bomb Game)
  14. 电脑C盘满了怎么办?电脑C盘满了怎么清理?
  15. Day17——整数矩阵及其运算
  16. MIT6.828学习之homework2:shell
  17. 北京一所211大学计算机考研从一门改三门!北京化工大学改考
  18. 树型结构的四种建模方法
  19. c#线程-线程间发消息-线程给窗体传值
  20. mysql汉字对应字段_mysql和SqlServer 中取得汉字字段的各汉字首字母

热门文章

  1. 小飞鱼通达二开 通达OA工作流超时自动转交程序,让工作流加速到360迈!(图文)
  2. 显示网格_C4D怎么隐藏或显示坐标网格?Ngon线,隐藏空白点
  3. ubunt入门(最基础的)
  4. GDI+ 小破孩动画
  5. JSR303数据校验(分组校验)
  6. 海贼王最大剧透!神预判,技术革新!
  7. Java课堂评价系统
  8. Knox SEAndroid
  9. ccf认证俄罗斯方块java_CCF认证历年试题
  10. 使用 windows cmd 指令连接数据库