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)