需求:
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
需求第二步實現代碼

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
python代碼參考博客:http://www.dabu.info/python-auto-login-post-request-head.html