Set-Cookie:session=8345234;expires=Sun,15-Nov-2013 15:00:00 GMT;path=/;domain=baidu.com

expires是cookie的生存周期,path是cookie的有效路径,domain是cookie的有效域.

路径"path"用于设置可以读取一个cookie的最顶层的目录.

将cookie的路径设置为你的网页最顶层的目录可以让该该目录下的所有网页都能访问该cookie.

方法:在你的cookie中加入path=/; 如果你只想让"food" 目录中的网页可以使用该cookie,则你加入path=/food;.

domain:有些网站有许多小的域名,例如百度可能还在"news.baidu.com" "zhidao.baidu.com" 和"v.baidu.com" 域名下有网页.

如果想让"baidu.com"下的所有机器都可以读取该cookie,必须在cookie中加入 "domain=.baidu.com" .

用户浏览器会存储Cookie直到过期,浏览器会向符合path和domain的服务器发送类似以下内容的HTTP请求报头:

复制代码 代码如下:

Cookie:session=8345234。

例如,登陆www.baidu.com的时候,百度服务器发送回的HTTP响应报头中cookie是:

复制代码 代码如下:

Set-Cookie:H_PS_PSSID=4681_4567_1452_9876_4759; path=/; domain=.baidu.com

Set-Cookie:BDSVRTM=74; path=/

浏览器的HTTP请求报头:

复制代码 代码如下:

Cookie:BAIDUID=0FD996SDFG12********107B9C227F4C:FG=1; locale=zh; bdshare_firstime=1384567418140; NBID=D830DD2345HH2818A9F4134E5A2D778D3B:FG=1; H_PS_LC=4_shadu2014; BD_CK_SAM=1; H_PS_PSSID=4681_4567_1452_9876_4759

浏览器将cookie发送回HTTP服务器时,使用key=value字符串的编码形式,不返回expires,path和domain等可选属性。

cookie字符串通常位于HTTP_COOKIE环境变量中,可以如下读取:

复制代码 代码如下:

import os

print "Content-type: text/plain\n"

if "HTTP_COOKIE" in os.environ:

print os.environ["HTTP_COOKIE"]

else:

print "HTTP_COOKIE not set!"

Python中Cookie模块(python2,python3中为http.cookies)提供了一个类似字典的特殊对象SimpleCookie,其中存储并管理着称为Morsel的cookie值集合。

每个Morsel都有name,value以及可选属性(expires,path,domain,comment,max-age,secure,version,httponly)。

SimpleCookie可使用output()方法创建以HTTP报头形式表示的cookie数据输出,用js_output()方法生成包含javascript代码的字符串。

用HTTP_COOKIE生成cookie:

复制代码 代码如下:

cookie=Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])

print cookie.output()

set cookie:

复制代码 代码如下:

import Cookie

import datetime

import random

expiration = datetime.datetime.now() + datetime.timedelta(days=30)

cookie = Cookie.SimpleCookie()

cookie["session"] = random.randint(1,1000000000)

cookie["session"]["domain"] = ".baidu.com"

cookie["session"]["path"] = "/"

cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")

print "Content-type: text/plain"

print cookie.output()

print

print "Cookie set with: " + cookie.output()

输出:

复制代码 代码如下:

Content-type: text/plain

Set-Cookie: session=155209565; Domain=.jayconrod.com; expires=Mon, 03-Mar-2014 07:42:47 PST; Path=/

Cookie set with: Set-Cookie: session=155209565; Domain=.jayconrod.com; expires=Mon, 03-Mar-2014 07:42:47 PST; Path=/

Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持。

该模块主要功能是提供可存储cookie的对象。使用此模块捕获cookie并在后续连接请求时重新发送,还可以用来

处理包含cookie数据的文件。

这个模块主要提供了这几个对象,CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar。

CookieJar对象存储在内存中。

复制代码 代码如下:

>>> import urllib2

>>> import cookielib

>>> cookie=cookielib.CookieJar()

>>> handler=urllib2.HTTPCookieProcessor(cookie)

>>> opener=urllib2.build_opener(handler)

>>> opener.open('http://www.google.com.hk')>

访问google的cookie已经被捕捉了。

来看下是怎样的:

复制代码 代码如下:

>>> print cookie

, ]>

看来是Cookie实例的集合,Cookie实例有name,value,path,expires等属性:

复制代码 代码如下:

>>> for ck in cookie:

... print ck.name,':',ck.value

...

NID : 67=B6YQoEIEjcqDj-adada_WmNYl_JvADsDEDchFTMtAgERTgRjK452ko6gr9G0Q5p9h1vlmHpCR56XCrWwg1pv6iqhZnaVlnwoeM-Ln7kIUWi92l-X2fvUqgwDnN3qowDW

PREF : ID=7ae0fa51234ce2b1:FF=0:NW=1:TM=1391219446:LM=1391219446:S=cFiZ5X8ts9NY3cmk

也可以将cookie捕捉到文件中。

FileCookieJar(filename)

创建FileCookieJar实例,检索cookie信息并将信息存储到文件中,filename是文件名。

MozillaCookieJar(filename)

创建与Mozilla cookies.txt文件兼容的FileCookieJar实例。

LWPCookieJar(filename)

创建与libwww-perl Set-Cookie3文件兼容的FileCookieJar实例。

代码:

复制代码 代码如下:

import urllib2

import cookielib

def HandleCookie():

#handle cookie whit file

filename='FileCookieJar.txt'

url='http://www.google.com.hk'

FileCookieJar=cookielib.LWPCookieJar(filename)

FileCookeJar.save()

opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(FileCookieJar))

opener.open(url)

FileCookieJar.save()

print open(filename).read()

#read cookie from file

readfilename = "readFileCookieJar.txt"

MozillaCookieJarFile =cookielib.MozillaCookieJar(readfilename)

print MozillaCookieJarFile

MozillaCookieJarFile.load(cookieFilenameMozilla)

print MozillaCookieJarFile

if __name__=="__main__":

HandleCookie()

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

立即提交

专题推荐独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

php中文网:公益在线php培训,帮助PHP学习者快速成长!

Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 苏ICP备2020058653号-1

php readfile cookie,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. 代码检查规则:Python语言案例详解

    在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...

  10. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明    一.简 ...

最新文章

  1. 关于 typedef typedef struct typedef union理解 --写给不长脑子的我
  2. NYOJ15-括号匹配(二)-区间DP
  3. Xcode做简易计算器
  4. 获取SQL命令字符串中的参数名列表
  5. nginx mozilla_Android进入汽车市场,Mozilla进入电视市场,等等
  6. oracle中的数据对象
  7. What is Dark Net
  8. 张萌韩墨羽——Toolbar和DrawerLayout+SlideMenu 2种方式实现抽屉侧滑
  9. 维修经验:播放器没有声音,但系统有声音
  10. 影响国债收益率的因素
  11. 服务器传奇网站搭建修改教程,传奇架设教程如何修改爆率
  12. java的下标循环_java的for下标循环遍历和foreach循环遍历测试
  13. 北京邮电大学计算机考研英语,我的考研心得——北京邮电大学计算机专业
  14. 程序员是这样炼成的(2)-选择成熟的柿子还是生柿子
  15. 如何将图片做成二维码并加入文字?二维码文字内容的排版怎么做?
  16. perp系列之八:其它
  17. 艾伟也谈项目管理,创建敏捷团队
  18. 两个关于vlan间通信的实验
  19. 前端工程化 - 剖析npm的包管理机制
  20. 长视频与短视频,其底层逻辑有何不同

热门文章

  1. malloc和new的区别和联系
  2. SQL Server 2008,三年等待物有所值
  3. 提高局域网速度的21招
  4. 理解VMware资源池
  5. 获取rabbitmq连接对象_NET Core使用RabbitMQ
  6. 霍夫曼编码及解码实验c语言,Huffman编码与解码_C语言实现
  7. 计算机grand,The Grand
  8. html input url,HTML5表单之Input 部类-url
  9. maven内存不足:Unexpected error occurred: Not enough memory to allocate buffers for rehashing Java heap
  10. 网上流传的继承RandomAccessFile缓冲办法并不可靠