我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python的Cookie详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python的Cookie详解

一、介绍啥是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 cookielib

cookie=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.name
    print 'Value ='+item.value
    print 'Domain ='+item.domain
    print '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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python的Cookie详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python的Cookie详解

一、介绍啥是cookie当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie,它是Internet站点创建的,为了辨别用户身份而储存在用户本地终端上的数
2023-01-31

Python Requests使用Cookie的几种方式详解

目录前言一、通过headers参数使用二、通过cookies参数使用三、通过Session会话使用方式0:自动设置方式1:通过key设置方式2:通过set 方法设置方式3:通过 add_dict_to_cookiejar 方法设置方式4:通
2023-08-08

JS 操作Cookie详解

来源:小毅博客Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员-可以自傲的Cookie 大师。-->如果你象作者一样记性不好,那么你可能根本记不住人们的名字。我遇到人时,多
2023-06-03

cookie,session和token详解

文章目录 前言一、cookie1.1 cookie简介1.2 cookie作用 二、session2.1 session简介2.2 session作用 三、token3.1 token简介3.2 token作用 四、区别
2023-08-20

python模拟登录并且保持cookie的方法详解

前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面 form 中有个 authenticity_token 字段每次访问登录页面都会自动生成,而且会和
2022-06-04

浏览器cookie的存储位置详解

随着互联网的普及,我们使用浏览器进行上网已经成为一种生活方式。在日常使用浏览器过程中,我们经常会遇到需要输入账号密码的情况,如网购、社交、邮件等。这些信息需要浏览器记录下来,以便于下次访问时不需要再次输入,这时候Cookie就派上了用场。
浏览器cookie的存储位置详解
2024-01-19

详解Javaweb状态管理的Session和Cookie

这篇文章主要介绍了Javaweb状态管理的Session和Cookie,将浏览器与web服务器之间多次交互当做一个整体来处理,并且多次交互所涉及的数据(状态)保存下来,需要的朋友可以参考下
2023-05-20

Laravel操作session和cookie的教程详解

这篇文章主要为大家详细介绍了Laravel操作session和cookie的教程,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
2023-02-09

Python爬虫利用cookie实现模拟登陆实例详解

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 举个例子,某些网站是需要登录后才能得到你想要的信息的,不登陆只能是游客模式,那么我们可以利用Urllib2库保存我们以前登录过的
2022-06-04

Python的cookie处理分享

只是拿来的文章,留个存档,可不保证能用使用已有的cookie访问网站import cookielib, urllib2 ckjar = cookielib.MozillaCookieJar(os.path.join(’C:\Documen
2023-01-31

PHP实现登录的Cookie存储方案详解

这篇文章主要介绍了PHP实现登录的Cookie存储方案详解的相关资料,需要的朋友可以参考下
2023-02-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录