HTTP協議無狀態,該怎麼解決?

N叔談資料採集發表於2023-02-20

HTTP協議無狀態,書面點的說法是指協議對於互動性場景沒有記憶功能,直白點的說,就是HTTP重新整理後,不記得你之前做了什麼設定,通常要解決cookie記錄登入狀態的方法有以下幾種:


1.直接把使用者名稱和密碼保持到cookie中,不過目前此類方法風險比較大,一般不把密碼等重要資訊儲存到Cookie中。


2.把密碼加密後儲存到Cookie中,下次訪問時解密並與資料庫比較。


3.加密賬號後連同賬號一塊儲存到Cookie中。


4.利用session會話將cookies等值自動傳到下一個介面。Session相當於程式在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。


手動傳cookies有一定的繁瑣: 

 

import requests
 
# 登入介面
log_url = "
# 登入參靈敏
data = {"accounts": "longge",
        "pwd": "888888"}
# 頭部資訊
head = {"X-Requested-With": "XMLHttpRequest"}
login_response = requests.post(log_url, data=data, headers=head)
 
# 獲取cookie,傳給下面訂單介面
cookie = login_response.cookies
 
# 訂單介面
order_url = "
order_response = requests.get(order_url, cookies=cookie)
print(order_response.text)


不過我們也可以嘗試session會話管理,訂單介面自動帶上cookeis,這樣我們就可以保持會話,將cookies等值自動傳到下一個介面:

 

import requests
 
# 登入介面
log_url = "
# 登入參靈敏
data = {"accounts": "longge",
				"pwd": "888888"}
# 頭部資訊
head = {"X-Requested-With": "XMLHttpRequest"}
 
# 例項化session對像
session = requests.session()
 
login_response = session.post(log_url, data=data, headers=head)
 
# 訂單介面
order_url = "
# 不用手動傳入cookies值,因為session自動帶上了
order_response = session.get(order_url)
print(order_response.text)
# 列印cookies
print(session.cookies)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70025002/viewspace-2936044/,如需轉載,請註明出處,否則將追究法律責任。

相關文章