1. 程式人生 > >python接口自動化11-post傳data參數案例

python接口自動化11-post傳data參數案例

fiddler抓包 load utf etc post cgp fir mage -type

前言:

前面登錄博客園的是傳json參數,有些登錄不是傳json的,如jenkins的登錄,本篇以jenkins登錄為案例,傳data參數。

一、登錄jenkins抓包

1.登錄jenkins,輸入賬號和密碼

技術分享圖片

2.fiddler抓包

技術分享圖片

3.這個body參數並不是json格式,是key=value格式,也就是前面介紹post請求四種數據類型裏面的第二種

技術分享圖片

二、請求頭部

1.上面抓包已經知道body的數據類型了,那麽頭部裏面Content-Type類型也需要填寫對應的參數類型

技術分享圖片技術分享圖片

三、實現登錄

1、登錄代碼如下:

 1 # coding:utf-8
 2 import requests
3 4 # 先打開登錄首頁,獲取部分cookie 5 url = "http://localhost:8080/jenkins/j_acegi_security_check" 6 headers = { 7 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0" 8 } # get方法其它加個ser-Agent就可以了 9 d = {"from": "", 10 "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a
", 11 "j_username": "admin", 12 "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1", 13 "json": {"j_username": "admin", 14 "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a", 15 "remember_me": True, 16 "from": "", 17 "Jenkins-Crumb
": "e677c237181756818cbbccd4296d44f1"}, 18 "remember_me": "on", 19 "Submit": u"登錄" 20 } 21 s = requests.session() 22 r = s.post(url, headers=headers, data=d) 23 print r.content

2.打印結果

技術分享圖片

技術分享圖片

四、判斷登錄是否成功

1.首先這個登錄接口有重定向,看左邊會話框302,那登錄成功的結果看最後一個200就行

技術分享圖片技術分享圖片

2.返回的結果並不是跟博客園一樣的json格式,返回的是一個html頁面

五、判斷登錄成功

1.判斷登錄成功,可以抓取頁面上的關鍵元素,比如:賬號名稱admin,退註銷按鈕

技術分享圖片技術分享圖片

2.通過正則表達式提出這2個關鍵字

技術分享圖片

六、參考代碼

 1 # coding:utf-8
 2 import requests
 3 
 4 # 先打開登錄首頁,獲取部分cookie
 5 url = "http://localhost:8080/jenkins/j_acegi_security_check"
 6 headers = {
 7             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
 8            }  # get方法其它加個ser-Agent就可以了
 9 d = {"from": "",
10      "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
11      "j_username": "admin",
12      "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1",
13      "json": {"j_username": "admin",
14               "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
15               "remember_me": True,
16               "from": "",
17               "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1"},
18      "remember_me": "on",
19      "Submit": u"登錄"
20      }
21 s = requests.session()
22 r = s.post(url, headers=headers, data=d)
23 
24 # 正則表達式提取賬號和登錄按鈕
25 import re
26 t = re.findall(r<b>(.+?)</b>, r.content)
27 print t[0]
28 print t[1]

python接口自動化11-post傳data參數案例