Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
據(jù)工作需要,中國銀行數(shù)據(jù)中心部分職位面向社會公開招聘,現(xiàn)就有關(guān)事宜公告如下。
具體職位信息及任職資格要求詳見閱讀原文。
(一)遵紀(jì)守法、誠實(shí)守信,具有良好的個人品質(zhì)和職業(yè)道德,無不良從業(yè)記錄,愿意履行中國銀行員工義務(wù)和崗位職責(zé);
(二)全日制大學(xué)本科及以上學(xué)歷,留學(xué)歸國人員應(yīng)取得教育部留學(xué)服務(wù)中心的學(xué)歷學(xué)位認(rèn)證;
(三)應(yīng)聘工程師人員需具備4年及以上相關(guān)工作經(jīng)驗(全日制碩士研究生及以上學(xué)歷且學(xué)制為兩年以上的可減少1年年限),應(yīng)聘助理工程師人員需具備2年及以上相關(guān)工作經(jīng)驗;
(四)年齡一般不超過35周歲;
(五)身心健康,工作抗壓能力強(qiáng);
(六)符合中國銀行親屬回避的有關(guān)規(guī)定。
請登錄 http://chrcmp.chinahr.com/views/boc/social2019/job.html#title 按照網(wǎng)站提示填寫并投遞簡歷。每位應(yīng)聘者限報1個職位,如同意調(diào)劑其他職位可在申請的相應(yīng)欄位注明。應(yīng)聘者信息將被嚴(yán)格保密,所有資料恕不退還。應(yīng)聘者對個人填報信息的真實(shí)性、完整性負(fù)責(zé),如與事實(shí)不符,中國銀行有權(quán)取消錄用資格。
中國銀行采取滾動招聘方式,將在報名截止日期前分批次開展簡歷篩選、筆試、面試、體檢及背景調(diào)查等工作,擇優(yōu)確定人選。
報名截止時間:北京時間2020年4月30日24:00。
期待您的參與!
面的系列文章里提過, TAO 工具將模型訓(xùn)練的絕大部分技術(shù)難題都進(jìn)行抽象化處理,大幅度減輕開發(fā)人員的負(fù)擔(dān),唯獨(dú)數(shù)據(jù)集的收集與整理仍須由人工自行處理,這幾乎是留個操作人員的最后工作了。
大部分關(guān)于數(shù)據(jù)集的問題就是標(biāo)注格式的轉(zhuǎn)換,包括 Pascal VOC、OpenImages、COCO 這些影響力較大的數(shù)據(jù)集,個別使用 .xml、.csv、.json 等不同的文件格式,包括標(biāo)注欄位的內(nèi)容與順序也都不盡相同,這通常是困擾使用者的第一個門檻。
好在這些格式之間的轉(zhuǎn)換,只需要一些簡單的 Python 小工具就能完成,雖然繁瑣但也沒有什么技術(shù)難度。
在 https://docs.nvidia.com/tao/tao-toolkit/text/data_annotation_format.html 里,提供 TAO 工具針對不同應(yīng)用類型所支持的格式,簡單整理如下:
這里只將使用率較高的圖像分類與物件檢測兩種應(yīng)用的數(shù)據(jù)格式進(jìn)行說明,其他應(yīng)用的數(shù)據(jù)格式請自行參照前面提供的說明連接。
1. 圖像分類的“目錄結(jié)構(gòu)”格式:
這是以“圖像”為單位的分類應(yīng)用,每張圖片只會有一個分類屬性,因此格式相對簡單,只要將圖片根據(jù)目錄結(jié)構(gòu)的規(guī)則進(jìn)行分類就可以。
為了配合模型訓(xùn)練的工作,我們需要將數(shù)據(jù)集切割成 “train”、”val”、“test” 三大類,分別作為訓(xùn)練、校驗與測試用途。
在每個數(shù)據(jù)集下面再延伸出“分類屬性”子目錄,例如做早期用于識別 0~9 手寫數(shù)字的 MNIST 數(shù)據(jù)集,就得在 train/val/test 下面各添加 “0”~“9” 共10個子目錄,合計是 2 層 33 個目錄結(jié)構(gòu)。
如果是使用 ILSVRC 競賽的 1000 分類 ImageNet 數(shù)據(jù)的話,就得根據(jù)這 1000 個分類在三個目錄下個創(chuàng)建 1000 個分類屬性子目錄,例如 dog、cat、person 等等,雖然很繁瑣但也不復(fù)雜,對模型訓(xùn)練工具而言,圖像文件名稱是無所謂的。
數(shù)據(jù)來源通常是兩大類,第一種是自行從網(wǎng)上收集與手動拍攝,第二種是從現(xiàn)成數(shù)據(jù)集進(jìn)行提取,包括 ImageNet、Pascal VOC、COCO、OpenImages 這些知名的通用數(shù)據(jù)集,都有非常豐富的資源。
但現(xiàn)在的最大問題是,如何從這些數(shù)據(jù)集中提取所需要的圖像,并根據(jù)“目錄結(jié)構(gòu)”存放成 TAO 所支持的格式?
這個部分需要使用者自行研究所需要的數(shù)據(jù)集的結(jié)構(gòu),撰寫簡單的提取工具。例如 TAO 提供的 classification 圖像分類模型訓(xùn)練范例項目中,使用 Pascal VOC 2012 數(shù)據(jù)集來進(jìn)行圖像分類的模型訓(xùn)練,但是這個數(shù)據(jù)集使用下圖左的路徑分布方式,與TAO所支持的“目錄結(jié)構(gòu)”格式并不相同,那么該如何處理?
我們必須對這個數(shù)據(jù)集的相關(guān)資源有進(jìn)一步了解。在 VOC 數(shù)據(jù)集的 ImageSets/Main 里存放 63 個 .txt 文件,刨去 train.txt、trainval.txt 與 val.txt 三個文件,其余 60 個分屬于數(shù)據(jù)集的 20 個圖像類別的三種用途,例如 xxx_trainval.txt、xxx_train.txt、xxx_val.txt,其中前者的內(nèi)容是后面兩個文件的合并。
在 classification.ipynb 腳本中提供兩段數(shù)據(jù)格式轉(zhuǎn)換的Python代碼(請自行查閱),在 “A. Split the dataset into train/val/test” 的環(huán)節(jié),執(zhí)行以下處理:
(1) 將存放在上圖左邊 “JPEGImages” 里面的圖像文件,借助 xxx_trainval.txt 分類列表的協(xié)助,復(fù)制到上圖右方的 “formated” 下的20個分類子目錄;
(2) 從 “formated” 的每一類圖像數(shù)據(jù),分別切割出 train/val/test 三大分類,放到 “split” 目錄下,作為后面轉(zhuǎn)換成 tfrecords 的數(shù)據(jù)源。
經(jīng)過兩次轉(zhuǎn)換處理后,在這里的數(shù)據(jù)內(nèi)容就該有 3 份相同圖像數(shù)據(jù),只不過使用不同的路徑結(jié)構(gòu)去存放而已。如果不想浪費(fèi)存儲空間的話,可以將 VOCdeckit 與 formatted 兩個目錄刪除,只需要保留 split 目錄的結(jié)構(gòu)就足夠。
至于其他數(shù)據(jù)的轉(zhuǎn)換,也需要使用者對該數(shù)據(jù)集有充分的了解,畢竟學(xué)習(xí)數(shù)據(jù)轉(zhuǎn)換的精力要遠(yuǎn)遠(yuǎn)低于自行收集的時間,絕對是劃算的。
2、物件檢測的 KITTI 格式:
絕大部分通用數(shù)據(jù)集為了提高普及度,都提供多種應(yīng)用類別的標(biāo)注 (annotations) 內(nèi)容,其中 “物件位置 (location)” 是最基本的數(shù)據(jù),其他還有與人體相關(guān)的骨骼結(jié)構(gòu)標(biāo)注、語義分割的材質(zhì)標(biāo)注、場景描述的標(biāo)注等等,每種數(shù)據(jù)集都有其側(cè)重點(diǎn),因此內(nèi)容種類與格式也都不盡相同,這是大伙要使用數(shù)據(jù)集的第一個門檻。
物件檢測是比圖像分類更進(jìn)一步的深度學(xué)習(xí)應(yīng)用,要在一張圖像中找出符合條件的物件,數(shù)量沒有限定,就看訓(xùn)練出來的模型具備哪些分類功能。
每個數(shù)據(jù)集的差異,就是將所包含的圖像,都進(jìn)行不同功能與不同細(xì)膩度的標(biāo)注內(nèi)容,這些動輒數(shù)萬張到上千萬張的圖像、分類數(shù)量從20到數(shù)千的不同數(shù)據(jù)集,也都使用不同的文件格式去儲存這些標(biāo)注內(nèi)容,有些是圖像文件與標(biāo)注文件一一對應(yīng),有些則是將上千萬張的標(biāo)注內(nèi)容全部存在一個巨大的標(biāo)注文件里。
例如 COCO 數(shù)據(jù)集將數(shù)百萬張的標(biāo)注存放在上百兆的 .json 文件里、 OpenImages 數(shù)據(jù)集上千萬張的標(biāo)注存放在 1.3GB 的 .csv 文件中,而 Pascal VOC 與 ImageNet 的標(biāo)注文件則提供一對一對應(yīng)的 .txt 與 .xml 格式,莫衷一是。
事實(shí)上對應(yīng)物件檢測的應(yīng)用,我們只需要標(biāo)注文件中最基本的元素,包括“類別”與“位置”這兩組共 5 個欄位數(shù)據(jù)就可以。類別部分有的數(shù)據(jù)集直接使用“類別名”,有的數(shù)據(jù)集只提供“類別編號”,然后再到類別文件中尋找對應(yīng);位置信息部分,有些提供“左上角”與“右下角”坐標(biāo)位置,有些使用“起點(diǎn)坐標(biāo)”與“長寬”來表示,都是一組 4 個浮點(diǎn)值。
因此,要從龐大的數(shù)據(jù)集中,提取我們所需要的類別與位置標(biāo)注,就必須對個別標(biāo)注結(jié)構(gòu)進(jìn)行研究,才能得到我們想要的結(jié)果,這個步驟是跳不過去的。網(wǎng)上雖然有很多標(biāo)注格式轉(zhuǎn)換的功能,但是通用性受限制,還是需要進(jìn)行局部修改。
現(xiàn)在來看看 TAO 工具在物件檢測模型訓(xùn)練所支持KITTI格式內(nèi)容,主要欄位如下:
其標(biāo)注文件是.txt純文字格式,在文件內(nèi)的表達(dá)方式如下:
熟悉物件檢測應(yīng)用的人,可能會覺得這個 KITTI 標(biāo)注格式中,有一半以上的欄位是用不上的,為何英偉達(dá)卻十分偏好這個格式呢?
如果將視野放大到自動駕駛與 3D 應(yīng)用領(lǐng)域的話,就能理解英偉達(dá)選擇這個格式的理由,因為 KITTI 數(shù)據(jù)集是由德國卡爾斯魯厄理工學(xué)院和豐田美國技術(shù)研究院聯(lián)合創(chuàng)辦,是目前國際上最大的自動駕駛場景下的計算機(jī)視覺算法評測數(shù)據(jù)集。
在物件檢測應(yīng)用中只需要用到“類名”與“邊界框坐標(biāo)”這兩部分,如果從其他數(shù)據(jù)集提取數(shù)據(jù)時只要找出這 5 個數(shù)據(jù),如果坐標(biāo)格式為“起點(diǎn)坐標(biāo)+長寬”的格式,也能簡單轉(zhuǎn)換成“起點(diǎn)坐標(biāo)+重點(diǎn)坐標(biāo)”形式,寫入對應(yīng)的 KITTI 標(biāo)注文件中,其他欄位的內(nèi)容 “補(bǔ) 0” 就可以,所以整個轉(zhuǎn)換過程還不是太麻煩。
在 TAO 的視覺項目中的 face-mask-detection/data_utils 里,提供大約 4 轉(zhuǎn)換成 KITTI 格式的工具,能提供大家作為參考。
只要能將不同數(shù)據(jù)集之間的格式轉(zhuǎn)換弄通,就能非常高效的從龐大的數(shù)據(jù)集資源中,輕松獲取我們所需要的類別數(shù)據(jù),進(jìn)一步訓(xùn)練出自己專屬的模型,因此這個過程對使用深度學(xué)習(xí)的工程師是很重要的基本工作。
fiddler大致分為5 個區(qū)域,分別為菜單欄、工具欄、會話監(jiān)控列表、輔助選項卡、狀態(tài)欄
如圖
主要的功能其實(shí)很簡單主要又包含file(文件)、edit(編輯)、Rules(規(guī)則)、 Tools(工具) 、View(視圖) Help(幫助)
file菜單主要包含新建視圖、加載一個保存好的抓包會話文件、保存所有會話列表數(shù)據(jù)到一個.saz文件中等等.
edit菜單主要包含一些編輯的功能,例如對會話的:復(fù)制 粘貼 拷貝等操作
Rules規(guī)則菜單所謂規(guī)則 指的也就是抓包的規(guī)則, 按照設(shè)置的一系列規(guī)則來顯示抓取的數(shù)據(jù)會話常見的勾選設(shè)置有:
Hide CONNECTs(把建立通道連接隱藏了)的規(guī)則
Hide 304s(也就是304相關(guān)的會話也隱藏了)的規(guī)則
Hide image Request (也就是隱藏和圖片相關(guān)會話)的規(guī)則
其他Rules規(guī)則菜單中的規(guī)則選項大家可以自行嘗試!
Tools(工具菜單) 這個菜單多數(shù)是針對fiddler這款工具本身的一些網(wǎng)絡(luò)設(shè)置
View(視圖菜單) 這個菜單是針對fiddler顯示界面與視圖的一些設(shè)置,如果有些工具欄和按鈕沒有顯示,就可以在這里來查找!
Help(幫助菜單) 一些關(guān)于fiddler和網(wǎng)絡(luò)的幫助信息文檔,有興趣的可以去查查看!
工具欄上的快捷按鈕,也是平常我們在抓包過程當(dāng)中經(jīng)常會使用到的,這里我列舉一些常會用到的工具按鈕
使用這個工具按鈕你可以給某個會話添加一些描述或者備注信息!
如圖
這個按鈕的作用其實(shí)就是,重新發(fā)出一次當(dāng)前你所選擇的會話請求, 也就是說你點(diǎn)擊一下Replay就會通過Fiddler來幫你發(fā)一次請求到服務(wù)器去!
也可以通過選擇一個會話之后點(diǎn)擊鍵盤上的R鍵進(jìn)行快速重放操作!
如圖
如果你想一次性向某個會話發(fā)送n次請求, 那么可以先選擇一個會話,然后按住shift+R 或者 按住shift+Replay按鈕或者shift + u來輸入一個請求的次數(shù)!
如圖
這種操作可以對一些普通的基礎(chǔ)服務(wù)器做一個壓力測試, 也就相當(dāng)于一個簡單的并發(fā)測試
刪除會話按鈕顧名思義就是用來刪除列表中的會話, 它這個按鈕內(nèi)部包含了刪除會話的一些過濾方法
比如:
1.Remove All(刪除全部會話) 快捷鍵為ctrl+x
2.images (刪除圖片相關(guān)的請求會話)
3.connect (刪除連接相關(guān)的請求會話)
4.Non-200s (刪除非200狀態(tài)的請求會話)
5.Non-Browser(刪除非瀏覽器的請求會話)
等等...
當(dāng)然刪除會話的方法還有很多,比如你在會話列表中選擇了某幾個會話想保留,其他會話全部刪除
這種操作可以先按住ctrl然后選擇要保留的會話,然后再按下shift+delete即可!
如圖
當(dāng)然也可以在會話列表中選擇某一個會話然后右鍵選擇Remove命令來進(jìn)行刪除
selected Session (刪除選擇的會話)
Unselected Session (刪除未選擇的會話)
All Session (刪除全部會話)
如圖
當(dāng)然也可以直接點(diǎn)擊鍵盤上的delete來進(jìn)行刪除會話!
當(dāng)把這個按鈕點(diǎn)擊上了之后,會對所有返回的請求會話進(jìn)行解碼
要知道http有的時候返回的正文內(nèi)容是被編碼之后的,若要解碼全部會話中的響應(yīng)報文可以先把這個按鈕點(diǎn)選上, 在抓包的時候響應(yīng)報文就會自動解碼其中的正文內(nèi)容!
如圖
當(dāng)然你也可以不用點(diǎn)選這個按鈕,要解碼那個會話,再選擇會話的時候點(diǎn)擊右邊響應(yīng)報文中的Response body is encoded click to decode(解碼響應(yīng)報文) 就可以了!
如圖
這個按鈕的功能可以幫你規(guī)定會話列表中最多能夠保留多少個會話, 根據(jù)需求自己選擇就可以了!
如圖
這個功能有點(diǎn)意思, 可以瞄準(zhǔn)你想要抓取的對象
比如說: 我們現(xiàn)在要抓取一個ie瀏覽器的請求數(shù)據(jù)包, 那么可以以下操作
如圖
看到Process(進(jìn)程)了吧, 都是瞄準(zhǔn)的ie瀏覽器來進(jìn)行抓取的請求!
find按鈕就是用來進(jìn)行搜索和查找會話的, 我們可以根據(jù)一些條件快速定位到想要的會話請求
它對應(yīng)的快捷鍵為ctrl+f
如圖
一些其他選項的含義如下表:
選項 | 描述 |
Match case | 表示區(qū)分大小寫 |
Regular Expression | 正則表達(dá)式 |
Search binaries | 搜索二進(jìn)制文件 |
Decode compressed content | 解碼壓縮內(nèi)容 |
Search only selected sessions | 只搜索選擇的請求 |
Result Highlight | 搜索結(jié)果強(qiáng)調(diào)顏色 |
這個按鈕會把當(dāng)前所有的會話全部以一個.saz的一個歸檔文件進(jìn)行保存!
這樣也方便發(fā)給其他的開發(fā)和測試人員觀看, 這沒什么好說的!
這個按鈕就是單純的截圖,截圖的時候會產(chǎn)生一個倒計時, 然后把截好的圖片通過本地發(fā)送請求到localhost, 也可以拷貝出來! 用處不是很大!
如圖
這個按鈕的作用就是可以快速的打開當(dāng)前電腦里已安裝的瀏覽器 沒什么太大特別的!
這個按鈕的作用就是清除緩存, 注意它是清除的ie瀏覽器的緩存
這個按鈕的功能可以讓文本進(jìn)行編碼與解碼
如圖
會話列表 主要是fiddler所抓取到的每一條http請求都會顯示到這里!
每一條所抓取到的信息我們稱之為一個session(會話),有編程基礎(chǔ)的朋友肯定馬上就能理解這個會話的含義
會話列表中又包含了很多欄位,而每一個欄位都有其自己的含義,用來描述當(dāng)前每一條會話的詳細(xì)信息!
各個欄位的含義描述如下表:
名稱 | 描述 |
# | 顯示抓取的請求id順序和類型圖標(biāo),id從1開始遞增 |
Result | HTTP響應(yīng)結(jié)果狀態(tài)碼 |
Protocol | 當(dāng)前請求會話所使用的協(xié)議,如HTTP/HTTPS/FTP等等 |
Host | 請求地址的主機(jī)名或域名 |
URL | 從服務(wù)器請求資源的文件路徑,有的時候也包含GET請求的具體參數(shù) |
Body | 響應(yīng)內(nèi)容的大小, 單位為字節(jié) 也就是響應(yīng)主體(Response Body)中的字節(jié)數(shù) |
Caching | 請求的緩存過期時間或者是對緩存的的控制相關(guān)描述 通常為Cache-Control響應(yīng)頭中的值! |
Content-Type | 響應(yīng)內(nèi)容的類型,以及編碼類型 |
Process | 發(fā)送此請求的程序與進(jìn)程id:例如chrome:1604 |
Comments | 允許用戶給請求會話添加備注文本信息 |
Custom | 允許用戶設(shè)置使用腳本設(shè)置自定義字段 |
........................................ |
如圖
首先在每一個欄位上面右鍵都會出現(xiàn)以下三個選項
如圖
1.Search this column (搜索此欄)
意思是它會根據(jù)每一個欄位的特性來進(jìn)行條件搜索此欄位, 這樣可以快速幫助用戶精準(zhǔn)找到想要的數(shù)據(jù)信息!
如圖
2.Flag duplicates (重復(fù)會話標(biāo)志)
這個功能可以給我們的會話打上標(biāo)志背景, 并且這個背景顏色標(biāo)記的是當(dāng)前列中存在重復(fù)的數(shù)據(jù)
舉個例子吧: 例如我們在URL這一欄上右鍵選擇Flag duplicates 那么就會在當(dāng)前列中存在重復(fù)URL的數(shù)據(jù)上打上一個綠色的背景
如圖
3.Hide this column (隱藏此列)
這個沒什么說的 就是把當(dāng)前這一列欄位給隱藏了!
4.Ensure all columns are visible(確保所有列都可見)
這個功能就相當(dāng)于一個復(fù)位按鈕,如果你隱藏了某個欄位又不知道如何把它顯示出來,那么就直接點(diǎn)選它就可以全部欄位都復(fù)位!
5.Costomize columns(自定義欄位)
自定義欄位,是對所有列進(jìn)行自定義, 其實(shí)也相當(dāng)于新增一個欄位,而不是選擇的欄位
舉個例子 我們來給Fiddler添加一個IP顯示欄位
fiddler默認(rèn)是不顯示ip欄位的,那么我們可以直接點(diǎn)擊菜單欄中的Rules--->Customize Rules
打開自定義規(guī)則對話框,這里其實(shí)應(yīng)該說是會啟動Fiddler ScriptEditor(Fiddler的腳本編輯器)
這里就是允許用戶通過腳本來添加或自定義列
如圖
然后我們按下鍵盤上的Ctrl+F查找關(guān)鍵字為static function Main()的字符串, 然后添加顯示IP欄位的相關(guān)代碼:
代碼如下
FiddlerObject.UI.lvSessions.AddBoundColumn("欄位名稱自定義", 120, "X-HostIP");
如圖
這樣一來在會話列表中就會顯示請求服務(wù)器的的IP地址了!
如圖
還有一點(diǎn)就是細(xì)心的朋友肯定發(fā)現(xiàn)在抓包的時候第一欄位除了顯示請求順序之外,還顯示了請求的文件類型圖標(biāo),也就是每個會話都標(biāo)有一個對應(yīng)的類型圖標(biāo)
如圖
但是但通常不知道圖標(biāo)代表著什么意思,這里我就來給大家挨個解釋一下:
如下表
icon | 含義 |
正在將請求發(fā)送到服務(wù)器 | |
正在從服務(wù)器讀取響應(yīng) | |
請求在斷點(diǎn)處暫停 | |
響應(yīng)在斷點(diǎn)處暫停 | |
請求使用HTTP HEAD方法;反應(yīng)應(yīng)該沒有身體 | |
請求使用的 HTTP POST 方法 | |
請求使用HTTP連接方法;這將建立用于 HTTPS 流量的隧道 | |
響應(yīng)是 HTML | |
響應(yīng)是圖像 | |
響應(yīng)是一個JS腳本 | |
響應(yīng)是級聯(lián)樣式表 | |
響應(yīng)為 XML | |
響應(yīng)為 JSON | |
響應(yīng)是音頻文件 | |
響應(yīng)是視頻文件 | |
響應(yīng)是一個 Silverlight 小程序 | |
響應(yīng)是一個 Flash 小程序 | |
響應(yīng)是字體 | |
通用成功響應(yīng) | |
響應(yīng)是 HTTP/300,301,302,303 或 307 重定向 | |
響應(yīng)為 HTTP/304:使用緩存版本 | |
響應(yīng)是對客戶端憑據(jù)的請求 | |
響應(yīng)是服務(wù)器錯誤 | |
會話被客戶端、Fiddler 或服務(wù)器中止。 | |
表示請求的格式為html格式 | |
Fiddler中提供了很多對請求會話的復(fù)制操作,讓你更好的去獲取想要的數(shù)據(jù)!
你可以在會話列表中選擇你要操作的會話, 然后右鍵選擇copy
如圖
其中子菜單含義如下表:
菜單名稱 | 描述 |
Just URL | 復(fù)制請求的主機(jī)名+URL資源的路徑 |
Terse Summary | 復(fù)制請求的方法+URL+響應(yīng)狀態(tài) |
this Column | 復(fù)制當(dāng)前請求中的本列信息 |
Headers Only | 以格式化形式復(fù)制當(dāng)前會話的請求報文和響應(yīng)報文 |
Session | 復(fù)制當(dāng)前原始會話 跟Headers Only差不多 |
Response DataURL | 以及base64編碼的形式復(fù)制響應(yīng)數(shù)據(jù)的URL |
Full Summary | 復(fù)制當(dāng)前會話信息和對應(yīng)的列 |
根據(jù)需求進(jìn)行選擇就可以了!
Fiddler對會話的存儲也制定了一些規(guī)則
你可以在會話列表中選擇你要操作的會話, 然后右鍵選擇save
其中save菜單下有四個選項
Selected Session(選定的會話) 旗下子菜單選項如下
如圖
選項 | 描述 |
in ArchiveZIP | 把當(dāng)前所選擇的請求會話保存到.saz文件中 |
as Text | 把當(dāng)前所選擇的請求會話保存到文本文件中 包含請求報文+響應(yīng)報文+響應(yīng)體 |
as Text (Headers only) | 把當(dāng)前所選擇的請求會話保存到文本文件中 包含請求報文+響應(yīng)報文 |
Request(請求)旗下子菜單選項如下
選項 | 描述 |
Entire Request | 把當(dāng)前所選擇的請求會話保存到文本文件中 只有請求報文 |
Request Body | 保存當(dāng)前請求會話的請求正文為文本文件 |
Response(響應(yīng))子菜單如下:
選項 | 描述 |
Entire Response | 把當(dāng)前所選擇的請求會話保存到文本文件中 只有響應(yīng)報文+響應(yīng)體 |
Response Body | 保存當(dāng)前請求會話的響應(yīng)體為文本文件 |
...and Open as local File(作為本地文件打開)
這個選項的意思就是保存為本地的一個html文件 并且進(jìn)行打開!
我們有時候保存會話查看時,會發(fā)現(xiàn)返回的響應(yīng)體是亂碼
如圖
遇到這種問題,主要是需要解碼就行了
在Inspectors 會話響應(yīng)中點(diǎn)擊Response body is encodee.click to decode后,重新保存就沒亂碼了。
也可以選中上圖會話框上的decode按鈕,這樣就自動解碼了
如圖
其實(shí)如果你了解了http的基礎(chǔ)知識,那么會話列表中的欄位信息也會很快的理解!
而你也不用每一個都去記住,要用的時候來查一查就行了!
狀態(tài)欄上又分為幾個小區(qū)域分別為:快速執(zhí)行命令框(QuickExec)、
這個輸入框的作用就是允許用戶快速輸入并啟動一些腳本命令!
如圖
一些關(guān)于QuickExec的鍵盤快捷鍵
比如點(diǎn)擊 Alt+Q 可快速將焦點(diǎn)設(shè)置為快速執(zhí)行命令框如果 Fiddler 未處于活動狀態(tài),請先按Ctrl+ALT+F激活 Fiddler
在快速執(zhí)行命令框中,按 Ctrl+I 會在快速執(zhí)行命令框中插入當(dāng)前所選會話 URL
舉個例子
我們可以在快速執(zhí)行命令框輸入 cls 或 clear命令來快速的清空會話列表
如圖
常見命令如下表
命令 | 對應(yīng)欄位 | 描述 | 案例 |
? | all | 問號后邊跟一個字符串,可以從會話列表中篩選出包含這個字符串的所有請求 | ?baidu |
> | Body | 可以從會話列表中篩選出請求大小的會話,也就是大于這個數(shù)字請求 | >100 |
< | Body | 可以從會話列表中篩選出請求大小的會話,也就是小于這個數(shù)字請求 | <100 |
= | Result | 等于號后面跟數(shù)字,可以從會話列表中篩選出對應(yīng)的HTTP狀態(tài)碼的會話 | =404 |
@ | Host | @后面跟Host,可以從會話列表中篩選出相應(yīng)的域名 | @www.baidu.com |
select | Content-Type | select后面跟響應(yīng)類型,可以從會話列表中篩選出相關(guān)的會話類型 | select image |
cls | All | 清空當(dāng)前所有請求 | cls |
dump | All | 將所有請求打包成.saz壓縮包,默認(rèn)會保存到C:\Users\用戶名\Documents\Fiddler2\Captures目錄下 | dump |
start | All | 開始監(jiān)聽請求 | start |
stop | All | 停止監(jiān)聽請求 | stop |
.............. | .................................. | ................. |
更多命令 可以查看官方文檔, 這里就不再過多贅述了,關(guān)于快速執(zhí)行命令框后面的斷點(diǎn)中還會用到!
All Processes可以對抓包進(jìn)行篩選,可以根據(jù)自己情況選擇。
如圖
也就是說在抓包的時候,是顯示所有會話進(jìn)程還是瀏覽器請求的會話進(jìn)程 還是不是瀏覽器請求的會話進(jìn)程 或者全部隱藏,根據(jù)自己的需求進(jìn)行選擇就行了!
這個小區(qū)域,如果你用鼠標(biāo)點(diǎn)擊一下就會出現(xiàn)斷點(diǎn)的設(shè)置
如圖
狀態(tài) | 描述 |
意思就是請求之前斷點(diǎn), 也就是當(dāng)這個狀態(tài)啟動的時候,那么你發(fā)送的請求就會卡在這里! | |
響應(yīng)在斷點(diǎn)處暫停, 也就是說服務(wù)器已經(jīng)返回請求的數(shù)據(jù)了,但是被Fiddler在中間卡住了,還沒有到客戶端這一邊! | |
........... |
關(guān)于斷點(diǎn)我會后面會詳細(xì)講到!
狀態(tài)欄的其他地方就是顯示當(dāng)前會話的數(shù)量以及當(dāng)選所選擇會話的URL地址
Fiddler中輔助標(biāo)簽工具欄算是用得比較多的,因為經(jīng)常要在這里查看抓取數(shù)據(jù)包的詳細(xì)信息!
接下來我就詳細(xì)拆分輔助標(biāo)簽工具欄的各個區(qū)域來講解!
用于查看請求的性能數(shù)據(jù),統(tǒng)計與分析, 也就是說它就是對當(dāng)前請求的性能分析數(shù)據(jù)
當(dāng)你點(diǎn)擊一個HTTP請求會話的時候,就可以看到Statistics里面有關(guān)于當(dāng)前HTTP請求的性能以及數(shù)據(jù)分析!
例如: 一些TCP/IP的連接時間,DNS的解析時間、資源消耗、各個國家的請求網(wǎng)絡(luò)帶寬對比等信息
如圖
如果你是一個專業(yè)的前端開發(fā)者,這些數(shù)據(jù)就應(yīng)該重點(diǎn)關(guān)注一下!
你有沒有想過在Fiddler中如何快速查看http請求與響應(yīng)報文呢?
其實(shí)當(dāng)我們在會話列表中雙擊某一個會話請求就會自動跳轉(zhuǎn)到Inspectors選項卡
也就是當(dāng)抓包成功之后, 就可以在左側(cè)窗口中選擇你要查看的地址來進(jìn)行查看抓取的http信息數(shù)據(jù), 當(dāng)選擇了相應(yīng)的地址之后,在右側(cè)選項卡中 選擇Inspectors(檢查器), 然后再點(diǎn)擊一下Raw就可以按照原生形式來進(jìn)行查看到相應(yīng)的http請求報文與http響應(yīng)報文, 分為上下兩個部分,上半部分是請求頭部分,下半部分是響應(yīng)頭部分。
如圖
對于每一部分,提供了多種不同格式查看每個請求和響應(yīng)的內(nèi)容, Inspectors選項卡中還有其他的
Inspectors選項卡上半部分HTTP請求內(nèi)容的子集選項卡如下表
名稱 | 含義 |
Headers | 以層級的形式來顯示HTTP請求頭部的相關(guān)內(nèi)容信息 |
TextView | 以文本的形式展示 |
SytaxView | 查看具體的請求體 或者附帶的鍵與值 |
WebForms | 可以通過它看到url提交的相關(guān)參數(shù)信息 |
HexView | 以16進(jìn)制進(jìn)行查看請求! |
Auth | 查看請求數(shù)據(jù)權(quán)限 |
Cookie | 查看請求cookie信息 |
Raw | 原生查看http |
JSON | 以JSON格式展開查看請求信息! |
XML | 以xml格式展開查看請求信息! |
Inspectors選項卡下半部分HTTP響應(yīng)內(nèi)容 的子集選項卡如下表
名稱 | 含義 |
Transformer | |
Headers | 以層級方式來展示HTTP響應(yīng)頭部信息 |
TextView | 以文本方式來展示HTTP響應(yīng)正文信息 |
SyntaxView | 以語法高亮來展示HTTP響應(yīng)正文信息 |
ImageView | 以圖片的形式來展示響應(yīng)信息, 前提是你選擇的會話是一個圖片響應(yīng) |
HexView | 以16進(jìn)制來查看響應(yīng)信息 |
Webview | 以html編譯顯示之后的形式來查看響應(yīng)結(jié)果 |
Auth | 查看響應(yīng)權(quán)限 |
Caching | 查看響應(yīng)緩存相關(guān)信息 |
cookie | 查看響應(yīng)cookie信息 |
Raw | 以原生格式展示響應(yīng)信息 |
JSON | 以json展示響應(yīng)信息 |
xml | 以xml展示響應(yīng)信息 |
AutoResponder也叫做自動響應(yīng)器
它允許你攔截指定規(guī)則的請求,并把響應(yīng)結(jié)果重定向到一個本地資源 或 直接使用Fiddler內(nèi)置的資源,從而代替服務(wù)器來自定義一個你想要的響應(yīng)。 說白一點(diǎn)就是篡改響應(yīng)
這個功能在我們做開發(fā)測試的時候也是非常有用的 ,使用它我們可以不影響用戶體驗的前提下進(jìn)行測試!
舉個例子 當(dāng)我們請求百度頁面的時候, 抓取到其中一個百度logo圖片會話,最后把這個圖片會話響應(yīng)給替換成其他資源!
首先我們可以在Fiddler中的Inspectors結(jié)合會話列表找到這個圖片的連接資源URL地址: 可能有多個
例如
然后切換到AutoResponder選項卡, 在Rule Editor規(guī)則編輯中填入要請求的資源地址和替換成的響應(yīng),最后點(diǎn)擊save保存一下, 就可以了!
溫馨提醒 最好要把以下這3個復(fù)選框勾上!
Enable Rules(啟用規(guī)則)
Accept all connects(接受所有連接)
Unmatched requests passthrough(不匹配的請求傳遞)
如圖
那么下一次你再次請求百度頁面的時候,如果再次遇見到這個百度logo圖片的資源地址,那么請求就會被中間層的Fiddler所劫持并篡改成為我們設(shè)置的某個響應(yīng)資源,并返回給客戶端, 明白了吧, 這個響應(yīng)不是從服務(wù)器回來的,而是我們?nèi)藶?/span>篡改的!
注意測試的時候,最好使用去緩存刷新來測試, 瀏覽器快捷鍵shift+F5
效果如圖
Fiddler其實(shí)還有很多內(nèi)置的響應(yīng)規(guī)則,根據(jù)實(shí)際情況和需求來決定如何測試
如圖
我們還可以自定義編輯響應(yīng)也就是Edit Response
舉個例子 我們可以直接編輯服務(wù)器返回響應(yīng)信息的詳細(xì)內(nèi)容,然后再返回給客戶端
如圖
效果如下
響應(yīng)都可以隨便篡改 Fiddler還有什么事情不能做的!
總之通過這種中間截獲的手段并篡改響應(yīng)資源的手法就可以實(shí)現(xiàn)很多資源響應(yīng)的修改,你也可以修改html、css、js等資源都是可以的 ,這極大方便了我們做開發(fā)模擬請求和響應(yīng)測試!
它可以允許我們自定義請求報文來發(fā)送到服務(wù)端,當(dāng)然也可以手動創(chuàng)建一個新的請求,也可以從會話列表中拖拽一個現(xiàn)有的請求去發(fā)送!
在Parsed(解析模式)下我們只需要提供簡單的URL地址就可以了, 并且還可以在RequestBody中去定制一些屬性,例如模擬瀏覽器消息頭User-Agent
但是Composer通常在我們開發(fā)項目當(dāng)中用于接口測試 也是經(jīng)常用于測試一些api接口的最好方法!
當(dāng)然有時候也可以通過Composer來校驗后端接口的嚴(yán)謹(jǐn),從而跳過一些前端的限制,去直接訪問后端代碼的邏輯!
Composer下還有幾個子集選項卡:Parsed、Raw、Scratchpad、Options
具體解釋如下表:
選項卡 | 描述 |
Parsed | 表示已經(jīng)被解析的整個HTTP請求,包括請求行,請求頭和請求體,說通俗一點(diǎn)也就是最直觀的看到Request請求的詳細(xì)展示 |
Raw | 按照真實(shí)原生HTTP請求標(biāo)準(zhǔn)來進(jìn)行展示的格式! |
Scratchpad | 可以存儲已經(jīng)收集好的HTTP請求,可存儲多個不同的請求, 你可以理解為請求回放功能, 鼠標(biāo)連續(xù)點(diǎn)擊三次即可選中要選擇的請求來進(jìn)行發(fā)送! |
Options | 設(shè)置一些請求選項 |
其中options中的設(shè)置項如下表:
名稱 | 描述 |
Inspect Session | 檢查會話,當(dāng)開啟此功能并重放的時候,會自動跳入Inspectors功能模塊,進(jìn)行檢查HTTP請求和響應(yīng)。 |
Fix Content-Length header | 當(dāng)使用POST請求進(jìn)行重放的時候,如果沒有Content-Length的請求頭,F(xiàn)iddler會自動加上此請求頭,如果有但是請求正文大小錯誤,則它會自動修正。默認(rèn)勾選。 |
Follow Redirects | 會自動重定向301,302的請求。 |
Automatically Authenticate | 自動進(jìn)行身份認(rèn)證,包括認(rèn)證NTLM,http 401,http 407 |
UI Options | 此功能是在原有的Fiddler功能選項里面,將Composer這個功能彈出一個浮動窗口,如果不需要直接關(guān)閉這個窗口就會恢復(fù)原樣。 |
.................................................. |
我們用得最多的也就是Parsed(詳細(xì)展示請求結(jié)構(gòu))
如圖
舉個例子 我們用圖靈機(jī)器人來測試一個POST請求的智能聊天對話接口!
圖靈機(jī)器人接口信息
接口信息 | 描述 |
http://openapi.turingapi.com/openapi/api/v2 | 接口地址 |
請求方式 | HTTP POST |
請求參數(shù) | 請求參數(shù)格式為 JSON |
參數(shù)格式
{
"perception": {
"inputText": {
"text": "聊天文字"
},
},
"userInfo": {
"apiKey": "申請的key",
"userId": "隨機(jī)32位字符串"
}
}
文檔說明 https://www.kancloud.cn/turing/www-tuling123-com/718227
操作流程
那么使用Fiddler調(diào)試一個POST請求并帶有json格式的數(shù)據(jù),我們可以打開Composer面板, 在Composer面板中的第一個下拉框中選擇POST請求方式,然后輸入請求接口的地址!
在Request Headers中也可以輸入一些請求頭信息,也可以不輸入,它會幫你自動生成
然后在Request Body中輸入請求的JSON數(shù)據(jù)
最后點(diǎn)擊Execute(執(zhí)行),若在會話列表中看到結(jié)果返回200表示操作成功!
如圖
這個時候,我們就可以在Inspectors里面查看到請求響應(yīng)的結(jié)果了!
如圖
如果返回的JSON數(shù)據(jù)格式不清楚,其實(shí)你可以拿到一些數(shù)據(jù)格式化網(wǎng)站上去格式化一下就可以了
如圖
再舉個例子 我們再請求一個GET請求
如圖
這樣就可以返回數(shù)據(jù)了!
以上這些都是測試的第三方接口,如果是你自己寫的api接口也是可以這樣子來測試的!
總而言之:Composer可以幫助你去發(fā)送數(shù)據(jù)包,幫助你去做一些接口測試,幫助你去做一些平常沒辦法做到的一些測試!??
Filters本意就是過濾的意思, 它的主要作用就是用來過濾請求用的, 要知道有的時候 會話列表中或存在大量的請求會話, 那么有些時候會根據(jù)用戶的條件進(jìn)行一個會話篩選, 也就是說通過過濾規(guī)則來過濾掉那些不想看到的請求!
Filters選項卡也是在我們抓包過程中使用頻率非常高的,其中功能也比較多,這里我把它內(nèi)部的功能逐一拆解分成7個部分來進(jìn)行講解!
如圖
1.Hosts 這是Filters對主機(jī)的過濾規(guī)則設(shè)置!
如圖
我們使用Filters的時候就必須要勾選左上角的Use Filters(選擇過濾器)開啟過濾器, 勾選了之后Filters選項卡會出現(xiàn)綠色對鉤, 記住這個勾選之后,過濾器才會生效
并且這里還有兩個請求過濾條件:Zone和Host
Zone(區(qū)域): 下拉列表中可以選擇如下:
show only Intranet Hosts(只顯示局域網(wǎng)的請求)
show only Internet Hosts(只顯示廣域網(wǎng)的請求)
如圖
那么這到底代表什么意思呢?
舉個例子 我們來請求baidu試試!
如圖
如果設(shè)置為了show only Intranet Hosts 那么外網(wǎng)的請求會話是無法獲取到的,智能獲取內(nèi)網(wǎng)請求
如果設(shè)置為了show only Internet Hosts那么相反也智能獲取外網(wǎng)的請求,而內(nèi)網(wǎng)的請求是無法獲取到的!
平常如果我們沒有其他特殊需求的情況下Zone都被默認(rèn)設(shè)置為了No Zone Filter(不用區(qū)域過濾)
注意:各位要留意 Intranet(內(nèi)網(wǎng)) 和 Internet(因特網(wǎng)) 這兩個單詞很多人容易搞混!
Host(主機(jī)):下拉列表中可以選擇如下:
如圖
含義解釋:
Hide the following Hosts(隱藏下列指定的主機(jī)的請求)
show only the following Hosts (僅顯示以下指定主機(jī)的請求)
Flag the following Hosts(標(biāo)記以下主機(jī))
舉個例子 比如說: 我設(shè)置其中一個show only the following Hosts (僅展示以下指定主機(jī)的請求) 那么會話列表中只會出現(xiàn)我所指定的主機(jī)請求會話,其他一概不顯示!
注意: 這里設(shè)置之后 要點(diǎn)擊一下Actions中的Run Filterset now(運(yùn)行過濾)
如圖
另外兩個根據(jù)自己需求設(shè)置就行了, 平常沒特殊需求我們也是設(shè)置的No Host Filter
2.Client Process 這是對客戶端進(jìn)程的一些過濾設(shè)置!
如圖
其中有三個復(fù)選框:
show only traffic from (僅顯示當(dāng)前客戶端指定進(jìn)程的請求)
show only Internet Explorer traffic (僅顯示Internet Explorer請求)
Hide trafficfrom Service Host (對服務(wù)主機(jī)隱藏請求)
舉個例子 我僅顯示ie瀏覽器的請求會話,其他瀏覽器的請求會話一概不顯示!
如圖
看到了吧,這對某一些需求上還是有一定幫助的!
3.Request Headers 這是對請求頭的一些過濾規(guī)則
如圖
其中有幾個復(fù)選框功能如下表:
名稱 | 描述 |
show only if URL contains | 僅展示當(dāng)前URL中包含指定內(nèi)容的請求會話 |
Hide if URL contains | 隱藏當(dāng)前URL中包含指定內(nèi)容的請求會話 |
Flag request with headers | 用頭標(biāo)記請求, 標(biāo)記帶有特定header的請求,如果在web session列表中存在該請求,會加粗顯示。 例如,我想突出顯示header信息中帶有token字段的URL請求,即可以勾選上這項,并在后面輸入:token。 |
Delete request headers | 刪除請求頭, 也就是說在請求的過程當(dāng)中會刪除指定的Header字段。我們在進(jìn)行測試時非常有用,比如說去掉URL中的Content-Type信息 |
set request header | 設(shè)置請求頭, 也就是說可以在請求頭中自定義請求頭信息,前面輸入字段,后面輸入值, 這就是我們可以進(jìn)行自定義請求頭內(nèi)容 |
..................................................................... |
舉個例子
例如: 勾選show only if URL contains只會顯示指定包含這個內(nèi)容的 響應(yīng)會話
如圖
例如: 勾選set request header然后我們自定義一個header頭信息 然后去發(fā)送一個請求
如圖
然后我們可以在Inspectors中查看到請求頭就有我們所自定義的頭信息了, 有的時候做一些特殊調(diào)試還是能夠起很大幫助的!
如圖
4.Breakpionts 斷點(diǎn)設(shè)置
這個功能有的時候也非常重要!
功能解釋如下表:
功能 | 描述 |
Break request on Post | 針對所有POST請求設(shè)置斷點(diǎn)。 |
Break request on GET with query string | 給所有帶參數(shù)的 GET 請求設(shè)置斷點(diǎn) |
Break on XMLHttpRequest | 針對所有Ajax請求設(shè)置斷點(diǎn)。 |
Break response on Content-type | 針對響應(yīng)報文中header字段中,Content-Type屬性匹配成功的請求設(shè)置斷點(diǎn) |
.............................................................................................. |
關(guān)于請求斷點(diǎn)后面單獨(dú)拿一章節(jié)來說!
5.Response Status Code(請求狀態(tài)碼過濾)
這一部分的功能,很簡單就是看狀態(tài)碼進(jìn)行會話的過濾
如圖
功能解釋如下表:
功能 | 描述 |
Hide success(2xx) | 隱藏響應(yīng)狀態(tài)碼為2xx的URL請求,如:響應(yīng)狀態(tài)碼為200的URL請求將隱藏掉 |
Hide non-2xx | 隱藏響應(yīng)狀態(tài)碼不是2xx的URL請求。 |
Hide Authentication demands(401,407) | 隱藏認(rèn)證(響應(yīng)狀態(tài)碼為:401 407)的URL 請求。這些響應(yīng)需要用戶進(jìn)一步確認(rèn)證書,authentication demands是認(rèn)證需求的意思。 |
Hide redirects(300,301,302,303,307) | 隱藏重定向(響應(yīng)狀態(tài)碼為:300,301,302,303,07)的URL請求。 |
Hide Not Modifield(304) | 隱藏不是緩存的狀態(tài)碼(304)的URL請求, 因為304是請求的資源從上次起沒有發(fā)生變更返回的狀態(tài)碼。 |
............................................................................................. |
舉個例子
我們勾選Hide success(2xx) 返回的請求會話中是不會包含2xx狀態(tài)碼的請求
6.Response Type and Size (根據(jù)響應(yīng)類型和大小進(jìn)行過濾)
如圖
Show all Content-Type 這一項比較常用, 意思為顯示所有指定Content-Type類型的請求
其中的選項描述如下表:
功能 | 描述 |
Show only IMAGE/* | 僅顯示響應(yīng)類型為圖片的請求, 即響應(yīng)header中Content-Type=IMAGE/的請求,*為通配符 |
Show only HTML | 僅顯示響應(yīng)類型為HTML的請求。 |
Show only TEXT/CSS | 僅顯示響應(yīng)類型為text/css的請求。 |
Show only SCRIPTS | 僅顯示響應(yīng)類型為Scripts的請求 |
Show only XML | 僅顯示響應(yīng)類型為XML的請求。 |
Show only JSON | 僅顯示響應(yīng)類型為json的請求。 |
Hide IMAGE/* | 隱藏所有響應(yīng)類型為圖片的請求。 |
.............................................. |
其他功能項如下表
功能 | 描述 |
Hide smaller than | 隱藏小于指定大小響應(yīng)結(jié)果的請求,大小可以在 Inpsectors 中響應(yīng)結(jié)果部分的 Transformer 中查看 |
Hide larger than | 隱藏大于指定大小響應(yīng)結(jié)果的請求 |
Time HeatMap | 時間的熱圖。 |
Block script files | 阻止返回正常JS文件。如果響應(yīng)是腳本文件,那么響應(yīng) 404。 |
Block image files | 阻止返回正常圖片文件。如果響應(yīng)是圖片文件,那么響應(yīng) 404 |
Block SWF files | 阻止返回正常SWF文件。如果響應(yīng)是SWF 文件,那么響應(yīng) 404。 科普一下swf(shock wave flash):是Macromedia公司的目前已被adobe公司收購)公司的動畫設(shè)計軟件Flash的專用格式 |
Block CSS files | 阻止返回正常CSS文件。如果響應(yīng)是 CSS 文件,那么響應(yīng) 404 |
.............................................. |
舉個例子 比如我們禁止掉頁面上的css js 等資源看看請求的結(jié)果是什么樣子的!
如圖
效果
那么此時請求的頁面將會失去css 、js、圖片等資源, 讓他們都響應(yīng)為404狀態(tài)
以上這些功能可以測試一些資源等加載失敗的情況下頁面的展示情況, 前端必備哦!
7.Response Header (根據(jù)響應(yīng)頭信息進(jìn)行過濾)
如圖
功能詳解如下表:
功能 | 描述 |
Flag responses that set cookies | 會話列表的響應(yīng)中有cookies信息的加上標(biāo)識斜體 |
Flag responses with headers | 會話列表里標(biāo)記響應(yīng)中帶有特定header的請求 即加粗。 |
Delete response headers | 會話列表里刪除響應(yīng)信息中,就是說沒有發(fā)給客戶端之前就把這些響應(yīng)頭刪除掉! |
Set response header | 在響應(yīng)中添加header字段, 也就是自定義響應(yīng)頭信息,再發(fā)給客戶端 |
............................................................................ |
小結(jié) 有些新手朋友在使用Fiddler的時候出現(xiàn)抓包失靈的情況,可能就是你在Filters選項卡中勾選了什么東西才導(dǎo)致的! 所以使用過濾器要注意一下!
所謂斷點(diǎn)功能就是將你的請求或者響應(yīng)截獲下來,但是不發(fā)送也不返回,都放到Fiddler這里, 這個時候你可以做很多事情,比如說,把請求報文改了,或 響應(yīng)報文改了,再發(fā)送給服務(wù)器 或 客戶端
還記得前面狀態(tài)欄說過的小空白區(qū)域嗎? 點(diǎn)擊這個區(qū)域就會出現(xiàn)斷點(diǎn)標(biāo)志符號,如下表:
狀態(tài) | 描述 |
意思就是請求之前斷點(diǎn), 也就是當(dāng)這個狀態(tài)啟動的時候,那么你發(fā)送的請求就會卡在這里! | |
........... |
以上狀態(tài)圖標(biāo)其實(shí)對應(yīng)的也就是菜單欄中的Rules--->Automatic Breakpoints--->Before Request
如圖
舉個例子
我們請求某個網(wǎng)站之前就先把這個斷點(diǎn)打開, 那么在請求的時候, 會話列表中所對應(yīng)的請求也會呈現(xiàn)斷點(diǎn)狀態(tài)的圖標(biāo), 會話列表中URL所對應(yīng)的網(wǎng)站也是無法顯示出來的, 因為此時此刻請求還未發(fā)到服務(wù)器。中間被Fiddler所截獲 ,那么現(xiàn)在就可以做一些數(shù)據(jù)和請求信息上的修改
然后等確定要發(fā)送到服務(wù)器的時候就點(diǎn)擊Run to Completion(完成) 把這一個請求發(fā)送到服務(wù)器端就可以了 !
如圖
注意 點(diǎn)擊Run to Completion(完成) 只是把當(dāng)前所選擇到的會話解除斷點(diǎn),讓它發(fā)送到服務(wù)器端,從而響應(yīng)
狀態(tài) | 描述 |
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-LaOqoiWK-1651910920401)(img/Icon_4.png)] | 響應(yīng)在斷點(diǎn)處暫停, 也就是說服務(wù)器已經(jīng)返回請求的數(shù)據(jù)了,但是被Fiddler在中間卡住了,還沒有到客戶端這一邊, 所以當(dāng)我們開啟了這個狀態(tài),那么在響應(yīng)之前就會卡主! |
............. |
當(dāng)我們再次點(diǎn)擊一下的時候就會切換到以上狀態(tài)圖標(biāo)
其實(shí)對應(yīng)的也就是菜單欄中的Rules--->Automatic Breakpoints--->After Request
而After Request(請求之后斷點(diǎn)) 和 Before Request(請求之前斷點(diǎn))正好相反
如圖
舉個例子
還是請求某個網(wǎng)站之前就先把這個請求后斷點(diǎn)打開, 那么此時響應(yīng)信息已經(jīng)返回了,但是被的時候Fiddler卡主了, 會話列表中所對應(yīng)的請求也會呈現(xiàn)請求后斷點(diǎn)的圖標(biāo), 會話列表中URL所對應(yīng)的網(wǎng)站也是無法顯示 或者 無法提取最新的頁面信息, 因為此時此刻響應(yīng)還未發(fā)到客戶端。返回途中被Fiddler所截獲
那么如果可以的話,現(xiàn)在就能做一些響應(yīng)報文信息上的修改
然后等確定要發(fā)送到客戶端的時候就點(diǎn)擊Run to Completion(完成) 把這一個響應(yīng)發(fā)送到客戶端就可以了 !
如圖
所以在Fiddler拿到響應(yīng)信息的時候,先斷住,然后篡改一些信息之后再發(fā)給客戶端!
大家還記得狀態(tài)欄上的快速命令執(zhí)行框嗎? 在這里也可以輸入來執(zhí)行一些命令斷點(diǎn)
如圖
那么一些常見的斷點(diǎn)命令如下表:
命令 | 描述 | 案例 | 解除斷點(diǎn) |
bpafter | bpafter后邊跟一個字符串,表示中斷所有包含該字符串的請求 | bpafter baidu | 輸入bpafter解除斷點(diǎn) |
bpu | 跟bpafter功能差不多, | bpu baidu | 輸入bpu解除斷點(diǎn) |
bpv | 只中斷HTTP方法的命令,HTTP方法如POST、GET | bpv get | 輸入bpv解除斷點(diǎn) |
bpm | 只中斷HTTP方法的命令,HTTP方法如POST、GET | bpm get | 輸入bpm解除斷點(diǎn) |
go | 放行中斷下來的請求,相當(dāng)于工具欄上的go按鈕 | go | |
................................... | ......................................... |
弱網(wǎng)在Fiddler中就是設(shè)置網(wǎng)絡(luò)限速 簡單理解也就是在網(wǎng)絡(luò)不好 或者 網(wǎng)絡(luò)環(huán)境復(fù)雜、使用場景多變異常、網(wǎng)絡(luò)抖動、延時、丟包的環(huán)境下進(jìn)行檢查的一種方式 就叫弱網(wǎng)測試
舉個例子
一款適配于低資源環(huán)境的醫(yī)療it系統(tǒng)項目來說,而它的使用場景主要是在一些2G網(wǎng)絡(luò)環(huán)境下,3G網(wǎng)都很少,并且穩(wěn)定性也是比較差。因此這款網(wǎng)站應(yīng)用或app應(yīng)用要想完成交付,就一定要在弱網(wǎng)狀態(tài)甚至在沒有網(wǎng)絡(luò)狀態(tài)下運(yùn)行, 看看是不是能夠正常交付!
所以我們要模擬一個弱網(wǎng)環(huán)境進(jìn)行測試 通過Fiddler軟件方式利用模擬網(wǎng)絡(luò)參數(shù)來配置弱網(wǎng)環(huán)境,就可以達(dá)到對帶寬、丟包、延時等進(jìn)行模擬弱網(wǎng)環(huán)境目的
在windows環(huán)境下我們通常可以使用fiddler和network emulator for windows toolkit來模擬
在mac環(huán)境下則可以使用Charles和Xcode自帶的開發(fā)環(huán)境網(wǎng)絡(luò)異常模擬工具進(jìn)行測試
在左側(cè)的會話列表窗口選擇一個或多個會話,再切換到Timeline選項卡中 便會顯示指定的資源從服務(wù)端傳輸?shù)?/span>客戶端的響應(yīng)時間!
如圖
從上圖來看 似乎都屬于正常的網(wǎng)絡(luò)延遲范圍之內(nèi)吧!
那么我們現(xiàn)在就利用Fiddler這個軟件來設(shè)置一下網(wǎng)絡(luò)延遲,讓網(wǎng)絡(luò)限速
方法也很簡單從Fiddler的菜單欄上選擇Rules---->Performance--->Simulate Modem Speeds(模擬調(diào)制解調(diào)器速度)就可以了!
如圖
當(dāng)我們勾選了Simulate Modem Speeds(模擬調(diào)制解調(diào)器速度) 之后你在測試一下請求某個網(wǎng)頁看看響應(yīng)時間就知道了!
如圖
看到了吧 很明顯某些資源請求的時長增加了!
那么到底Fiddler給我們限制了多少網(wǎng)速呢 ?
其實(shí)我們可以通過腳本去查看和設(shè)置,在Fiddler菜單欄選擇Rules--->Customize Rules(自定義規(guī)則)
打開Fiddler ScriptEditor編輯器,然后按下Ctrl+ F來搜索關(guān)鍵字Simulate(模擬的意思) 找到if判斷的m_SimulateModem變量
如圖
以上的代碼中寫明了注釋:
Delay sends by 300ms per KB uploaded意思是每上傳1KB延遲發(fā)送 要花費(fèi)300毫秒
Delay receives by 150ms per KB downloaded意思是延遲每下載1KB接收要花費(fèi)150毫秒
要知道這里的單位是毫秒 而1秒=1000毫秒 那么知道了這個之后,我們就可以手動的來設(shè)置網(wǎng)絡(luò)延遲了!
如圖
也就是說我現(xiàn)在發(fā)一個請求上傳也要1.3秒,并且每一個資源的下載時間也要1.5秒
設(shè)置之后保存即可! 就可以再去Timeline中查看一下請求會話的響應(yīng)時間了!
注意: Simulate Modem Speeds(模擬調(diào)制解調(diào)器速度) 依舊要為勾選狀態(tài)!
如圖
是不是比剛才很卡了呢!
小結(jié)
總之弱網(wǎng)測試的目的就是盡可能保證用戶體驗, 也就是說我們的項目或頁面的數(shù)據(jù)響應(yīng)時間是否可以被用戶所接受, 常見的一些關(guān)注點(diǎn)包含如下:
補(bǔ)充擴(kuò)展
當(dāng)然這里要多說一句 軟件模擬弱網(wǎng)方式是由一定的弊端的,因為不是非常接近弱網(wǎng)絡(luò)環(huán)境,想要更接近弱網(wǎng)環(huán)境,例如大多數(shù)專業(yè)項目的測試2G/3G/4G、高延時、高丟包、響應(yīng)時間、頁面呈現(xiàn)&超時文案&超時重連、安全及大流量風(fēng)險、無網(wǎng)多狀態(tài)切換等會更傾向于通過硬件方式來協(xié)助測試,但這種方式又會變得很麻煩,都是通過樹莓派 但是軟件方式的成本低且實(shí)施起來容易操作而已!
"點(diǎn)贊" "評論" "收藏"
大家的支持就是我堅持創(chuàng)作下去的動力!?
?如果以上內(nèi)容有任何錯誤或者不準(zhǔn)確的地方,歡迎在下面 留個言指出、或者你有更好的想法,歡迎一起交流學(xué)習(xí)?
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。