最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python處理cookie詳解

 更新時間:2014年02月07日 10:17:07   作者:  
Cookie用于服務器實現(xiàn)會話,用戶登錄及相關功能時進行狀態(tài)管理,本文介紹了使用python處理cookie的方法,需要的朋友可以參考下

要在用戶瀏覽器上安裝cookie,HTTP服務器向HTTP響應添加類似以下內(nèi)容的HTTP報頭:

復制代碼 代碼如下:

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的路徑設置為你的網(wǎng)頁最頂層的目錄可以讓該該目錄下的所有網(wǎng)頁都能訪問該cookie.

方法:在你的cookie中加入path=/; 如果你只想讓"food" 目錄中的網(wǎng)頁可以使用該cookie,則你加入path=/food;.

domain:有些網(wǎng)站有許多小的域名,例如百度可能還在"news.baidu.com" "zhidao.baidu.com" 和"v.baidu.com" 域名下有網(wǎng)頁.

如果想讓"baidu.com"下的所有機器都可以讀取該cookie,必須在cookie中加入 "domain=.baidu.com" .

用戶瀏覽器會存儲Cookie直到過期,瀏覽器會向符合path和domain的服務器發(fā)送類似以下內(nèi)容的HTTP請求報頭:

復制代碼 代碼如下:

Cookie:session=8345234。

例如,登陸www.baidu.com的時候,百度服務器發(fā)送回的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發(fā)送回HTTP服務器時,使用key=value字符串的編碼形式,不返回expires,path和domain等可選屬性。

cookie字符串通常位于HTTP_COOKIE環(huán)境變量中,可以如下讀?。?/P>

復制代碼 代碼如下:

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()方法創(chuàng)建以HTTP報頭形式表示的cookie數(shù)據(jù)輸出,用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并在后續(xù)連接請求時重新發(fā)送,還可以用來

處理包含cookie數(shù)據(jù)的文件。

這個模塊主要提供了這幾個對象,CookieJar,F(xiàn)ileCookieJar,MozillaCookieJar,LWPCookieJar。

CookieJar對象存儲在內(nèi)存中。

復制代碼 代碼如下:

>>> import urllib2
>>> import cookielib
>>> cookie=cookielib.CookieJar()
>>> handler=urllib2.HTTPCookieProcessor(cookie)
>>> opener=urllib2.build_opener(handler)
>>> opener.open('http://www.google.com.hk')<addinfourl at 161806444 whose fp = <socket._fileobject object at 0x9a348ac>>

訪問google的cookie已經(jīng)被捕捉了。

來看下是怎樣的:

復制代碼 代碼如下:

>>> print cookie
<cookielib.CookieJar[<Cookie NID=67=B6YQoEIEjcqDj-adada_WmNYl_JvADsDEDchFTMtAgERTgRjK452ko6gr9G0Q5p9h1vlmHpCR56XCrWwg1pv6iqhZnaVlnwoeM-Ln7kIUWi92l-X2fvUqgwDnN3qowDW for .google.com.hk/>, <Cookie PREF=ID=7ae0fa51234ce2b1:FF=0:NW=1:TM=1391219446:LM=1391219446:S=cFiZ5X8ts9NY3cmk for .google.com.hk/>]>

看來是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)

創(chuàng)建FileCookieJar實例,檢索cookie信息并將信息存儲到文件中,filename是文件名。

MozillaCookieJar(filename)

創(chuàng)建與Mozilla cookies.txt文件兼容的FileCookieJar實例。

LWPCookieJar(filename)

創(chuàng)建與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()

相關文章

  • python開發(fā)一個解析protobuf文件的簡單編譯器

    python開發(fā)一個解析protobuf文件的簡單編譯器

    這篇文章主要介紹了python如何開發(fā)一個解析protobuf文件的簡單編譯器,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-11-11
  • Python中的with語句與上下文管理器學習總結(jié)

    Python中的with語句與上下文管理器學習總結(jié)

    在Python中作為上下文管理器的對象可以使用with語句,提供上下文管理器的contextlib模塊的使用則是Python編程中的高級技巧,下面我們就來詳細整理一下Python中的with語句與上下文管理器學習總結(jié):
    2016-06-06
  • PyCharm運行Python代碼時出現(xiàn)"未找到模塊"錯誤解決步驟

    PyCharm運行Python代碼時出現(xiàn)"未找到模塊"錯誤解決步驟

    在使用python的過程中經(jīng)常會遇到一個問題,就是叫什么名字的模塊未發(fā)現(xiàn),下面這篇文章主要給大家介紹了關于PyCharm運行Python代碼時出現(xiàn)"未找到模塊"錯誤的解決步驟,需要的朋友可以參考下
    2023-11-11
  • pip無法安裝osgeo失敗的問題解決

    pip無法安裝osgeo失敗的問題解決

    本文主要介紹了pip無法安裝osgeo失敗的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • python重寫方法和重寫特殊構(gòu)造方法

    python重寫方法和重寫特殊構(gòu)造方法

    這篇文章主要介紹了python重寫方法和重寫特殊構(gòu)造方法,對于父類的方法,只要他不符合子類模擬的實物的行為,都可以進行重寫,更多相關內(nèi)容需要的朋友可以參考一下
    2022-07-07
  • Python實現(xiàn)四個經(jīng)典小游戲合集

    Python實現(xiàn)四個經(jīng)典小游戲合集

    這篇文章主要介紹了利用Python編寫一個經(jīng)典小游戲的合集,包括:貪吃蛇,掃雷,俄羅斯方塊,五子棋。感興趣的小伙伴可以跟隨小編一起學習一下
    2021-12-12
  • 跟老齊學Python之畫圈還不簡單嗎?

    跟老齊學Python之畫圈還不簡單嗎?

    畫圈?換一個說法就是循環(huán)。循環(huán),是高級語言編程中重要的工作。現(xiàn)實生活中,很多事情都是在循環(huán),日月更迭,斗轉(zhuǎn)星移,無不是循環(huán);王朝更迭,尋常百姓,也都是循環(huán)。
    2014-09-09
  • mvc框架打造筆記之wsgi協(xié)議的優(yōu)缺點以及接口實現(xiàn)

    mvc框架打造筆記之wsgi協(xié)議的優(yōu)缺點以及接口實現(xiàn)

    這篇文章主要給大家介紹了關于mvc框架打造筆記之wsgi協(xié)議的優(yōu)缺點以及接口實現(xiàn)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • 如何使用 Flask 做一個評論系統(tǒng)

    如何使用 Flask 做一個評論系統(tǒng)

    這篇文章主要介紹了如何使用 Flask 做一個評論系統(tǒng),幫助大家更好的理解和使用flask框架進行python web開發(fā),感興趣的朋友可以了解下
    2020-11-11
  • python備份文件的腳本

    python備份文件的腳本

    作用:將目錄備份到其他路徑。
    2008-08-08

最新評論

玉环县| 赫章县| 东至县| 怀安县| 万荣县| 山丹县| 莎车县| 丽江市| 鹰潭市| 横山县| 赣榆县| 丹阳市| 嘉定区| 调兵山市| 西乡县| 兰西县| 钦州市| 清远市| 盐亭县| 姚安县| 雷波县| 荣昌县| 开江县| 邵阳县| 麻江县| 商南县| 高雄县| 吕梁市| 宕昌县| 年辖:市辖区| 玉龙| 陕西省| 巨野县| 集安市| 江华| 高雄市| 台湾省| 开平市| 栾川县| 昌吉市| 泰安市|