fidder使用

前言

  本文會對Fidder這款工具的一些重要功能,進行詳細講解,帶你們進入Fidder的世界,本文會讓你明白,Fidder不只是一個抓包分析工具,也是一個請求發送工具,更加能夠看成爲Mock Server使用,並且能夠寫斷點,讓咱們一塊兒進入Fidder的世界吧!前端

A.工具簡介

一.基本模塊劃分

1.第一塊區域是設置菜單,這個前面3篇都有介紹
2.第二塊區域是一些快捷菜單,能夠點下快捷功能鍵
3.第三塊左邊是抓捕的請求會話列表,每個請求就是一個會話
4.第四塊右邊上方區域是request請求的詳細信息,能夠查看Headers、Cookies、Raw、JSON等web

5.第五塊右邊下方區域就是response信息,能夠查看服務端返回的json數據或其它信息
6.第六塊區域左下角黑色的那塊小地方,雖然很不起眼,容易被忽略掉,這地方是命令行模式,能夠輸入簡單的指令如:cls,執行清屏的做用等正則表達式

 

2、會話框
1.會話框主要查看請求的一些請求的一些基本信息,如# 、result、protocol、host、url、body、 caching、content-type、processchrome

 

二、#:會話框列表最左側,#號這一欄是表明這個請求大概是什麼內容,<>這個符號就是咱們通常要測試的請求與響應的類型。json

3.result:這裏是服務器返回的代碼,如
--200,請求ok;2xx通常是服務器接受成功了並處理
--3xx,重定向相關
--4xx,404最多見的的就是找不到服務器,通常是請求地址有問題
--5xx,這個通常是服務器自己的錯誤
4.protocol:這個是協議類型,如http、https
5.host:主機地址或域名
6.url:請求的路徑
7.body:該條請求產生的數據大小
8.caching:緩存相關後端

9.content-type:鏈接類型api

10.process:客戶端類型瀏覽器

3、Request 和Response
1.Request是客戶端發出去的數據,Response是服務端返回過來的數據,這兩塊區域功能差很少緩存

 

2.headers:請求頭,這裏包含client、cookies、transport等
3.webfroms:請求參數信息表格展現,更直觀。能夠直接該區域的參數
4.Auth:受權相關,若是顯示以下兩行,說明不須要受權,能夠不用關注
(這個目前不多見了)
No Proxy-Authorization Header is present.
No Authorization Header is present.
5.cookies:查看cookie詳情
6.raw:查看一個完整請求的內容,能夠直接複製
7.json:查看json數據
8.xml:查看xml文件的信息服務器

4、decode解碼
1.若是response的TextView區域出現亂碼狀況,能夠直接點下方黃色區域解碼

2.也能夠選中上方快捷菜單decode,這樣後面的請求都會自動解碼了

B.會話保存

  爲何要保存會話呢?舉個很簡單的場景,你在上海測試某個功能接口的時候,發現了一個BUG,而開發這個接口的開發人員是北京的一家合做公司。你這時候給對方開發提bug,如何顯得專業一點,能讓對方心服口服的接受這個BUG呢?若是隻是截圖的話,不是很方便,由於要截好幾個地方還描述不清楚,不如簡單粗暴一點把整個會話保存起來,發給對方。

1、保存爲文本
1.以博客園登陸爲例,抓到登陸的請求會話
2.點左上角File>Save>Selected Sessions>as Text,保存到電腦上就是文本格式的

  

3.文本格式的能夠直接打開,結果以下圖

 

2、幾種保存方式
1.save-All Sessions :保存全部的會話,saz文件
2.save-Selected Session:保存選中的會話

--in ArchiveZIP :保存爲saz文件
--as Text :以txt文件形式保存整個會話包括Request和Response
--as Text (Headers only) :僅保存頭部
3.Request:保存請求
--Entir Request:保存整個請求信息(headers和body)
--Request Body:只保存請求body部分
4.Response:保存返回
--Entir Response:保存整個返回信息(headers和body)
--Response Body:只保存返回body部分
--and Open as Local File:保存Response信息,並打開文件

3、亂碼問題(decode)
1.打開博客園首頁:http://www.cnblogs.com/yoyoketang/,保存以後查看,會發現返回的是亂碼

 

2.遇到這種狀況,主要是須要解碼,用前面學到的decode方法

 

3.點擊箭頭區域後,從新保存就沒亂碼了。
4.還有一個最簡單辦法就是選中上圖會話框上的decode按鈕,這樣就自動解碼了。

4、保存與導入所有會話
1.咱們能夠打開fiddler,操做完博客園後,選中save>All Sessions,保存所有會話
2.保存後,在fiddler打開也很方便,直接把剛纔保存的會話按住拽進來就能夠了

 

3.也能夠選擇File>Load Archive導入這個文件

 

5、Repaly
1.導入請求後,能夠選中某個請求,點擊Repaly按鈕,從新發請求

2.也能夠ctrl+a所有選中後,點Repaly按鈕,一次性批量請求

 

 這樣保存會話和replay功能其實就是至關於錄製和回放了

C.自定義會話框

1、添加會話框菜單
1.點會話框菜單(箭頭位置),右鍵彈出選項菜單

 

2.選擇Customize columns選項,Collection選項選擇Miscellaneous

 

3.Field Name選擇:RequestMethod

4.點Add按鈕便可添加成功

 

2、隱藏會話菜單
1.選擇須要隱藏的菜單,右鍵。選擇Hide this column

 

 2.隱藏後也可讓隱藏的菜單顯示出來:Ensure all columns are visble

 

3、調整會話框菜單順序
1.若是須要調整會話框菜單順序,如:Content-Type菜單按住後往前移動,就能調整了

 

4、會話排序
1.點擊會話框上的菜單,就能對會話列表排序了,如點body菜單

 

2.點完後上面有個上箭頭(正序),或者下箭頭(倒敘)。可是不能取消,取消的話關掉fiddler後從新打開就好了。

D.斷點(bpu)

  這個功能原本不打算分享給你們的,可是這個功能的確是一個強大的功能,用的好你就能夠走上人生巔峯,迎娶白富美,用的很差,很容易成爲黑客或者會有更加嚴重的後果!可是後面想了一下,你想成爲何,誰都攔不住,反而想學知識的人,會以爲這個功能是神器!話扯得有點遠,言歸正傳。什麼是斷點?還有斷點有什麼用呢?咱們一一爲你們揭曉!

一. 斷點

 1. 斷點的做用

  舉個例子,以登陸中的帳號爲例,限制了必須用手機號註冊,這樣登陸自動限制了登陸帳號爲11位,同時前端和後端同時判斷輸入的帳號是否是爲11位,若是咱們要測試後端有沒有對大於11位或者小於11位作出判斷,很顯然,前端只能輸入等於11位的。若是輸入超過11位或者少於11位,前端就不發送請求去請求後端。因此咱們須要抓到接口,修改請求參數,繞過前端驗證,發送一個大於或小於11位的數給後端,驗證後端功能是否OK。

 2.fidder中斷點的體現

  1. Fiddler設置斷點,能夠修改HTTP請求頭信息,如修改Cookie,User-Agent等
  2. 能夠修改請求數據,突破錶單限制,提交任意數字,如充值最大100,能夠修改爲10000
  3. 攔截響應數據,修改響應體,如修改服務端返回的頁面數據

2、斷點的兩種方式

1.before response:這個是打在request請求的時候,未到達服務器以前

 

2.after response:也就是服務器響應以後,在Fiddler將響應傳回給客戶端以前

3、全局斷點
1.全局斷點就是中斷fiddler捕獲的全部請求,先設置下,點擊rules-> automatic breakpoint  ->before requests

 

2.選中before requests選項後,打開博客園首頁:http://www.cnblogs.com/yoyoketang/,看到以下T的標識,說明斷點成功

 

3.打完斷點後,會發現全部的請求都沒法發出去了,這時候,點下Go按鈕,就能走下一步了

 

4.找到須要修改的請求後,選中該條會話,右側打開WebFroms,這時候裏面的參數都是能夠修改的了

 

5.修改以後點Run to Completion就能提交了,因而就成功修改了請求參數了
6.打全局斷點的話,是沒法正常上網的,須要清除斷點:rules-> automatic breakpoint  ->disabled

 

4、單個斷點

已經知道了某個接口的請求地址,這時候只須要針對這一條請求打斷點調試,在命令行中輸入指令就能夠了
請求前斷點(before response): bpu
1. 論壇登陸接口:https://passport.cnblogs.com/user/signin
2. 命令行輸入:bpu https://passport.cnblogs.com/user/signin 回車

 

 3.請求登陸接口的時候,就會只攔截登陸這個接口了,此時能夠修改任意請求參數

 4.取消斷點,在命令行輸入: bpu 回車就能夠了
 
響應後斷點(after  requests): bpafter
 
1. 論壇登陸接口:https://passport.cnblogs.com/user/signin
2. 在命令行輸入:bpafter https://passport.cnblogs.com/user/signin  回車

3.登陸博客園,會發現已經攔截到登陸後服務器返回的數據了,此時能夠修改任意返回數據
4.取消斷點,在命令行輸入: bpafter 回車就能夠了
 
5、攔截來自某個網站全部請求
 
1.在命令行輸入:bpu www.cnblogs.com

2.打開博客園任意網頁,發現都被攔截到了
 
3.打開博客園其餘網站,其它網站能夠正常請求
 
4.說明只攔截了來自部落論壇(www.cnblogs.com)的請求
 
5.清除輸入bpu回車便可

 E. get和post請求 

1、get請求

1.打開fiddler工具,而後瀏覽器輸入博客首頁地址:http://www.cnblogs.com/yoyoketang/

2.點開右側Inspectors下的Headers區域,查看Request Headers

3.Request Headers區域裏面的就是請求頭信息,能夠看到打開博客園首頁的是get請求

2、post請求

1.打開登陸首頁:https://passport.cnblogs.com/user/signin
2.輸入帳號和密碼登陸成功後,查看fiddler抓包的請求頭信息,能夠看出是post請求

 

3、如何找出須要的請求
1.打開fiddler後,左邊會話框區域刷刷刷的不少請求,那麼如何有效的找出本身須要的請求呢?
2.首先第一步:清屏(cls),在左下角命令行輸入cls,清空屏幕(清屏也可使用快捷鍵Ctrl+X)

3.第二步在瀏覽器輸入url地址的時候,記住這個地址,如打開博客首頁:http://www.cnblogs.com/yoyoketang/,在點擊登陸按鈕的時候,不要作多餘的操做了,而後查看fiddler會話框,這時候有好幾個請求。

4.以下圖,紅色框框這個地方就是host地址,紅色圈圈地方就是url的路徑(yoyoketang),也就是博客首頁的地址了,那這個請求就是博客首頁的請求了。
 


F. get請求(url詳解)

1、url詳解
1.url就是咱們日常打開百度在地址欄輸入的:https://www.baidu.com,以下圖,這個是最簡單的url地址,打開的是百度的主頁

 

2.再看一個稍微複雜一點的url,在百度輸入框輸入:上海悠悠博客園

 

3.查看url地址欄,對比以前的百度首頁url地址,後面多了不少參數。固然最主要的參數是/s?wd=上海悠悠博客園(後面的一大串能夠暫時忽略)。
4.那麼問題來了,這些參數有什麼做用呢?
能夠作個簡單的對比,在地址欄分別輸入:

https://www.baidu.com
https://www.baidu.com/s?wd=上海悠悠博客園
對比打開的頁面有什麼不同,如今知道做用了吧,也就是說這個多的"/s?wd=上海悠悠博客園"就是搜索的結果頁面
 
2、url解析
1.以"https://www.baidu.com/s?wd=上海悠悠博客園"這個url請求的抓包爲例

2.那麼一個完整的url地址,基本格式以下:
https://host:port/path?xxx=aaa&ooo=bbb
--http/https:這個是協議類型,如圖中所示

--host:服務器的IP地址或者域名,如圖中2所示
--port:HTTP服務器的默認端口是80,這種狀況下端口號能夠省略。
若是使用了別的端口,必須指明,例如:192.168.3.111:8080,這裏的8080就是端口
--path:訪問資源的路徑,如圖中3所示/s (圖中3是把path和請求參數放一塊兒了)
--?:url裏面的?這個符號是個分割線,用來區分問號前面的是path,問號後面的是參數
--url-params:問號後面的是請求參數,格式:xxx=aaa,如圖4區域就是請求參數
--&:多個參數用&符號鏈接
 
3、請求參數(params)

1.在url裏面請求參數通常叫params,可是咱們在fiddler抓包工具看到的參數是:QueryString
2.QueryString是像服務端提交的參數,其實跟params是一個意思,每一個參數對應的都有name和value值
3.多個參數狀況以下:

4、UrlEncode編碼
1.若是url地址的參數帶有中文的,通常在url裏面會是這樣的,如第二點裏的wd=%E4%B8%8A%E6%B5%B7%E6%...
像看到%E4這種編碼的就是通過url編碼過的,須要解碼就能看到是什麼中文了
2.用urlencode在線編碼/解碼工具,地址:http://tool.chinaz.com/tools/urlencode.aspx

G. post請求(body)

1、body數據類型
常見的post提交數據類型有四種:
1.第一種:application/json:這是最多見的json格式,也是很是友好的深受小夥伴喜歡的一種,以下

{"input1":"xxx","input2":"ooo","remember":false}
 
2.第二種:application/x-www-form-urlencoded:瀏覽器的原生 form 表單,若是不設置 enctype 屬性,那麼最終就會以 application/x-www-form-urlencoded 方式提交數

input1=xxx&input2=ooo&remember=false
 
3.第三種:multipart/form-data:這一種是表單格式的,數據類型以下:

------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name="text"title------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name="file"; filename="chrome.png" Content-Type: image/png PNG ... content of chrome.png ...------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

 

4.第四種:text/xml:這種直接傳的xml格式

複製代碼
複製代碼
<!--?xml version="1.0"?-->
<methodcall>
<methodname>examples.getStateName</methodname>
<params>
<param>
<value><i4>41</i4></value>
</params>
</methodcall>
複製代碼
複製代碼

2、json格式
1.打開博客園的登陸頁面,輸入帳號密碼後抓包,查看post提交數據,點開Raw查看整個請求的原始數據

 

2.前面講過post的請求多一個body部分,上圖紅色區域就是博客園登陸接口的body部分,很明顯這種格式是前面講到的第一種json格式

3.查看json格式的樹狀結構,更友好,能夠點開JSON菜單項

 

4.查看這裏的json數據,很明顯傳了三個參數:
--input1:這個是登陸的帳號參數(加密過)
--input2:這個是登陸的密碼參數(加密過)

--remember:這個是登陸頁面的勾選是否記住密碼的選項,False是不記住,True是記住
 
3、x-www-form-urlencoded
1.登陸博客園後,打開新隨筆,隨便寫一個標題和一個正文後保存,抓包數據以下

 

2.如上圖的這種格式,很明顯就屬於第二種了,這種類型的數據查看,在WebFrom裏面查看了

 

3.上面紅色框框的Query String是url裏面的參數,下面紅色框框的body部分就是此次post提交的body參數部分了。

 
4、WebFrom
1.爲何登陸請求的WebFrom的body部分爲空呢?

 

2.看上圖紅色框框的顯示:這裏只支持application/x-www-form-urlencoded這種格式的body參數,也就是說json格式的,須要在JOSN這一欄查看了。

H. 接口測試(Composer)

1、Composer簡介
點開右側Composer區域,能夠看到以下界面,就是測試接口的界面了

 

1.請求方式:點開能夠勾選請求協議是get、post等
2.url地址欄:輸入請求的url地址
3.請求頭:第三塊區域能夠輸入請求頭信息

4.請求body:post請求在此區域輸入body信息
5.執行:Execute按鈕點擊後就能夠執行請求了
6.http版本:能夠勾選http版本
7.請求歷史:執行完成後會在右側History區域生成歷史記錄
 
2、模擬get請求
1.在Composer區域地址欄輸入博客首頁:http://www.cnblogs.com/yoyoketang/
2.選擇get請求,點Execute執行,請求就能夠發送成功啦
3.請求發送成功後,左邊會話框會生成一個會話記錄,能夠查看抓包詳情
4.右側history區域會多一個歷史請求記錄

 

5.會話框選中該記錄,查看測試結果:
--選中該會話,點開Inspectors
--response區域點開Raw區域

--Raw查看的是HTML源碼的數據
--也能夠點WebView,查看返回的web頁面數據

 

3、Json數據
1.有些post的請求參數和返回參數是Json格式的,如博客園的登陸請求:https://passport.cnblogs.com/user/signin
2.在登陸頁面手動輸入帳號和密碼,登陸成功。
3.找到這個登陸成功的會話,查看json數據以下圖:

 

4、模擬post請求
1.請求類型勾選post
2.url地址欄輸入對應的請求地址
3.body區域寫登陸的json參數,json參數直接copy上一步抓包的數據,以下圖紅色區域

4.header請求頭區域,能夠把前面登陸成功後的頭部抓包的數據copy過來(注意,有些請求若是請求頭爲空的話,會請求失敗的)

 

5.執行成功後查看測試結果:

--執行成功如第三所示的圖,顯示success=True
--執行失敗以下圖所示,顯示
message=Invalid length for a Base-64 char array or string.
success=False

 

 i. Fidder中的mock簡單使用

  mock可能不少人不理解是什麼功能,可是博主只能說經過如下的講解可以使你腦海中有個印象它有什麼用,等到實際工做中真正要用的時候,這點印象可以讓你回憶起曾經有過那麼一篇文章寫過。因此但願你們可以理解最好,不可以理解有個印象便可,不強求理解。

1. mock的做用

  開發或者測試接口中,常常遇到調試過程當中對接系統接口沒法聯調或者後臺未開發完成等狀況。這時,咱們就須要用一個mock server來爲本地環境的請求響應數據。

2. Mock假數據

  打開AutoResponder標籤設置。有沒有看到界面上有兩個複選框?第一個的做用是開啓或禁用自動重定向功能,咱們就能夠在下面添加劇定向規則了。第二個複選框框勾上時,不影響那些沒知足咱們處理條件的請求。
    能夠經過「Add…」按鈕手動添加規則,不過這個URL已經出如今咱們的session列表中,能夠直接拖動過來。在左側的Session列表 中選擇第一步找到的session,拖動到AutoResponse標籤中。這樣就建立了一個針對這個URL的規則。
 
Fiddler幫咱們生成的規則是:當URL爲: http://api.sandbox.u.hd123.com/test01/soms/orderservice/order/3355170325000001,返回400。修改規則,返回本地文件。
 
 
選擇「Find a file…」,就能夠選擇本地的文件做爲返回的body內容。
 
自動重定向功能是Fiddler最實用的功能,這裏的Rule能夠自由地設定,可使用搜索(默認)、精確匹配(EXACT)、正則表達式匹 配(REGEX)。處理方式能夠選擇使用文件,也能夠選擇合適的時間暫停數據流(*bpu、*bpafter),人工干預。經過以上幾個步驟,咱們演示了 怎樣將HTTP請求重定向到本地的文件,進行調試。這種調試方式適用於rest接口調試,web界面調試等。
相關文章
相關標籤/搜索