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

Python中的Cookie模塊如何使用

 更新時(shí)間:2020年06月04日 15:03:03   作者:Python  
在本篇文章中小編給大家整理的是一篇關(guān)于Python中的Cookie模塊用法的相關(guān)知識(shí)點(diǎn)文章,需要的朋友們可以參考下。

Cookie 模塊,顧名思義,就是用來操作Cookie的模塊。

Cookie這塊小蛋糕,玩過Web的人都知道,它是Server與Client保持會(huì)話時(shí)用到的信息 切片。 Http協(xié)議本身是無狀態(tài)的,也就是說,同一個(gè)客戶端發(fā)送的兩次請(qǐng)求,對(duì)于Web服務(wù)器來說,沒有直接的關(guān)系。既然這樣,有人會(huì)問,既然Http是無狀態(tài) 的, 為什么有些網(wǎng)頁,只有輸入了用戶名與密碼通過驗(yàn)證之后才可以訪問?

那是因?yàn)椋簩?duì)于通過身份驗(yàn)證的用戶,Server會(huì)偷偷的在發(fā)往Client的數(shù)據(jù)中添 加 Cookie,Cookie中一般保存一個(gè)標(biāo)識(shí)該Client的唯一的ID,Client在接下來對(duì)服務(wù)器的請(qǐng)求中,會(huì)將該ID以Cookie的形式一并 發(fā)往Server,Server從回傳回來的Cookie中提取ID并與相應(yīng)的用戶綁定起來,從而實(shí)現(xiàn)身份驗(yàn)證。說白了,Cookie就是一個(gè)在服務(wù)器與客戶端之間相互傳遞的字符串(下圖通過FireFox的FireBug插件查看訪問google.com時(shí)的Cookie)。

Cooke模塊中定義了4個(gè)直接操作Cookie的類:BaseCookie、SimpleCookie、SerialCookie、 SmartCookie。其中,BaseCookie是基類,定義了操作Cookie的公共部分,其他3個(gè)類都繼承自BaseCookie,它們之間的區(qū) 別僅僅在于序列化數(shù)據(jù)的方式不同。下面簡單講解這些類的使用。

BaseCookie基類: BaseCookies的行為非常像dict,可以用鍵/值對(duì)的形式來操作它,但是kye必須是字符串,value是Morsel對(duì)象 (下面會(huì)講到Morsel)。BaseCookies定義了編碼/解碼,輸入/輸出操作的公共規(guī)范:

  • BaseCookie.value_encode(val):對(duì)數(shù)據(jù)進(jìn)行序列化/反序列化。這些方法都返回字符串,以便通過Http傳輸。
  • BaseCookie.output():返回字符串,該字符串可以作為Http響應(yīng)頭發(fā)往客戶端。
  • BaseCookie.js_output():返回嵌入js腳本的字符串,瀏覽器通過執(zhí)行該腳本,就可以得到cooke數(shù)據(jù)。
  • BaseCookie.load(newdata):解析字符串為Cookie數(shù)據(jù)。

SimpleCookie、SerialCookie、SmartCookie都繼承自BaseCookie,具有一致的行為,它們各自對(duì) BaseCookie的value_decode, value_encode進(jìn)行了重寫并實(shí)現(xiàn)自己的序列化/反序列化策略,其中:

SimpleCookie內(nèi)部使用str()來對(duì)數(shù)據(jù)進(jìn)行序列化;

SerialCookie則通過pickle模塊來序列化反序列化數(shù)據(jù);

SmartCookie相對(duì)聰明點(diǎn),對(duì)于非字符串?dāng)?shù)據(jù),使用pickle序列/反序列化,否則將字符串原樣返回。

下面的例子簡單的說明如何使用Cookie模塊:

import Cookie
c = Cookie.SimpleCookie()
c['name'] = 'DarkBull'
c['address'] = 'ChinaHangZhou'
c['address']['path'] = '/'
# 路徑
c['address']['domain'] = 'appspot.com'
# domain
c['address']['expires'] = 'Fir, 01-Oct-2010 20:00:00 GMT' 
# 過期時(shí)間
print c.output()
print c.js_output()
# 輸出結(jié)果,與上圖對(duì)照
# Set-Cookie: address=ChinaHangZhou; Domain=appspot.com; expires=Fir, 01-Oct-2010 20:00:00 GMT; Path=/
# Set-Cookie: name=DarkBull
# 作為腳本輸出
# <script type="text/javascript">
# document.cookie = "address=ChinaHangZhou; Domain=appspot.com; expires=Fir, 01-Oct-2010 20:00:00 GMT; Path=/";
# </script>
# <script type="text/javascript">
# document.cookie = "name=DarkBull";
# </script>

Morsel類 : 用于表示Cookie中每一項(xiàng)數(shù)據(jù)的屬性而抽象的類。這些屬性包括:expires, path, comment, domain, max-age, secure, version等等(看上圖下劃線標(biāo)注部分)。如果你玩過web,對(duì)這些應(yīng)該不會(huì)陌生,可以在RCF2109中找到他們的具體定義

Morsel.key,Morsel.value:Cookie數(shù)據(jù)項(xiàng)的key/value(value可以是二進(jìn)制數(shù)據(jù));

Morsel.coded_value:數(shù)據(jù)編碼后得到的字符串。Http協(xié)議是基于文本的協(xié)議,Server無法直接向Client發(fā)送二進(jìn)制數(shù)據(jù),只有序列化成字符串后,才能發(fā)往Client;

Morsel.set(key, value, coded_value):設(shè)置Cookie數(shù)據(jù)項(xiàng)的key、value、coded_value;

Morsel.isReversvedKey(key):如果key是expires, path, comment, domain, max-age, secure, version, httponly中的一個(gè),返回True,否則返回False;

Morsel.output():返回型如“Set-Cookie: …”的字符串,表示一個(gè)Cookie數(shù)據(jù)項(xiàng);

Morsel.js_output():返回Cookie數(shù)據(jù)項(xiàng)的腳本字符串;

Morsel.OutputString(): 返回Morsel的字符串表示;

Morsel使用示例:

import Cookie
m = Cookie.Morsel()
m.set('name', 'DarkBull', 'DarkBull')
m['expires'] = 'Fir, 01-Oct-2010 20:00:00 GMT'
m['domain'] = 'appspot.com'
print m.output()
# 結(jié)果
# Set-Cookie: name=DarkBull; Domain=appspot.com; expires=Fir, 01-Oct-2010 20:00:00

知識(shí)點(diǎn)擴(kuò)展:

為什么要使用Cookie呢?

Cookie,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)

比如說有些網(wǎng)站需要登錄后才能訪問某個(gè)頁面,在登錄之前,你想抓取某個(gè)頁面內(nèi)容是不允許的。那么我們可以利用Urllib2庫保存我們登錄的Cookie,然后再抓取其他頁面就達(dá)到目的了。

以上就是Python中的Cookie模塊如何使用的詳細(xì)內(nèi)容,更多關(guān)于Python中的Cookie模塊用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python數(shù)據(jù)分析之線性回歸選擇基金

    python數(shù)據(jù)分析之線性回歸選擇基金

    這篇文章主要介紹了python數(shù)據(jù)分析之線性回歸選擇基金,文章基于前幾篇的文章內(nèi)容展開詳細(xì)的基金的趨勢(shì)分析,感興趣的小伙伴可以參考一下
    2022-05-05
  • python中把元組轉(zhuǎn)換為namedtuple方法

    python中把元組轉(zhuǎn)換為namedtuple方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中把元組轉(zhuǎn)換為namedtuple方法,有興趣的朋友們可以參考下。
    2020-12-12
  • python中os和sys模塊的區(qū)別與常用方法總結(jié)

    python中os和sys模塊的區(qū)別與常用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于python中os和sys模塊的區(qū)別與常用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Pytorch從0實(shí)現(xiàn)Transformer的實(shí)踐

    Pytorch從0實(shí)現(xiàn)Transformer的實(shí)踐

    本文主要介紹了Pytorch從0實(shí)現(xiàn)Transformer的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 怎樣使用Python腳本日志功能

    怎樣使用Python腳本日志功能

    Python通過logging模塊提供日志功能,關(guān)于logging模塊的使用網(wǎng)絡(luò)上已經(jīng)有很多詳細(xì)的資料,今天這里要分享的是怎樣在實(shí)際工程中使用日志功能。下面一起來學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • 通過python的matplotlib包將Tensorflow數(shù)據(jù)進(jìn)行可視化的方法

    通過python的matplotlib包將Tensorflow數(shù)據(jù)進(jìn)行可視化的方法

    今天小編就為大家分享一篇通過python的matplotlib包將Tensorflow數(shù)據(jù)進(jìn)行可視化的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python使用裝飾器模擬用戶登陸驗(yàn)證功能示例

    Python使用裝飾器模擬用戶登陸驗(yàn)證功能示例

    這篇文章主要介紹了Python使用裝飾器模擬用戶登陸驗(yàn)證功能,結(jié)合登錄驗(yàn)證實(shí)例形式分析了裝飾器的簡單使用技巧,需要的朋友可以參考下
    2018-08-08
  • python基于turtle繪制幾何圖形

    python基于turtle繪制幾何圖形

    turtle又稱為海龜繪圖,是Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所創(chuàng)造的 Logo 編程語言的python實(shí)現(xiàn)。turtle是基于tkinter圖形界面設(shè)計(jì)的。
    2021-06-06
  • Python爬蟲基礎(chǔ)講解之請(qǐng)求

    Python爬蟲基礎(chǔ)講解之請(qǐng)求

    今天帶大家了解一下python爬蟲的基礎(chǔ)知識(shí),文中有非常詳細(xì)的解釋說明,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python GUI庫圖形界面開發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例

    python GUI庫圖形界面開發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

德昌县| 兴和县| 兴义市| 滕州市| 晋城| 泽普县| 信阳市| 肇东市| 武义县| 安溪县| 曲阜市| 始兴县| 西华县| 冷水江市| 重庆市| 金寨县| 新邵县| 绵阳市| 满城县| 金川县| 涡阳县| 大余县| 石首市| 东阿县| 英吉沙县| 梁山县| 潼关县| 交城县| 共和县| 田东县| 车致| 叶城县| 晋江市| 金阳县| 忻城县| 普洱| 江阴市| 堆龙德庆县| 濉溪县| 鲁甸县| 阿拉善右旗|