Jmeter的代理服務(wù)器
1氧秘、啟動(dòng)Jmeter;
2省撑、“測(cè)試計(jì)劃”中添加“線(xiàn)程組”赌蔑;
3、“工作臺(tái)”中添加“HTTP代理服務(wù)器”竟秫;
4娃惯、配置代理服務(wù)器:Global Settings下面的端口配置:9988,HTTPS Domains配置 10.200.52.88肥败,目標(biāo)控制器配置:測(cè)試計(jì)劃>線(xiàn)程組
其中趾浅,端口:隨意設(shè)置;ip:電腦的ip
5拙吉、手機(jī)wifi設(shè)置代理:
“代理”---選擇“手動(dòng)”潮孽;
“代理服務(wù)器主機(jī)名”---“10.200.52.88”
“代理服務(wù)器端口”----“9988
6、手機(jī)連接剛才配置的wifi筷黔;
7往史、HTTP代理服務(wù)器--點(diǎn)擊“啟動(dòng)”按鈕,啟動(dòng)HTTP代理服務(wù)器佛舱;
8椎例、啟動(dòng)手機(jī)上需要測(cè)試的APP挨决,進(jìn)行業(yè)務(wù)操作;這個(gè)時(shí)候可以看到線(xiàn)程組抓到app上發(fā)出的請(qǐng)求了
9订歪、業(yè)務(wù)操作完畢脖祈,立即停止jemter上的“HTTP代理服務(wù)器”,否則一直抓包刷晋,線(xiàn)程組中會(huì)有很多無(wú)用的請(qǐng)求盖高;
10、在“線(xiàn)程組”刪除無(wú)關(guān)的請(qǐng)求眼虱;
11喻奥、保存jmx腳本;
12捏悬、添加察看結(jié)果樹(shù)撞蚕;
12、回放过牙。
cookie和session
1甥厦、cookie數(shù)據(jù)存放在客戶(hù)的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上寇钉。
2刀疙、cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙
考慮到安全應(yīng)當(dāng)使用session摧莽。
3庙洼、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪(fǎng)問(wèn)增多镊辕,會(huì)比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie蚁袭。
4征懈、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie揩悄。
5卖哎、所以將登錄信息,個(gè)人賬戶(hù)資料等重要信息存放為session删性;其他不會(huì)泄露個(gè)人隱私的信息如果需要保留亏娜,可以放在cookie中。
1.Cookie
添加方式:線(xiàn)程組-配置元件-HTTP Cookie 管理器蹬挺,如下圖:
Cookie的傳遞流程:
1.瀏覽器向某個(gè)URL發(fā)起HTTP請(qǐng)求(可以是任何請(qǐng)求维贺,比如GET一個(gè)頁(yè)面、POST一個(gè)登錄表單等)
2.對(duì)應(yīng)的服務(wù)器收到該HTTP請(qǐng)求巴帮,并計(jì)算應(yīng)當(dāng)返回給瀏覽器的HTTP響應(yīng)(HTTP響應(yīng)包括請(qǐng)求頭和請(qǐng)求體兩部分)
3.在響應(yīng)頭加入Set-Cookie字段溯泣,它的值是要設(shè)置的Cookie虐秋。
4.瀏覽器收到來(lái)自服務(wù)器的HTTP響應(yīng)。
5.瀏覽器在響應(yīng)頭中發(fā)現(xiàn)Set-Cookie字段垃沦,就會(huì)將該字段的值保存在內(nèi)存或者硬盤(pán)中
(Set-Cookie字段的值可以是很多項(xiàng)Cookie客给,每一項(xiàng)都可以指定過(guò)期時(shí)間Expires。 默認(rèn)的過(guò)期時(shí)間是用戶(hù)關(guān)閉瀏覽器時(shí)肢簿。)
6.瀏覽器下次給該服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)靶剑, 會(huì)將服務(wù)器設(shè)置的Cookie附加在HTTP請(qǐng)求的頭字段Cookie中。
(瀏覽器可以存儲(chǔ)多個(gè)域名下的Cookie池充,但只發(fā)送當(dāng)前請(qǐng)求的域名曾經(jīng)指定的Cookie桩引, 這個(gè)域名也可以在Set-Cookie字段中指定)。)
7.服務(wù)器收到這個(gè)HTTP請(qǐng)求纵菌,發(fā)現(xiàn)請(qǐng)求頭中有Cookie字段阐污, 便知道之前就和這個(gè)用戶(hù)打過(guò)交道了.
8.過(guò)期的Cookie會(huì)被瀏覽器刪除。
總之咱圆,服務(wù)器通過(guò)Set-Cookie響應(yīng)頭字段來(lái)指示瀏覽器保存Cookie笛辟, 瀏覽器通過(guò)Cookie請(qǐng)求頭字段來(lái)告訴服務(wù)器之前的狀態(tài)。
Cookie中包含若干個(gè)鍵值對(duì)序苏,每個(gè)鍵值對(duì)可以設(shè)置過(guò)期時(shí)間手幢。
2.Session
添加方式:線(xiàn)程組-前置處理器 -HTTP URL 重寫(xiě)修飾符,如下圖:
session的傳遞流程:
1.用戶(hù)提交包含用戶(hù)名和密碼的表單忱详,發(fā)送HTTP請(qǐng)求围来。
2.服務(wù)器驗(yàn)證用戶(hù)發(fā)來(lái)的用戶(hù)名密碼。
3.如果正確則把當(dāng)前用戶(hù)名(通常是用戶(hù)對(duì)象)存儲(chǔ)到redis中匈睁,并生成它在redis中的ID监透。
這個(gè)ID稱(chēng)為Session ID,通過(guò)Session ID可以從Redis中取出對(duì)應(yīng)的用戶(hù)對(duì)象航唆, 敏感數(shù)據(jù)(比如authed=true)都存儲(chǔ)在這個(gè)用戶(hù)對(duì)象中胀蛮。
4.設(shè)置Cookie為sessionId=xxxxxx|checksum并發(fā)送HTTP響應(yīng), 仍然為每一項(xiàng)Cookie都設(shè)置簽名糯钙。
5.用戶(hù)收到HTTP響應(yīng)后粪狼,便看不到任何敏感數(shù)據(jù)了。在此后的請(qǐng)求中發(fā)送該Cookie給服務(wù)器任岸。
6.服務(wù)器收到此后的HTTP請(qǐng)求后再榄,發(fā)現(xiàn)Cookie中有SessionID,進(jìn)行放篡改驗(yàn)證享潜。
7.如果通過(guò)了驗(yàn)證困鸥,根據(jù)該ID從Redis中取出對(duì)應(yīng)的用戶(hù)對(duì)象, 查看該對(duì)象的狀態(tài)并繼續(xù)執(zhí)行業(yè)務(wù)邏輯米碰。
實(shí)現(xiàn)上述過(guò)程窝革,在Web應(yīng)用中可以直接獲得當(dāng)前用戶(hù)购城。 相當(dāng)于在HTTP協(xié)議之上,通過(guò)Cookie實(shí)現(xiàn)了持久的會(huì)話(huà)虐译。這個(gè)會(huì)話(huà)便稱(chēng)為Session瘪板。
Token認(rèn)證
1、支持跨域訪(fǎng)問(wèn): Cookie是不允許垮域訪(fǎng)問(wèn)的漆诽,這一點(diǎn)對(duì)Token機(jī)制是不存在的侮攀,前提是傳輸?shù)挠脩?hù)認(rèn)證信息通過(guò)HTTP頭傳輸丑掺。(垮域訪(fǎng)問(wèn):兩個(gè)域名之間不能跨過(guò)域名來(lái)發(fā)送請(qǐng)求或者請(qǐng)求數(shù)據(jù))
2约急、無(wú)狀態(tài)(也稱(chēng):服務(wù)端可擴(kuò)展行):Token機(jī)制在服務(wù)端不需要存儲(chǔ)session信息,因?yàn)門(mén)oken 自身包含了所有登錄用戶(hù)的信息蜗搔,只需要在客戶(hù)端的cookie或本地介質(zhì)存儲(chǔ)狀態(tài)信息.
3供鸠、更適用CDN: 可以通過(guò)內(nèi)容分發(fā)網(wǎng)絡(luò)請(qǐng)求你服務(wù)端的所有資料(如:javascript畦贸,HTML,圖片等),而你的服務(wù)端只要提供API即可.
4楞捂、去耦: 不需要綁定到一個(gè)特定的身份驗(yàn)證方案薄坏。Token可以在任何地方生成,只要在你的API被調(diào)用的時(shí)候寨闹,你可以進(jìn)行Token生成調(diào)用即可.
5胶坠、更適用于移動(dòng)應(yīng)用: 當(dāng)你的客戶(hù)端是一個(gè)原生平臺(tái)(iOS, Android,Windows 8等)時(shí)繁堡,Cookie是不被支持的(你需要通過(guò)Cookie容器進(jìn)行處理)沈善,這時(shí)采用Token認(rèn)證機(jī)制就會(huì)簡(jiǎn)單得多。
6椭蹄、CSRF:因?yàn)椴辉僖蕾?lài)于Cookie闻牡,所以你就不需要考慮對(duì)CSRF(跨站請(qǐng)求偽造)的防范。
7绳矩、性能: 一次網(wǎng)絡(luò)往返時(shí)間(通過(guò)數(shù)據(jù)庫(kù)查詢(xún)session信息)總比做一次HMACSHA256計(jì)算 的Token驗(yàn)證和解析要費(fèi)時(shí)得多.
8澈侠、不需要為登錄頁(yè)面做特殊處理: 如果你使用Protractor 做功能測(cè)試的時(shí)候,不再需要為登錄頁(yè)面做特殊處理.
9埋酬、基于標(biāo)準(zhǔn)化:你的API可以采用標(biāo)準(zhǔn)化的 JSON Web Token (JWT). 這個(gè)標(biāo)準(zhǔn)已經(jīng)存在多個(gè)后端庫(kù)(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft).
使用Token的方法
不是在每一次請(qǐng)求時(shí)提供用戶(hù)名和密碼的憑證。我們可以讓用戶(hù)通過(guò)token交換憑證(we can allow the client to exchange valid credentials for a token)烧栋,這個(gè)token提供用戶(hù)訪(fǎng)問(wèn)服務(wù)器的權(quán)限写妥。Token通常比密碼更加長(zhǎng)而且復(fù)雜。比如說(shuō)审姓,JWTs通常會(huì)應(yīng)對(duì)長(zhǎng)達(dá)150個(gè)字符珍特。一旦獲得了token,在每次調(diào)用API的時(shí)候都要附加上它魔吐。然后扎筒,這仍然比直接發(fā)送賬戶(hù)和密碼更加安全莱找,哪怕是HTTPS。
把token想象成一個(gè)安全的護(hù)照嗜桌。你在一個(gè)安全的前臺(tái)驗(yàn)證你的身份(通過(guò)你的用戶(hù)名和密碼)奥溺,如果你成功驗(yàn)證了自己,你就可以取得這個(gè)骨宠。當(dāng)你走進(jìn)大樓的時(shí)候(試圖從調(diào)用API獲取資源)浮定,你會(huì)被要求驗(yàn)證你的護(hù)照,而不是在前臺(tái)重新驗(yàn)證层亿。
獲取一個(gè)Token我們需要做的第一件事就是讓客戶(hù)端通過(guò)他們的賬號(hào)密碼交換token桦卒。這里有2種可能的方法在RESTful API里面。第一種是使用POST請(qǐng)求來(lái)通過(guò)驗(yàn)證匿又,使服務(wù)端發(fā)送帶有token的響應(yīng)方灾。除此之外,你可以使用GET請(qǐng)求碌更,這需要他們使用參數(shù)提供憑證(指URL)裕偿,或者更好的使用請(qǐng)求頭。