Python+requests維持會話


Python+requests維持會話

一、使用Python+requests發送請求,為什么要維持會話?

  我們是通過http協議來訪問web網頁的,而http協議是無法維持會話之間的狀態。比如說我們成功登錄一個網站的后,去訪問這個網站的其他頁面的時候,登錄狀態會消失。所以導致頁面刷新后就需要反復重新登錄來維持會話。非常繁瑣。所以我們需要通過cookies或者Session來維持會話。下面舉個沒有維持會話,請求響應失敗的例子

代碼:

import requests import json ''' 在成功登錄平台后,在成員編號頁面新增成員的請求 ''' Search_url='http://47.106.203.20:8000/car-oss/webapi/easyflow/datatable/queryresult' Search_par={ "pageSize":10, "pageIndex":1, "orgname":"M1對講", "pcNum":"95830", "watchImei":"", "name":"pc_watch_manage" } Search_header={ 'Content-Type':'application/json' } Search_cookie={ 'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2' } r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header) print(r1.text)

運行結果:

{"errorCode":"1009","errorMsg":"會話過期,或者未登錄"} #因為沒有維持會話,所以請求響應失敗了

二、如何維持會話

  維持會話有cookie和session 這2種方式,cookie和session都是將登錄或者上一頁面對應的會話信息存儲起來,但是session不會保存服務器發給客戶端的SessionID等信息。因為SessionID通常保存在cookie中。所以還是建議使用cookie維持會話

1、使用cookie

代碼:

import requests import json Search_url='http://47.106.203.20:8000/car-oss/webapi/easyflow/datatable/queryresult' Search_par={ "pageSize":10, "pageIndex":1, "orgname":"M1對講", "pcNum":"95830", "watchImei":"", "name":"pc_watch_manage" } Search_header={ 'Content-Type':'application/json' } Search_cookie={ 'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2' } r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header,cookies=Search_cookie)#在發送請求的時候帶上了上一個對話的cookie
print(r1.text)

運行結果:

{"result":true,"msg":"success","data":{"pageIndx":1,"totalSize":1,"pageSize":10,"totalPage":1,"list":[{"id":"2c9220956c99b744016d00a758356582","pcNum":"95830","pcName":"測試","pcPhoneNum":"22345","orgname":"M1對講","watchImei":"11220"}]}}

2、使用Session

代碼:

import requests import json from requests import session ''' 登入平台 ''' login_url='http://XX.XXX.XXX.XX:端口號/car-oss/user/login.htm' login_par={ "username":"yitop", "password":"f5235b0b3bdc7329466d9165bd563191" } login_header={ 'Content-Type':'application/json' } s = requests.session()#儲存界面的會話信息,維持會話
r1=s.post(login_url,data=json.dumps(login_par),headers=login_header) ''' 在新增成員信息頁面執行查詢操作 ''' Search_url='http://XX.XXX.XXX.XX:端口號/car-oss/webapi/easyflow/datatable/queryresult' Search_par={ "pageSize":10, "pageIndex":1, "orgname":"M1對講", "pcNum":"95830", "watchImei":"", "name":"pc_watch_manage" } Search_header={ 'Content-Type':'application/json' } r2 = s.post(Search_url,data=json.dumps(Search_par),headers=Search_header) print(r1.text) print('***************************') print(r2.text)

也可以使用Python+requests來發送登錄博客園平台,在頁面查詢信息的http請求來感受下cookie和session的具體用法

 


免責聲明!

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



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