python接口自動化(十一)--發送post【data】(詳解)


簡介 

  前面登錄博客園的是傳 json 參數,由於其登錄機制的改變沒辦法演示,然而在工作中有些登錄不是傳 json 的,如 jenkins 的登錄,這里小編就以jenkins 登錄為案例,傳 data 參數,給各位童鞋詳細演練一下。

一、登錄jenkins抓包

1、瀏覽器上登錄jenkins,輸入賬號和密碼,點擊登錄

 

2、fiddler抓包工具抓取jenkins登錄的過程

3、可以清楚地看到這個body參數並不是json格式,是key=value格式,也就是前面介紹post請求四種數據類型里面的第一種

 

二、請求頭部

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

三、實現登錄

1、登錄實例代碼如下:

注意:此處的登錄URL是fiddler抓包抓到的,而並非是瀏覽器的URL地址,如果你復制的是瀏覽器的地址,就會報錯了

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

2、運行后的結果如下:

3、為了更好地查看你可以將其拷貝到記事本,保存,然后將文件后綴名修改成.html或者.htm,用瀏覽器打開查看

 

四、判斷登錄是否成功

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

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

五、判斷登錄成功

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

 

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

 六、參考代碼

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

七、遇到問題可解決方法

注意這里邊遇到的問題python3遇到的問題,或許python2沒有這些問題,筆者沒有實踐,有興趣的自己可以試一下

1、如果打印content,沒有加后邊的.decode('utf-8'),會出現亂碼,解決方法加上即可。

2、如果正則提取沒有加.decode('utf-8'),會報如下錯誤,解決方案也是加上即可

八、小結

  jenkins 代碼模擬登陸到這里就結束,實際工作中的登錄接口也就是這些,記住萬變不離其宗,舉一反三。


免責聲明!

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



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