建設(shè)一個(gè)看電影的網(wǎng)站營(yíng)銷軟文范例大全100
簡(jiǎn)介
? 為了驗(yàn)證用戶登錄情況以及減輕服務(wù)器的壓力,減少頻繁的查詢數(shù)據(jù)庫(kù),使服務(wù)器更加健壯。有些登錄不是用 cookie 來(lái)驗(yàn)證的,是用 token 參數(shù)來(lái)判斷是否登錄。token 傳參有兩種一種是放在請(qǐng)求頭里,本質(zhì)上是跟 cookie 是一樣的,只
是換個(gè)單詞而已;另外一種是在 url 請(qǐng)求參數(shù)里,這種更直觀。
b站最牛Jmeter接口測(cè)試和Jmeter接口自動(dòng)化測(cè)試全集https://www.bilibili.com/video/BV1hq4y1K75i/?spm_id_from=333.999.0.0
登錄返回token
1、如下圖的這個(gè)登錄接口,就是沒有 cookies的登錄接口。
?
2、但是這個(gè)登錄接口,登錄成功后有返回token,如下圖
請(qǐng)求頭帶token
1、登錄成功后繼續(xù)操作其它頁(yè)面,發(fā)現(xiàn)post請(qǐng)求的請(qǐng)求頭,都會(huì)帶有token參數(shù)
2、這種請(qǐng)求其實(shí)比cookie更簡(jiǎn)單,直接把登錄后的token放到頭部即可
token關(guān)聯(lián)
1、用腳本實(shí)現(xiàn)登錄,獲取token參數(shù),獲取后傳參到請(qǐng)求頭就可以了
2、如果登錄有驗(yàn)證碼,前面的腳本登錄步驟就省略了,自己手動(dòng)登錄后獲取token
參考代碼
1 # coding:utf-82 import requests3 header = { # 登錄抓包獲取的頭部4 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",5 "Accept": "*/*",6 "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",7 "Accept-Encoding": "gzip, deflate",8 "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",9 "X-Requested-With": "XMLHttpRequest", 10 "Content-Length": "423", 11 "Connection": "keep-alive" 12 } 13 body = {"key1": "value1", 14 "key2": "value2"} # 這里賬號(hào)密碼就是抓包的數(shù)據(jù) 15 s = requests.session() 16 login_url = "http://xxx.login" # 自己找?guī)oken網(wǎng)址 17 login_ret = s.post(login_url, headers=header, data=body) 18 # 這里token在返回的json里,可以直接提取 19 token = login_ret.json()["token"] 20 # 這是登錄后發(fā)的一個(gè)post請(qǐng)求 21 post_url = "http://xxx" 22 # 添加token到請(qǐng)求頭 23 header["token"] = token 24 # 如果這個(gè)post請(qǐng)求的頭部其它參數(shù)變了,也可以直接更新 25 header["Content-Length"]="9" 26 body1 = { 27 "key": "value" 28 } 29 post_ret = s.post(post_url, headers=header, data=body1) 30 print post_ret.content
小結(jié)
Token的意義及用法
一.Token的來(lái)源:
? ? ? ?當(dāng)客戶端多次向服務(wù)端請(qǐng)求數(shù)據(jù)時(shí),服務(wù)端就需要多次從數(shù)據(jù)庫(kù)中查詢用戶名和密碼并進(jìn)行對(duì)比,判斷用戶名和密碼是否正確,并作出相應(yīng)提示。但這樣無(wú)疑會(huì)增加服務(wù)器端的運(yùn)行壓力,是否可以有一種方式只需要驗(yàn)證用戶就是之前的用
戶而不需要每次在客戶端請(qǐng)求數(shù)據(jù)時(shí)都需要查詢數(shù)據(jù)庫(kù)判斷用戶名和密碼是否正確。在這種請(qǐng)求下,引入了token來(lái)解決服務(wù)器端多次訪問(wèn)數(shù)據(jù)庫(kù)問(wèn)題。
1、什么是Token:?
? ? ? ?Token是服務(wù)端端生成的一串字符串,作為客戶端進(jìn)行請(qǐng)求時(shí)辨別客戶身份的的一個(gè)令牌。當(dāng)用戶第一次登錄后,服務(wù)器生成一個(gè)Token便將此Token返回給客戶端,以后客戶端只需帶上這個(gè)Token前來(lái)請(qǐng)求數(shù)據(jù)即可,無(wú)需再次帶上用戶名和密碼。
2、使用Token的目的:?
Token的目的是為了驗(yàn)證用戶登錄情況以及減輕服務(wù)器的壓力,減少頻繁的查詢數(shù)據(jù)庫(kù),使服務(wù)器更加健壯。
二. Token的運(yùn)用流程:
1、當(dāng)用戶首次登錄成功之后, 服務(wù)器端就會(huì)生成一個(gè) token 值,這個(gè)值,會(huì)在服務(wù)器保存token值(保存在數(shù)據(jù)庫(kù)中),再將這個(gè)token值返回給客戶端;
2、客戶端拿到 token 值之后,進(jìn)行保存 (保存位置由服務(wù)器端設(shè)置);
3、以后客戶端再次發(fā)送網(wǎng)絡(luò)請(qǐng)求(一般不是登錄請(qǐng)求)的時(shí)候,就會(huì)將這個(gè) token 值附帶到參數(shù)中發(fā)送給服務(wù)器.;
4、服務(wù)器接收到客戶端的請(qǐng)求之后,會(huì)取出token值與保存在本地(數(shù)據(jù)庫(kù))中的token值進(jìn)行比較;
5、如果兩個(gè) token 值相同, 說(shuō)明用戶登錄成功過(guò)!當(dāng)前用戶處于登錄狀態(tài);
6、如果沒有這個(gè) token 值, 沒有登錄成功;
7、如果 token 值不同: 說(shuō)明原來(lái)的登錄信息已經(jīng)失效,讓用戶重新登錄;
8、Django Rest framework中JWT的使用稍有差異,這里不做詳細(xì)說(shuō)明。
?總結(jié):現(xiàn)階段如何突出重圍呢?唯有不斷的學(xué)習(xí),下面是軟件測(cè)試到測(cè)試開發(fā)全職業(yè)生涯全套學(xué)習(xí)資料
【需要的可以點(diǎn)擊下方官方推廣小卡片掃碼備注000免費(fèi)領(lǐng)取】