接口自動化之cookies\session\token請求流程


不同系統接口會有不同請求流程機制,常用比如cookies請求流程、session請求流程、token請求流程

1、cookies請求流程

下面例子是cookies請求處理處理,cookies請求處理比較簡單,只需每次在請求頭部帶上cookies值即可

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'xxxxx@163.com','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}

    r = requests.post(url=url,params=params,data=datas)
    rt = r.text

    return r.cookies  #返回cookies

def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= requests.get(url=url,cookies=test_login()) #調用時帶上cookies
    print(r.text)

2、session請求流程

session請求流程處理與cookies類似,session其實就是cookie中存放着一個sessionID,請求時會發送這個ID,客戶端再次發送請求,需要在請求頭里面(cookie)帶上返回的sessionID

處理思路:

1、發送登錄請求
2、登錄成功后,把sessionID的信息返回給客戶端
3、客戶端再次發送請求,需要在請求頭里面(cookie)帶上返回的sessionID

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'xxxxx@163.com','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}

    r = requests.post(url=url,params=params,data=datas)
    rt = r.text

    return r.cookies  #返回cookies

def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= requests.get(url=url,cookies=test_login()) #調用時帶上cookies
    print(r.text)

對cookies、session請求流程處理,還可以使用requests庫中session會話進行處理

import requests

import requests

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'xxxxxx,'icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}
    s = requests.session() #建立session會話
    r = s.post(url=url,params=params,data=datas)
    rt = r.text

    return s  #session


def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= test_login().get(url=url)
    print(r.text)

 

3、token請求流程

token
令牌,是用戶身份的驗證方式。
最簡單的token組成:uid(用戶唯一的身份標識)、time(當前時間的時間戳)、sign(簽名)。

token請求處理思路:

1)、發送請求登錄
2)、登錄成功后,服務端返回給客戶端的響應數據中,包含了token
3)、客戶端再次發送請求(比如查看各個人主頁),那么就需要在客戶端里面帶上token,在請求中token參數一般有以下2種方式:
a、客戶端的請求參數里面 {"user":3465,"token":"rtyuio45678fdg"}
b、在請求頭里面

def login():
    data={"username":"admin","password":"admin"}
    r=requests.post(
        url='http://127.0.0.1:5000/login',
        json=data)
    return r.json()['access_token']  #返回token

def books():
    headers={'Authorization':'jwt {0}'.format(login())} #請求頭內包含token
    r=requests.get(
        url='http://127.0.0.1:5000/profile',
        headers=headers)  #帶上請求頭
    print(r.text)

cookies、session、token之間區別 (以下內容轉載至 https://blog.csdn.net/qq_37939251/article/details/83511451)

token
令牌,是用戶身份的驗證方式。
最簡單的token組成:uid(用戶唯一的身份標識)、time(當前時間的時間戳)、sign(簽名)。
對Token認證的五點認識

一個Token就是一些信息的集合;
在Token中包含足夠多的信息,以便在后續請求中減少查詢數據庫的幾率;
服務端需要對cookie和HTTP Authrorization Header進行Token信息的檢查;

session

會話,代表服務器與瀏覽器的一次會話過程,這個過程是連續的,也可以時斷時續。
cookie中存放着一個sessionID,請求時會發送這個ID;
session因為請求(request對象)而產生;
session是一個容器,可以存放會話過程中的任何對象;
session的創建與使用總是在服務端,瀏覽器從來都沒有得到過session對象;
session是一種http存儲機制,目的是為武裝的http提供持久機制。

cookie
儲存在用戶本地終端上的數據,服務器生成,發送給瀏覽器,下次請求統一網站給服務器。

cookie與session區別
cookie數據存放在客戶端上,session數據放在服務器上;
cookie不是很安全,且保存數據有限;
session一定時間內保存在服務器上,當訪問增多,占用服務器性能。

session與token
作為身份認證,token安全行比session好;
Session 認證只是簡單的把User 信息存儲到Session 里,因為SID 的不可預測性,暫且認為是安全的。這是一種認證手段。 而Token ,如果指的是OAuth Token 或類似的機制的話,提供的是 認證 和 授權 ,認證是針對用戶,授權是針對App 。其目的是讓 某App有權利訪問 某用戶 的信息。

token與cookie
Cookie是不允許垮域訪問的,但是token是支持的, 前提是傳輸的用戶認證信息通過HTTP頭傳輸;

token就是令牌,比如你授權(登錄)一個程序時,他就是個依據,判斷你是否已經授權該軟件;cookie就是寫在客戶端的一個txt文件,里面包括你登錄信息之類的,這樣你下次在登錄某個網站,就會自動調用cookie自動登錄用戶名;session和cookie差不多,只是session是寫在服務器端的文件,也需要在客戶端寫入cookie文件,但是文件里是你的瀏覽器編號.Session的狀態是存儲在服務器端,客戶端只有session id;而Token的狀態是存儲在客戶端。


參考鏈接:https://blog.csdn.net/qq_37939251/article/details/83511451


免責聲明!

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



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