介面測試之fiddler(10.2)

影清风發表於2024-11-19

一、fiddler包安裝
路徑也儘量不要有中文

安裝步驟:略

二、Fiddler 簡介
fiddler 是 C# 開發免費web除錯工具之一,記錄所有客戶端和服務端常見的 http 以及 https 請求,可監視設斷點,甚至修改輸入輸出資料,它還包含了一個強大的基於事件指令碼的子系統,並且能使用 .net 語言來擴充。
Fiddler也是一款專用的抓包工具,也是一個除錯工具,我們可以用來抓包網路資料 ;
三、fiddler結構介紹
fiddler 的介面按鈕的排版來依次講解這些按鈕的作用,主要講解 fiddler 介面上的 7 大板塊,
從選單欄→工具欄→底端狀態列→命令列控制檯→ session 欄→ request 欄→ response 欄來依次講解,
·

·

四、Fiddler 工作原理
Fiddler 以代理 Web 伺服器的形式工作的,使用代理地址為 127.0.0.1,埠 8888,當 fiddler 開啟時自動開始代理,關閉 fiddler 時自動登出,這樣就不會影響其他程式。只要是支援 http 代理伺服器的任意程式都可以被 fiddler 嗅探到,fiddler 的執行機制其實就是本機上監聽 8888 埠的 HTTP 代理。
注意一下,要是 fiddler 沒有正常退出,可能造成 fiddler 沒有正常登出,使得頁面沒法訪問。

=================================
一、常用三個快捷鍵:
ctrl+X :清空所有記錄 或 remove all
Ctrl+F:查詢
F12:啟動或者停止抓包 (fn+f12)


delete 刪除已選中的session
shift+delete 刪除未選中的session
快捷鍵進行斷點:

fn+f11 開啟全域性斷點before request,攔截所有會話
alt+f11 開啟全域性斷點 after request 顯示:箭頭顯示向下
shifi+f11 取消全域性斷點

fiddler使用:
1、啟動Fiddler,系統提示更新,不要理它,點選咯no
2、Tools-> Fiddler Options開始配置工具
進入https選項卡,勾選Decrpt HTTPS traffic, Fiddler截獲HTTPS請求

2、設定埠號,允許所有的裝置連線

===================================
一、抓取介面的組成部分

![](https://img2024.cnblogs.com/blog/3537934/202411/3537934-20241119210824310-1758257623.png)

`
HTTP請求頭和請求體、響應頭和響應體

1)請求頭部資訊:
post :表示請求的方法
HTTP/1.1 :表示超文字傳輸協議 版本為1.1就是版本 URL統一資源定位符
Host:域名 Host表示請求的伺服器網址 (ip地址)
Content-Length:用來說明傳輸的正文大小或者內容長度 #length長度
Connection:Keep-Alive Connection表示客戶端與服務連線型別 #持續連線
Keep-Alive:表示持久連線
Accept:text html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 (支援的資料型別)
瀏覽器支援的 MIME 訊息內容型別分別是 text html、application/xhtml+xml、application/xml 和 /,優先順序是它們從左到右的排列順序
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 請求的老資料型別
origin:表示跨域資源請求

POST http://localhost:8080/cms/manage/loginJump.do HTTP/1.1 #介面請求的方式
Host: localhost:8080 #請求 的域名和地址
Connection: keep-alive #持續連線
Content-Length: 33 #連線長度
Accept: application/json, text/javascript, /; q=0.01 #接收的資料型別
X-Requested-With: XMLHttpRequest #標識ajax請求
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36

使用者的代理人:瀏覽器/5.0

Content-Type: application/x-www-form-urlencoded; charset=UTF-8 內容型別
Origin: http://localhost:8080 #起源
Sec-Fetch-Site: same-origin #場地
Sec-Fetch-Mode: cors #模式
Sec-Fetch-Dest: empty #教育
Referer: http://localhost:8080/cms/manage/loginOut.do
Accept-Encoding: gzip, deflate, br # 接收的編碼格式
Accept-Language: zh-CN,zh;q=0.9 # 接收的語言
Cookie: JSESSIONID=F6D7AE748A7C87ACC4867A362796358A #比較重要,就是客戶端發服務端傳送請求,就會傳送一個繪畫,有個sessions id ,cookie保持會話持續,保持時間一個員,或者更久,只要不是手動刪除,會以cookie的方法保持在服務端

userAccount=admin&loginPwd=123456

rigin:標識跨域資源請求
X-Requested-With:標識Ajax請求,大部分js框架傳送請求時都會設定它為XMLHttpRequest
User-Agent:使用者代理的字串值瀏覽器的身份標識字串,user-agent會告訴網站伺服器,訪問者是透過什麼工具來請求的
Content-Type: 設定請求體的MIME型別 Content-Type: application/x-www-form-urlencoded
Referer :設定前一個頁面的地址,並且前一個頁面中的連線指向當前請求
Accept-Encoding :設定接受的編碼格式 Accept-Encoding: gzip, deflate
Accept-Language :設定接受的語言
Accept-Language:en-US 是英文 zh-cn為中文

Cookie:設定伺服器使用Set-Cookie傳送的http cookie Cookie的作用就是用於解決記錄客戶端的使用者資訊

當使用者下一次訪問該web頁面時,可以在cookie中讀取使用者訪問記錄。

2)請求體部資訊
userAcount=admin&userPwd=123456 想做函式的入參,

3)響應頭部資訊
HTTP/1.1:表示超文字傳輸協議 版本為1.1版本 URL統一資源定位符
響應狀態:200
Server:伺服器名稱 Server: Apache/2.4.1 (Unix)
Set-Cookie:設定HTTP Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Content-Type:設定響應體的MIME型別 Content-Type: text/html; charset=utf-8
Transfer-Encoding:設定傳輸實體的編碼格式,目前支援的格式: chunked, compress, deflate, gzip, identity
Date:設定訊息傳送的日期和時間 Date: Tue, 15 Nov 1994 08:12:31 GMT #介面響應時間

二、分析抓取到的介面

一般以.do 是java的命名
(1) [#]-HTTP Request的順序,從1開始,按照頁面載入請求的順序排序。.
(2)[Result] – HTTP 響應的狀態。
(3)[Protocol]一一請求使用的協議(如HTTP/HTTPS/FTP)
(4)[Host] --請求地址的域名
(5)[URL] -一請求的伺服器路徑和檔名, 也包括GET引數
(6)[BODY]-- 請求的大小,以byte為單位
(7)[Caching] -一請求的快取過期時間或快取控制header等值
(8)[Content-Type] - -請求響應的型別(Content-Type)
(9)[Process] 一發出此請求的Windows 程序及程序ID
(10)[Comments] - -一使用者透過指令碼或者右鍵選單給此session增加的備註)
(11)[Custom]-- 使用者可以透過指令碼設定的自定義值

三、介面抓取以後使用操作

(1)post操作


`
(2)get操作


`

一、斷點
2.1.為什麼要打斷點呢?
介面測試可以不需要管前端的,主要測後端的功能

斷點的作用:

1.開發人員,除錯,出錯後在某個位置打斷點除錯程式碼;

2.測試人員,測試,繞過前端的限制,測試後端的反應;

3.測試人員,構造資料,設定斷點可篡改請求和返回的資料包。根據測試的不同場景,有時需要在測試過程中更改請求、或者更改響應內容,從而達到最終的測試目標。

案例:
比如一個購買的金額輸入框,輸入框前端做了限制100-1000,那麼我們測試的時候,需要測試小於100的情況下。很顯然前端只能輸入大於100的。這是我們可以先抓到介面,修改請求引數,繞過前端,傳一個小於100的數,檢查服務端的功能是否OK;

二、斷點的兩種方式
2.1.1before response:這個是打在request請求的時候,未到達伺服器之前 (before之前)
2.1.2.after response:也就是伺服器響應之後,在Fiddler將響應傳回給客戶端之前。
2.2.1命令列方式:
修改Request:bpu (攔截髮給指定伺服器的請求)
清除斷點攔截:bpu
修改Response:bpafter(攔截指定伺服器返回的session)
清除斷點攔截:bpafter

三、全域性斷點
1.全域性斷點就是中斷fiddler捕獲的所有請求,先設定下,點選rules-> automatic breakpoint ->before requests

請求前全域性斷點

請求後斷點:

總結:

1、全域性斷點和單個介面斷點

2、請求前斷點和請求後斷點

3、請求前斷點:修改請求前的引數,請求頭和請求體

4、請求後斷點:修改響應的引數,響應頭和響應體

5、單個介面請求前斷點命令: 請求前命令:bpu+url 取消斷點:bpu



6 、單個介面請求後斷點命令: 請求前命令:bpafter+url 取消斷點:bpafter


`

7、全域性斷點:

(1)請求前 :rules ===》automatic breakpoints =====》before responses(請求前斷點)

(2)請求後 :rules ===》automatic breakpoints =====》after responses (請求後斷點)

HTTP請求頭和請求體、響應頭和響應體
1)請求頭部資訊:
post :表示請求的方法
HTTP/1.1 :表示超文字傳輸協議 版本為1.1就是版本 URL統一資源定位符
Host:域名 Host表示請求的伺服器網址 (ip地址)
Content-Length:用來說明傳輸的正文大小或者內容長度 #length長度
Connection:Keep-Alive Connection表示客戶端與服務連線型別 #持續連線
Keep-Alive:表示持久連線
Accept:text html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 (支援的資料型別)
瀏覽器支援的 MIME 訊息內容型別分別是 text html、application/xhtml+xml、application/xml 和 /,優先順序是它們從左到右的排列順序
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 請求的老資料型別
origin:表示跨域資源請求

POST http://localhost:8080/cms/manage/loginJump.do HTTP/1.1 #介面請求的方式
Host: localhost:8080 #請求 的域名和地址
Connection: keep-alive #持續連線
Content-Length: 33 #連線長度
Accept: application/json, text/javascript, /; q=0.01 #接收的資料型別
X-Requested-With: XMLHttpRequest #標識ajax請求
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36

使用者的代理人:瀏覽器/5.0

Content-Type: application/x-www-form-urlencoded; charset=UTF-8 內容型別
Origin: http://localhost:8080 #起源
Sec-Fetch-Site: same-origin #場地
Sec-Fetch-Mode: cors #模式
Sec-Fetch-Dest: empty #教育
Referer: http://localhost:8080/cms/manage/loginOut.do
Accept-Encoding: gzip, deflate, br # 接收的編碼格式
Accept-Language: zh-CN,zh;q=0.9 # 接收的語言
Cookie: JSESSIONID=F6D7AE748A7C87ACC4867A362796358A #比較重要,就是客戶端發服務端傳送請求,就會傳送一個繪畫,有個sessions id ,cookie保持會話持續,保持時間一個員,或者更久,只要不是手動刪除,會以cookie的方法保持在服務端

userAccount=admin&loginPwd=123456

rigin:標識跨域資源請求
X-Requested-With:標識Ajax請求,大部分js框架傳送請求時都會設定它為XMLHttpRequest
User-Agent:使用者代理的字串值瀏覽器的身份標識字串,user-agent會告訴網站伺服器,訪問者是透過什麼工具來請求的
Content-Type: 設定請求體的MIME型別 Content-Type: application/x-www-form-urlencoded
Referer :設定前一個頁面的地址,並且前一個頁面中的連線指向當前請求
Accept-Encoding :設定接受的編碼格式 Accept-Encoding: gzip, deflate
Accept-Language :設定接受的語言
Accept-Language:en-US 是英文 zh-cn為中文

Cookie:設定伺服器使用Set-Cookie傳送的http cookie Cookie的作用就是用於解決記錄客戶端的使用者資訊

當使用者下一次訪問該web頁面時,可以在cookie中讀取使用者訪問記錄。

2)請求體部資訊
userAcount=admin&userPwd=123456 想做函式的入參,

3)響應頭部資訊
HTTP/1.1:表示超文字傳輸協議 版本為1.1版本 URL統一資源定位符
響應狀態:200
Server:伺服器名稱 Server: Apache/2.4.1 (Unix)
Set-Cookie:設定HTTP Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Content-Type:設定響應體的MIME型別 Content-Type: text/html; charset=utf-8
Transfer-Encoding:設定傳輸實體的編碼格式,目前支援的格式: chunked, compress, deflate, gzip, identity
Date:設定訊息傳送的日期和時間 Date: Tue, 15 Nov 1994 08:12:31 GMT #介面響應時間

相關文章