python 模擬登陸,請求包含cookie信息


需求:

1、通過GET方法,訪問URL地址一,傳入cookie參數

2、根據地址一返回的uuid,通過POST方法,傳入cooki參數

 

實現思路:

1、理解http的GET和POST差別

(網上有很多關於此問題的內容,可以自己百度一下)

 

2、理解如何傳cookie參數和值?

參考博客:http://kb.cnblogs.com/page/130970/#httpmeessagestructe

這個問題需要自己明白如何構建HTTP消息的結構,

Request 消息的結構,   Request 消息分為3部分,

第一部分叫請求行,

第二部分叫http header,

第三部分是body.

header和body之間有個空行。

結構如下圖

第一行中的Method表示請求方法,比如"POST","GET", 

Path-to-resoure表示請求的資源,

Http/version-number 表示HTTP協議的版本號

當使用的是"GET" 方法的時候, body是為空的。

 

Response消息的結構, 和Request消息的結構基本一樣。 同樣也分為三部分,

第一部分叫request line,

第二部分叫request header,

第三部分是body. header和body之間也有個空行。

結構如下圖

 HTTP/version-number表示HTTP協議的版本號, 

status-code 和message [狀態代碼]的詳細解釋。

根據上面內容,我們可以了解到http的規范,cookie內容屬於request header內容,輸入格式為:  參數:值;參數:值

需求第一步實現代碼

 1 # 獲取頁面uuid返回值
 2 def uuid_no(prefix):
 3     # 新建CookieJar實例,用於保存cookie
 4     cj = cookielib.CookieJar()
 5     # 處理cookie並生成opener
 6     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
 7     # 安裝使用opener
 8     urllib2.install_opener(opener)
 9     # 測試賬號
10     para = urllib.urlencode({'mobile': 13099999999})
11     # url地址,通過makeUrl5方法獲取
12     url = makeUrl5(prefix)
13     # Cookie內容
14     opener.addheaders.append(('Cookie', para))
15     req = urllib2.Request(url)
16     req_result = urllib2.urlopen(req)
17     # CookieJar內容
18     print cj
19     for index, cookie in enumerate(cj):
20         # 獲取uuid的值
21         uuid_str = cookie.value
22     return uuid_str
View Code

 

 需求第二步實現代碼

 1 # 模擬登陸
 2 def auth(prefix, user, passwd):
 3     # 調用uuid_no函數,獲取uuid
 4     uuid_str = uuid_no(prefix)
 5     para = urllib.urlencode({"Uuid": uuid_str})
 6     # cookie值包含mobile和uuid兩部分
 7     paras = para+";"+"mobile=13099999999"
 8     paras = paras.lower()
 9     # url地址,通過makeUrl6方法獲取
10     url = makeUrl6(prefix)
11     opener = urllib2.build_opener()
12     opener.addheaders.append(('Cookie', paras))
13     postdata = urllib.urlencode({"userId": user, "password": passwd})
14     # post請求
15     f = opener.open(url, postdata)
16     # 獲取返回值
17     the_page = f.read()
18     return the_page
View Code

 

python代碼參考博客:http://www.dabu.info/python-auto-login-post-request-head.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM