簡介
上一篇cookie繞過驗證碼模擬登錄博客園,但這只是第一步,一般登錄后,還會有其它的操作,如發帖,評論等等,這時候如何保持會話呢?這里我以jenkins平台為例,給小伙伴們在沙場演練一下。
session簡介
1、通過help方法查看幫助文檔,截圖一部分,后面省略了,有興趣的自己可以敲一下看看
2、參考代碼
1 # coding:utf-8 2 import requests 3 help(requests.session())
使用session登錄
1、使用session登錄只需在登錄的基礎上稍做修改,即可
2、參考代碼
# coding:utf-8 import requests # 先打開登錄首頁,獲取部分session url = "http://localhost:8080/jenkins/j_acegi_security_check" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0" } # get方法其它加個ser-Agent就可以了 d = {"j_username": "admin", "j_password": "111111", "from": "", "Submit": u"登錄", "remember_me": "on" } s = requests.session() r = s.post(url, headers=headers, data=d) #print (r.content.decode('utf-8'))
保存編輯
1、先打開新建任務,手動輸入任務名稱和選擇下邊選項后,打開fiddler抓包,然后點擊“確定”
fiddler抓包
2、把body的參數內容寫成字典格式
參考代碼:
1 body = {"name":"北京-宏哥1", 2 "mode": "hudson.model.FreeStyleProject", 3 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906", 4 "json":{"name":"北京-宏哥1", 5 "mode": "hudson.model.FreeStyleProject", 6 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906" 7 8 } 9 }
3、用上面登錄保存的session繼續發送post請求,來新建任務
4、執行后,查看所有任務就多了一條新增的了
5、運行結果部分截圖:
6、粘貼到記事本修改后綴查看:
參考代碼
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 15 s = requests.session() 16 r = s.post(url, headers=headers, data=d) 17 #print (r.content.decode('utf-8')) 18 # 正則表達式提取賬號和登錄按鈕 19 import re 20 t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8')) # 用python3的這里r.content需要解碼 21 print (t[0]) 22 print (t[1]) 23 #新建任務 24 url1 = "http://localhost:8080/jenkins/createItem" 25 body = {"name":"北京-宏哥1", 26 "mode": "hudson.model.FreeStyleProject", 27 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906", 28 "json":{"name":"北京-宏哥1", 29 "mode": "hudson.model.FreeStyleProject", 30 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906" 31 32 } 33 } 34 35 r2 = s.post(url1, data=body, verify=False) 36 print (r2.content.decode('utf-8'))
這里我是用新建任務寫的案例,小伙伴可以試下Jenkins里邊其他的關聯接口
小結
小伙伴都看到了吧,session關聯接口就是這么簡單!!!趕快動起來吧。想要學習的小伙伴可以用博客園來練習一下,遇到問題歡迎打擾和溝通!