Python中Cookie的處理(二)cookielib庫
Python中cookielib庫(python3中為http.cookiejar)為儲存和管理cookie提供客戶端支援。
該模組主要功能是提供可儲存cookie的物件。使用此模組捕獲cookie並在後續連線請求時重新傳送,還可以用來處理包含cookie資料的檔案。
這個模組主要提供了這幾個物件,CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar。
1. CookieJar
CookieJar物件儲存在記憶體中。
1
2
3
4
5
6
|
>>>
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 <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
一般,我們HTTP抓包得到的Cookie位於Request Header中,格式如下:
要使用該字串發起HTTP請求,有幾種方法:
它們各有不足:
使用httplib直接新增cookie到header如果不需要程式自己管理cookie,這個方法是極簡單的。下面簡單示例處理GET請求:
import httplib def request(url, cookie=''): if __name__ == '__main__': html_doc = request(url).read() request函式就是全部的內容,測試IP 192.168.1.253是我房間的無線路由器。第一次HTTP請求帶Cookie,第二次不帶Cookie,返回的標題不一樣:
前篇介紹了直接使用httplib傳送Cookie,簡潔直觀。建立cookielib.CookieJar物件自動管理Cookie稍繁瑣一些,但是一旦建立,可供urllib2建立opener,後續的所有cookie更新和過期刪除都是自動處理的。 1. 解析Cookie Str,得到Cookie.SimpleCookie物件我們得到的Request Header中,Cookie是這樣的格式:
第一步是解析它,得到Cookie.SimpleCookie物件。通過字串構造即可: Cookie.SimpleCookie(cookie_str) 得到的是一個dict-like物件,它的每一個值都是一個Set-Cookie語句,上述例子解析後是: 2. 用SimpleCookie建立cooklib.Cookie物件上述SimpleCookie不能直接使用,因為一個完整的Cookie,還必須包括額外的欄位,如:domain、path、expires等。第二步工作是建立cooklib.Cookie物件,直接將key, value傳入cooklib.Cookie類的建構函式即可。 得到一系列cookielib.Cookie物件,便可以依次用它們來更新CookieJar了。 3. 完整的示例程式碼import cookielib def build_opener_with_cookie_str(cookie_str, domain, path='/'): for c in simple_cookie: # Return opener
html_doc = urllib2.urlopen('http://192.168.1.253').read()
|
相關文章
- Python中Cookie的處理(一)Cookie庫PythonCookie
- requests庫中的Cookie處理Cookie
- Python操作cookie之cookielib模組PythonCookie
- Python Cookie HTTP獲取cookie並處理PythonCookieHTTP
- Python教程分享:Python Cookie HTTP獲取cookie並處理PythonCookieHTTP
- Cookie處理Cookie
- 前端Cookie處理前端Cookie
- Python 中 Panda 庫 處理表格方法Python
- session儲存資料庫中以及禁用cookie情況下的處理Session資料庫Cookie
- selenium-webdriver(python) (十三) -- cookie處理WebPythonCookie
- Python培訓技術分享:Python Cookie HTTP獲取cookie並處理PythonCookieHTTP
- Python錯誤處理和異常處理(二)Python
- Python資料處理(二):處理 Excel 資料PythonExcel
- 處理python中的訊號Python
- Python 中的異常處理Python
- Python 計算生態中那些著名的庫-文字處理Python
- Python-OpenCV 處理視訊(二): 視訊處理PythonOpenCV
- Python影像處理庫——PILPython
- 在百度小程式中對set-cookie的處理Cookie
- 爬蟲 | 處理cookie的基本方法——session爬蟲CookieSession
- Python-OpenCV 處理影象(八):影象二值化處理PythonOpenCV
- python中多程式處理資料庫連線的問題Python資料庫
- 關於Python中的日期處理Python
- python中PCA的處理過程PythonPCA
- JavaScript中的圖片處理與合成(二)JavaScript
- Handler處理器 和 Opener 及CookieCookie
- [Python影象處理] 二.OpenCV+Numpy庫讀取與修改畫素PythonOpenCV
- 在Python中處理分數Python
- Python Excel處理庫openpyxl詳解PythonExcel
- Python影象處理庫Pillow入門Python
- Python使用struct處理二進位制PythonStruct
- Python 柵格資料處理教程(二)Python
- Python中的時間處理大總結Python
- python異常處理中finally的作用Python
- Python影像處理初探:Pillow庫的基礎使用Python
- Python3中檔案處理Python
- 【python技巧】文字處理-re庫字元匹配Python字元
- Python影象處理庫:Pillow 初級教程Python