1. 程式人生 > >python 網頁cookie的使用

python 網頁cookie的使用

post 信息保存 jsp nco ima 跟蹤 通過 expire 創建cookie

網頁cookie的使用

Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)

# opener的概念
當你獲取一個URL你使用一個opener(一個urllib2.OpenerDirector的實例)。在前面,我們都是使用的默認的opener,也就是urlopen。它是一個特殊的opener,可以理解成opener的一個特殊實例,傳入的參數僅僅是url,data,timeout。

如果我們需要用到Cookie,只用這個opener是不能達到目的的,所以我們需要創建更一般的opener來實現對Cookie的設置

# Cookielib
cookielib模塊的主要作用是提供可存儲cookie的對象,以便於與urllib2模塊配合使用來訪問Internet資源。Cookielib模塊非常強大,我們可以利用本模塊的CookieJar類的對象來捕獲cookie並在後續連接請求時重新發送,比如可以實現模擬登錄功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

關系:CookieJar —- 派生—->FileCookieJar —- 派生 —–> MozillaCookieJar和LWPCookieJar

1. 獲取Cookie保存到變量
利用CookieJar對象實現獲取cookie的功能,存儲到變量中
# 例子

import urllib2
import cookielib

cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler)
response = opener.open("http://www.baidu.com")
for item in cookie:
print ("Name=" + item.name)
print ("Value=" + item.value)

2. 保存Cookie到txt文件
將cookie保存到了cookie這個變量中,使用FileCookieJar的子類MozillaCookieJar來實現Cookie的保存

import urllib2
import cookielib

filename = "cookie.txt" # 設置保存cookie的文件
cookie = cookielib.MozillaCookieJar(filename) # 聲明一個MozillaCookieJar對象實例來保存cookie
handler = urllib2.HTTPCookieProcessor(cookie) # 利用urllib2庫的HTTPCookieProcessor對象來創建cookie處理器
opener = urllib2.build_opener(handler) # 通過handler來構建opener
response = opener.open("http://www.baidu.com") # 創建一個請求,原理同urllib2的urlopen
cookie.save(ignore_discard=True,ignore_expires=True) # 保存cookie到文件

註:ignore_discard的意思是即使cookies將被丟棄也將它保存下來,ignore_expires的意思是如果在該文件中cookies已經存在,則覆蓋原文件寫入


3. 從文件中獲取Cookie並訪問

import urllib2
import cookielib

cookie = cookielib.MozillaCookieJar()
cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)
request = urllib2.Request("http://www.baidu.com")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(request)
print (response.read())

  


4. 利用cookie模擬網站登錄163郵箱
利用cookie實現模擬登錄,並將cookie信息保存到文本文件中。

# eg_v1
import urllib
import urllib2
import cookielib

filename = "163mail.txt"
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode({"email":"15800220134","password":"abc123456"})
loginURL = "http://mail.163.com/"
result = opener.open(loginURL,postdata)
cookie.save(ignore_discard=True,ignore_expires=True)
gradeURL = "http://mail.163.com/js6/main.jsp?sid=VDTWzvRRwIKUKIMaBmRRejDfKwRnmmNM&df=mail163_letter#module=welcome.WelcomeModule%7C%7B%7D"
result1 = opener.open(gradeURL)
print (result1.read())

 

# eg_v2
import urllib
import urllib2

def post(url,data):
request = urllib2.Request(url)
data = urllib.urlencode(data)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
response = opener.open(request,data)
return response.read()

def main():
posturl = "http://mail.163.com"
data = {"email":"15800220134","password":"abc123456"}
print (post(posturl,data))

if __name__ == "__main__":
main()

 

 

python 網頁cookie的使用